【错误记录】Visual Studio 中配置 NDK 头文件路径 ( NDK 的三个头文件路径 | 与 CPU 架构相关 asm 头文件路径选择 )

简介: 【错误记录】Visual Studio 中配置 NDK 头文件路径 ( NDK 的三个头文件路径 | 与 CPU 架构相关 asm 头文件路径选择 )

文章目录

一、报错信息

二、解决方案

1、NDK 的三个头文件路径

2、与 CPU 架构相关 asm 头文件路径选择





一、报错信息


参考 【Android 逆向】Android 进程注入工具开发 ( Visual Studio 开发 Android NDK 应用 | 使用 Makefile 构建 Android 平台 NDK 应用 ) 博客 , 此处涉及到 打开一个 " 生成文件项目 " ;


打开后 , 由于没有头文件依赖 , 无法编译 ;


image.png






二、解决方案


右键点击解决方案 , 选择属性 ,


image.png


在 NMake 的 包含搜索路径 中 , 配置对应的

image.png



在 【错误记录】Visual Studio 中配置 NDK 头文件路径 博客中只是针对一种情况进行了配置 , 单纯解决报错信息 , 下面是的方法是目前的通用解决方案 ;



1、NDK 的三个头文件路径


一般 NDK 的头文件位置有如下 3 33 个 : 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


image.png

每个 CPU 架构对应的目录下都有一个 asm 目录 ;

image.png



开发在哪个 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 头文件也是不同的 ;


目录
相关文章
|
缓存 测试技术 数据中心
【计算机架构】计算 CPU 动态功耗 | 集成电路成本 | SPEC 基准测试 | Amdahl 定律 | MIPS 性能指标
【计算机架构】计算 CPU 动态功耗 | 集成电路成本 | SPEC 基准测试 | Amdahl 定律 | MIPS 性能指标
490 0
|
8月前
|
IDE 编译器 开发工具
C/C++ IDE环境 (Qt Creator visual studio等) Cmake工程不显示头文件的解决方案
C/C++ IDE环境 (Qt Creator visual studio等) Cmake工程不显示头文件的解决方案
274 0
|
算法 编译器
【计算机架构】响应时间和吞吐量 | 相对性能 | 计算 CPU 时间 | 指令技术与 CPI | T=CC/CR, CC=IC*CPI
【计算机架构】响应时间和吞吐量 | 相对性能 | 计算 CPU 时间 | 指令技术与 CPI | T=CC/CR, CC=IC*CPI
1248 1
|
2月前
|
存储 人工智能 编译器
【AI系统】CPU 指令集架构
本文介绍了指令集架构(ISA)的基本概念,探讨了CISC与RISC两种主要的指令集架构设计思路,分析了它们的优缺点及应用场景。文章还简述了ISA的历史发展,包括x86、ARM、MIPS、Alpha和RISC-V等常见架构的特点。最后,文章讨论了CPU的并行处理架构,如SISD、SIMD、MISD、MIMD和SIMT,并概述了这些架构在服务器、PC及嵌入式领域的应用情况。
138 4
|
7月前
|
缓存 C语言 计算机视觉
程序与技术分享:CPU0处理器的架构及应用
程序与技术分享:CPU0处理器的架构及应用
|
4月前
|
存储 缓存 开发者
CPU的架构涵盖哪些方面
CPU(中央处理单元)的架构指的是CPU的设计和组织方式,包括其内部结构、数据通路、指令集、寄存器配置、存储器管理和输入输出等一系列设计原则和技术的综合体现。
155 1
|
4月前
|
存储 缓存 开发者
CPU的架构指什么?
CPU(中央处理单元)的架构指的是CPU的设计和组织方式,包括其内部结构、数据通路、指令集、寄存器配置、存储器管理和输入输出等一系列设计原则和技术的综合体现。
391 0
|
6月前
|
NoSQL Redis 开发工具
Redis性能优化问题之检查 Redis 实例是否启用了透明大页机制,如何解决
Redis性能优化问题之检查 Redis 实例是否启用了透明大页机制,如何解决
|
6月前
|
机器学习/深度学习 人工智能 并行计算
GPU 和 CPU 处理器的架构
CPU(中央处理器)和 GPU(图形处理单元)是计算机系统中最重要的两种处理器。它们各自的架构设计和技术体系决定了其在不同应用领域中的性能和效率。
225 1
|
7月前
|
Linux Perl
如何在Linux系统中确定CPU架构
如何在Linux系统中确定CPU架构
223 0

热门文章

最新文章