jadx高级用法:批量导出和交叉引用和反混淆
jadx 是安卓逆向最常用的反编译工具。但大部分人只会拖进去看代码,没用到高级功能。一、命令行批量导出
GUI 慢,命令行快。导出完整 Gradle 工程:
jadx -e output_project/ target.apk
导出后用 Android Studio 打开,有代码补全和跳转,比 jadx GUI 方便。
二、搜索技巧
jadx --search "关键词" target.apk
搜索字符串、类名、方法名。支持正则:
jadx --search "com\..*\.encrypt" target.apk
三、交叉引用(XREF)
右键方法 → Find Usage。能看到谁调了这个方法。追调用链时非常关键。比如找到加密方法 encrypt(),用 XREF 看谁调了它,就能找到加密逻辑的入口。
四、反混淆
如果 APK 被混淆了(类名变成 a.b.c),jadx 的反混淆引擎能自动推断:
jadx --deobf target.apk
会根据类的方法签名和字段类型猜测原始名称,不完美但比 a.b.c 好读。
五、导出方法签名
找到要 Frida hook 的方法,jadx 里看方法签名:
public native byte[] encrypt(byte[] data, String key)
直接用这个签名写 Frida hook 代码。
六、调试器集成
jadx 1.5+ 支持导出 smali,配合 smali 调试器可以在反编译层面断点调试。比 IDA 调试 native 快。
https://www.metk.cn/img/posts/jadx_advanced.jpg 在撸一遍。。。 这类校验现在很多是服务端下发的,光改本地没用。 如果是防护方视角,重点应该放在提升攻击成本上。 开源工具的质量参差不齐,选之前最好看下维护活跃度。 加固方案升级挺快的,去年那套方法今年可能就失效了。 混淆只能提高门槛,不能真正阻止有心人。有没有推荐的入门资料? 关键算法的定位比还原实现更耗时间。 混淆只能提高门槛,不能真正阻止有心人。 通信协议那层如果能抓到明文,能省掉大量逆向工作。你们环境是怎么解决版本兼容的?