咨询发布 发表于 2026-5-2 05:17:26

逆向工具链实战:apktool + jadx + Frida 组合拳怎么打

上一篇讲了单工具用法,这篇讲组合拳。真正的逆向分析,往往是多个工具配合使用,各取所长。

工具链分工

[*]apktool:负责拆资源 — 布局、图片、清单,改完还能回编译
[*]jadx:负责看代码 — 反编译质量最高,支持搜索和交叉引用
[*]dex2jar + JD-GUI:备选查看 — jadx 失败时用它兜底
[*]Frida:动态 hook — 运行时拦截方法,看实际参数和返回值


实战流程:分析一个 App 的登录逻辑

[*]用 apktool 拆开,看 AndroidManifest 找到登录 Activity
[*]用 jadx 打开,搜索 "login" 关键字,定位到登录方法
[*]发现密码做了加密 — 找到加密函数,看用的是什么算法
[*]用 Frida hook 加密函数,打印出输入和输出,验证猜测


Frida 动态 hook 示例
Java.perform(function() {
    var cls = Java.use("com.target.CryptoUtil");
    cls.encrypt.implementation = function(input) {
      console.log("input: " + input);
      var ret = this.encrypt(input);
      console.log("output: " + ret);
      return ret;
    };
});
这段代码会在 App 运行时拦截加密方法,把输入和输出都打出来。静态分析看不到的运行时数据,动态 hook 一目了然。

回编译与重打包(apktool)
改完资源或 smali 后,可以回编译:
apktool b output_dir -o modified.apk
然后需要重新签名才能安装:
jarsigner -keystore debug.keystore modified.apk alias_name
注意:修改后的 App 如果有签名校验逻辑,需要在 smali 里把校验绕过,否则闪退。

https://www.metk.cn/img/posts/reverse_tools.jpg

逆向工具链的核心思路:静态分析找入口 → 动态 hook 验证行为 → 必要时改代码回编译。三条线配合使用,效率远高于只用一种。

山有木75 发表于 2026-5-3 18:38:05

这篇干货,比那些只有命令没有解释的强太多了。

拾光观星 发表于 2026-5-3 22:27:09

步骤写得很清楚,跟着走了一遍,卡在第二步的环境配置上,后来装了老版本才好。

一苇 发表于 2026-5-4 06:05:17

感谢,正需要这个,之前找的资料都太老了。

浅夏小筑 发表于 2026-5-4 17:32:29

我用的另一条路线,效果差不多,但工具链更轻一些,回头整理下发出来。

寒山记事 发表于 2026-5-5 08:48:45

写得很好,不过第三部分有点跳跃,新手可能跟不上。

橙子64 发表于 2026-5-6 03:54:05

感谢分享,之前一直卡在这个点,看完豁然开朗。

野渡的猫 发表于 2026-5-7 02:48:29

看完最大的感受是基础知识还是要扎实,不然工具报错都不知道怎么查。

踏雪25 发表于 2026-5-8 05:31:57

这个流程我在真机上验证过,确实可行,注意备份就行。

有点困 发表于 2026-5-9 12:04:29

收藏了,最近正好要搞这块,省了不少翻文档的时间。
页: [1] 2 3 4 5
查看完整版本: 逆向工具链实战:apktool + jadx + Frida 组合拳怎么打