Android 逆向工程概述
逆向工程,指的是反编译原始代码,最终获取或者近似获取源代码为目的。当然,这通常属于违法行为,而且通常商业产品会对二进制代码进行保护,以防止恶意的反编译。不过呢,反编译也是学习的好方法,我们可以通过反编译,来对大公司产品架构窥知一二,也可以通过分析了解一些核心方法的逻辑,饶过应用逻辑来获取部分应用中的资源。
- 定义:对Android程序进行解包、转化、反编译等操作,获取和修改源代码。
- 常用工具:
- APKDB:一款国人开发的工具集,利用了一些工具包,可以进行反编译,回编译,查看代码等。
- JEB:国外一款针对Android的反编译工具,类似于IDE平台,付费。
- dx.jar:处理dex文件,转换为jar文件
- jdax:java编写的反编译工具,可以处理dex,apk文件,反编译得到java代码,可以进行查看,搜索,编辑等操作
- dexdump:查看dex文件结构
- dexlist:查看dex的符号名称
- NDK 工具链:可以对elf、so文件进行分析
- 一般方法:
- 分类:
- 资源修改:替换资源文件,美化,翻译等
- 查看代码:反编译,或者查看smail代码
- 修改代码:修改后进行回编译
- 注入代码:类似于xposed的效果,指定位置注入代码。