2016976438 发表于 2023-4-26 01:01

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 的可执行文件。

643166069 发表于 2023-4-26 08:16

真早啊,感谢这么早的分享,是不是用 linux环境更好一些呢?

aa2923821a 发表于 2023-4-26 09:44

谢谢一起进步

freedover 发表于 2023-4-26 09:53

专业知识,值得科普

debug_cat 发表于 2023-4-26 11:06

最近也在学习,但是进度比较 慢

2016976438 发表于 2023-4-26 11:21

debug_cat 发表于 2023-4-26 11:06
最近也在学习,但是进度比较 慢

教程是真的难找呀,越到后面越难学。

debug_cat 发表于 2023-4-26 11:24

2016976438 发表于 2023-4-26 11:21
教程是真的难找呀,越到后面越难学。

是啊,没人带好男{:1_936:}

2016976438 发表于 2023-4-26 11:36

debug_cat 发表于 2023-4-26 11:24
是啊,没人带好男

差90 积分就有权限能加大佬好友了。 {:1_923:}

debug_cat 发表于 2023-4-26 12:51

2016976438 发表于 2023-4-26 11:36
差90 积分就有权限能加大佬好友了。

:Dweeqw你多发教程,很快就突破了

lc7753 发表于 2023-4-26 13:07

小弟不知道这是啥,麻烦有空科普下
页: [1] 2 3 4 5
查看完整版本: luckfollowme arm 学习篇(1) --环境搭建1