Android库分析工具(崩溃反编译)
[时间:2016-07] [状态:Open]
[关键词:android, 动态库,静态库, 编译,crash,addr2line]
本文主要整理Android编译系统中可用的库分析工作,可作为后续代码崩溃分析的参考。
- 动态库(*.so)处理:
arm-linux-androideabi-readelf.exe -a XX.so > xx.txt
输出所有导出函数
arm-linux-androideabi-objdump.exe -dx XX.so > xx.txt
反汇编so包,此时使用 $(JNI_PROJ_PATH)\obj\local\armeabi下面带符号表的so包。JNI_PROJ_PATH为编译so包时jni文件夹的根目录。
-
静态库(*.a)处理:
输出.a内所有导出函数。方法一:
arm-linux-androideabi-ar.exe -t xx.a > xx.txt
方法二:
arm-linux-androideabi-nm.exe xx.a > xx.txt -
ndk编译
上面两种库文件,.a和.so都可以直接通过arm-linux-androideabi-g++.exe
工具编译,编译语法跟linux上的g++一致。 也可以直接使用ndk-build
命令。 -
crash定位
使用addr2line将地址转化成代码行数,输入的so为带符号表的,即为strip过的:
arm-linux-androideabi-addr2line.exe -f -e \jni\obj\local\armeabi\libXX.so 00002683
使用ndk-stack.exe还原堆栈:
ndk-stack -sym E:\dev_code\Sosomap-old\Sosomap-jni\obj\local\armeabi -dump D:\android-ndk-r9b-windows-x86\txmap_log.txt
-sym为带符号表的so路径, -dump为crash的堆栈信息,必须包含:********************
----------------------------------------------------------------------------------------------------------------------------
本文作者:Tocy e-mail: zyvj@qq.com
版权所有@2015-2020,请勿用于商业用途,转载请注明原文地址。本人保留所有权利。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】博客园2025新款「AI繁忙」系列T恤上架,前往周边小店选购
【推荐】凌霞软件回馈社区,携手博客园推出1Panel与Halo联合会员
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Hangfire Redis 实现秒级定时任务,使用 CQRS 实现动态执行代码
· Android编译时动态插入代码原理与实践
· 解锁.NET 9性能优化黑科技:从内存管理到Web性能的最全指南
· 通过一个DEMO理解MCP(模型上下文协议)的生命周期
· MySQL下200GB大表备份,利用传输表空间解决停服发版表备份问题
· 工良出品 | 长文讲解 MCP 和案例实战
· 多年后再做Web开发,AI帮大忙
· 国产的 Java Solon v3.2.0 发布(央企信创的优选)
· centos停服,迁移centos7.3系统到新搭建的openEuler
· 记一次 .NET某旅行社酒店管理系统 卡死分析