luckfollowme arm 学习篇(1) --环境搭建1
本帖最后由 2016976438 于 2023-4-26 01:02 编辑# luckfollowme arm学习篇(1) --环境搭建1
自从上次用 mt 开源的签名校验简单说了一下过程,
然后很多人问我具体原理是啥。但是我不敢答。
因为我也想知道呀,我连c++都看不懂。更别说那个 xhook hook open 一系列函数 能解决 签名校验问题。
在我研究 xhook 过程中,我一顿乱搜。 跳到了一个坑
**elf**PLT 重定向hook
**arm** inline hook
**elf** 看了看 。没看懂。故先从 arm 开始。
为了学 arm 。 我用了1个月快速 入门 c++ ndk 等等基础的东西,当然我个人是急性子,教程太多都不知道怎么看,是否正规也不清楚,摸石头过桥,后面有不合理的地方也欢迎指出。
后面教程希望您跟我一样 起码 **学1个星期 c++** 在过来,这样您应该跟我一个水准了。我相信看这章都跟我一样是新手,right?
## 安装gcc g++ gdb
gcc g++ 您可以理解为编译 c 和 c++ 的编译器
gdb 是用来 debug 用的
当然安装我们可以使用 **msys** 进行安装
下载地址: https://www.msys2.org/
下载完打开你会发现类似 git 的窗口
其中有个很重要的命令 **pacman** . 我把它理解为包管理器。
输入下面命令 安装 mingw-w64 工具链
```
pacman -S --needed base-devel mingw-w64-x86_64-toolchain
```
这个工具链有着 gcc g++ gdb 等工具,来帮助我们把**c++**编译成 windows 可执行程序
为什么不是 android(linux) 可执行文件? 后面会说。
安装好后,在您 msys2 的 mingw64 的 bin 目录下会有我们想要的文件。
**F:\c++\msys2\mingw64\bin**
您可以考虑放在 **path** 路径下,这样 命令窗口 可以直接用 g++ gcc 等命令了
## 配置 vscode 编写c++ 代码
为什么选vscode呢? 明明visual studio 自动集成环境更方便。
我觉得像我这种新手, 用 vscode 自己搭建环境 更能多了解下 编译过程。
再者vscode 插件丰富,什么语言都支持,看些开源代码更容易。
1.**创建我们编写代码的目录,名字随意 我就叫 practice 了**
2.**安装 c++ 插件 ,按 Ctrl+shift+X 跳到插件安装界面**
</p>
</p>
这个插件能很好的帮我们 **intellijSense** 也就是智能提示 。
3.**配置 c++ 的 intellijSense**
在最上边有个 **帮助->显示所有命令**然后 搜索 **c++编辑配置**
</p>
</p>
然后您的 **c_cpp_properties.json** 文件配置应该如下:
``` json
{
"configurations": [
{
"name": "Win32 g++",
"includePath": [
"${workspaceFolder}/**"
],
"defines": [
"_DEBUG",
"UNICODE",
"_UNICODE"
],
"cStandard": "c17",
"cppStandard": "c++17",
"configurationProvider": "ms-vscode.cmake-tools",
"compilerPath": "F:\\c++\\msys2\\mingw64\\bin\\g++.exe"
}
],
"version": 4
}
```
注意 **compilerPath** 写您 **mingw64** 下的的路径
这样 您 应该就拥有了代码提示功能
4.**hello word ,一切基础从 hello word 开始,我也是这样过来的。**
创建 **hello.cpp** 文件 ,这是 c++ 的源文件
``` cpp
#include <iostream>
#include <vector>
#include <string>
int main()
{
std::vector<std::string> msg {"Hello","World"};
for(const std::string &word : msg){
std::cout << word << " ";
}
std::cout << std::endl;
}
```
然后再当前目录下 执行
```
g++ -g .\hello.cpp -o hello.exe
```
您应该就可以得到一个 **hello.exe** 文件
接下来 执行下面命令 您就可以得到 hello world 字样
```
./hello.exe
```
下一章我将介绍 如何使用 android studio 中 ndk 的 cmake 工具链 完成 交叉编译成 linux 的可执行文件。 真早啊,感谢这么早的分享,是不是用 linux环境更好一些呢? 谢谢一起进步 专业知识,值得科普 最近也在学习,但是进度比较 慢 debug_cat 发表于 2023-4-26 11:06
最近也在学习,但是进度比较 慢
教程是真的难找呀,越到后面越难学。 2016976438 发表于 2023-4-26 11:21
教程是真的难找呀,越到后面越难学。
是啊,没人带好男{:1_936:} debug_cat 发表于 2023-4-26 11:24
是啊,没人带好男
差90 积分就有权限能加大佬好友了。 {:1_923:} 2016976438 发表于 2023-4-26 11:36
差90 积分就有权限能加大佬好友了。
:Dweeqw你多发教程,很快就突破了 小弟不知道这是啥,麻烦有空科普下