第八章 Android 原生程序开发与逆向分析(四)(原生程序逆向分析工具)

原生程序逆向分析工具

NDK Toolchain

  • NDK Toolchain(NDK 工具链)从引入至今,已发生很大变化:NDK r19 前版本官方指南NDK r19 及之后版本官方指南
  • NDK r19 前生成独立编译工具链:$NDK/build/tools/make_standalone_toolchain.py --arch arm --api 21 --install-dir /tmp/my-android-toolchain
  • 从 NDK r19 开始,NDK 默认安装的工具链可供使用,与任意编译系统进行交互时不再需要使用 make_standalone_toolchain.py 脚本
  • 导出一个独立的工具链后,可看到 bin 目录下有很多二进制程序,其中对软件逆向分析有用的是以 EABI 命名(如“arm-linux-androideabi-”)开头的程序,它们是 GNU Binutils 工具集合的 Android 移植版本(GNU Binutils)。除了具有“arm-linux-androideabi-”“aarch64-linux-android-”文件名前缀的程序,其他程序列举:
    • addr2line:针对包含调试信息版本的 ELF,将程序的地址转换为对应的文件名和行号
    • ar:静态库管理程序,用于建立、修改、提取 .a 归档文件
    • as:汇编器。目前 gcc 和 Clang 都用它
    • c++:工具链中 g++ 的一个拷贝
    • c++filt:链接器用它过滤符号,防止重载函数冲突
    • clang:LLVM 的 C 程序编译前端。非 GNU Binutils 工具
    • clang++:LLVM 的 C++ 程序编译前端。非 GNU Binutils 工具
    • cpp:C++ 程序编译工具
    • elfedit:ELF 文件头更新工具
    • g++:C++ 程序编译工具
    • gcc:C 程序编译工具
    • gcov:程序覆盖度测量工具,用于记录代码的执行路径
    • gdb:调试工具
    • gprof:程序性能测量工具
    • ld:链接器,用于生成 ELF 可执行程序或动态库
    • nm:符号查看工具,用于列出目标文件中的符号
    • objcopy:将目标文件中的内容复制到另一种类型的目标文件中
    • objdump:输出目标文件的信息
    • ranlib:产生归档文件索引,并将其保存到这个归档文件中
    • readelf:显示 ELF 的文件头、节区信息
    • size:列出目标文件中每个段的大小及总体大小
    • strings:输出目标文件中的可打印字符串
    • strip:移除目标文件中的符号信息
  • 这些工具中,对原生程序进行静态分析用得最多的是 objdump、readelf
    • 用 readelf 可查看 ELF 的文件头信息:
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值