【错误记录】Visual Studio 中配置 NDK 头文件路径 ( NDK 的三个头文件路径 | 与 CPU 架构相关 asm 头文件路径选择 )
一、报错信息
参考 【Android 逆向】Android 进程注入工具开发 ( Visual Studio 开发 Android NDK 应用 | 使用 Makefile 构建 Android 平台 NDK 应用 ) 博客 , 此处涉及到 打开一个 " 生成文件项目 " ;
打开后 , 由于没有头文件依赖 , 无法编译 ;
二、解决方案
右键点击解决方案 , 选择属性 ,
在 NMake 的 包含搜索路径 中 , 配置对应的
在 【错误记录】Visual Studio 中配置 NDK 头文件路径 博客中只是针对一种情况进行了配置 , 单纯解决报错信息 , 下面是的方法是目前的通用解决方案 ;
1、NDK 的三个头文件路径
一般 NDK 的头文件位置有如下 3 3 3 个 : NDKRoot 指的是 NDK 根目录 ;
NDKRoot\sources\android\support\include
NDKRoot\sysroot\usr\include
NDKRoot\sysroot\usr\include\x86_64-linux-android
其中 NDKRoot 指的是 NDK 根目录 ;
2、与 CPU 架构相关 asm 头文件路径选择
注意 NDKRoot\sysroot\usr\include\x86_64-linux-android
路径中的 x86_64-linux-android
目录是 asm 相关路径 , asm 相关头文件和依赖库都是与 CPU 架构相关的 , 如寄存器相关操作 , 系统调用相关操作 , 不同的 CPU 架构对应的内容都是不同的 ;
在 D:\Microsoft\AndroidNDK64\android-ndk-r16b\sysroot\usr\include
目录中 , 有如下架构的 asm 目录 :
- aarch64-linux-android
- arm-linux-androideabi
- i686-linux-android
- mips64el-linux-android
- mipsel-linux-android
- x86_64-linux-android
每个 CPU 架构对应的目录下都有一个 asm 目录 ;
开发在哪个 CPU 架构上运行的程序 , 就选择导入哪个路径 ;
如 : 当前要开发在 x86 架构上 进行 ptrace 进程调试的应用 , 需要导入的就是 D:\Microsoft\AndroidNDK64\android-ndk-r16b\sysroot\usr\include\x86_64-linux-android
头文件 ;
这是在 PC 上 Android 模拟器中进行逆向操作需要导入的头文件 ;
如果要在 arm 真机上进行逆向调试 , 则需要导入 D:\Microsoft\AndroidNDK64\android-ndk-r16b\sysroot\usr\include\arm-linux-androideabi
头文件 ;
由于逆向时需要读取并修改寄存器信息 , 因此这里就涉及到为不同的 CPU 架构开发不同的程序 ; 导入的 asm 头文件也是不同的 ;
相关文章
- Visual Studio报错/plugin.vs.js,行:1074,错误:缺少标识符、字符串或数字
- visual stduio 插件及代码生成器
- visual studio 添加链接文件
- C语言常见问题 如何用Visual Studio编写C语言程序测试
- VS软件版本号定义、规则和相关的Visual Studio插件
- OpenGL学习-------visual studio 2010配置和第一个OpenGL程序讲解
- Visual Studio 2017各版本安装包离线下载、安装全解析
- "visual studio 2012 安装引擎拒绝访问" 错误的解决
- SAP Fiori Application Generator 在 Visual Studio Code 启动时遇到的错误消息
- Atitit. visual studio vs2003 vs2005 vs2008 VS2010 vs2012 vs2015新特性 新功能.doc
- SAP Fiori Application Generator 在 Visual Studio Code 启动时遇到的错误消息
- 【错误记录】Visual Studio 中编译 NDK 报错 ( no matching function for call to ‘cacheflush‘ cacheflush(); )
- 使用Visual Studio进行远程macOS C++开发
- 使用Visual Studio进行嵌入式系统开发
- 【AIGC】Visual ChatGPT 视觉模型深度解析
- 解决Visual Studio同一个项目工程下不同C语言程序之间互相调用的问题