安卓逆向入门:从 apktool 反编译到 jadx 看源码,一次走通完整流程
想学安卓逆向,但不知从哪下手?其实门槛没你想的那么高。这篇带你从零走通"拿到 APK →反编译→看源码"的完整链路。一、准备工具
[*]apktool:反编译资源文件(布局、图片、清单)
[*]jadx:把 DEX 反编译成可读 Java 代码(最好用的一个)
[*]dex2jar:备选方案,把 DEX 转 jar 再用 JD-GUI 看
三个工具都是免费开源的,Java 环境装好就能跑。
二、第一步:用 apktool 拆开 APK
apktool d target.apk -o output_dir
拆完后你会看到:
[*]AndroidManifest.xml — 应用的清单,声明了权限、组件、入口
[*]res/ — 所有资源文件,布局 XML、图片、字符串都在这
[*]smali/ — 反编译出的 Dalvik 字节码(类似汇编)
看 smali 能了解底层逻辑,但对新手来说,先看 res 和 Manifest 就够定位入口了。
三、第二步:用 jadx 看 Java 源码
jadx target.apk -d output_src
jadx 直接把 DEX 反编译成 Java,比 smali 好读太多。打开后:
[*]先找 Application 类(在 Manifest 里注册的)— 这是应用初始化入口
[*]再找 MainActivity — 看应用启动后第一个页面做了什么
[*]顺着方法调用往下追,关注网络请求、加密、权限检查等关键逻辑
四、实用技巧
[*]APK 加壳了?先脱壳再分析,常见脱壳工具如 BlackDex、Frida 脱壳脚本
[*]代码混淆了?用 jadx 的"重命名"功能,把 a.b.c 重命名成可读的
[*]只关心网络接口?直接搜 "http"、"api"、"Retrofit" 关键字定位
https://www.metk.cn/img/posts/reverse_apk.jpg
安卓逆向的入门关键不是"学多少工具",而是先走通一次完整流程。随便找个小 APK 拆一遍,比看十篇教程都管用。 写得很好,不过第三部分有点跳跃,新手可能跟不上。 我这边环境是Mac,有些步骤要调整,回头补个差异说明。 看完最大的感受是基础知识还是要扎实,不然工具报错都不知道怎么查。 楼主的排版可以再优化下,代码块用起来会更清楚。 感谢分享,之前一直卡在这个点,看完豁然开朗。 这篇干货,比那些只有命令没有解释的强太多了。 感谢,正需要这个,之前找的资料都太老了。 步骤写得很清楚,跟着走了一遍,卡在第二步的环境配置上,后来装了老版本才好。 实战出来的经验和文档里写的完全是两码事,楼主这个很真实。