利用AI逆向CTF-APK

admin 2026-01-17 01:50:51 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文分享了利用Frida和AI工具逆向CTFAPK的实战经验。通过Hook文件删除提取自毁DEX,利用AI分析解密算法得出密码,再HookTextView直接获取Flag。文章重点剖析了对抗动态加载与自毁机制的策略,验证了AI辅助逆向的效率提升,并提供了完整的Frida通用Hook代码与流程总结。 综合评分: 91 文章分类: CTF,移动安全,逆向分析


cover_image

利用AI逆向CTF-APK

原创

MicroPest MicroPest

MicroPest

2026年1月15日 19:38 安徽

导读:利用多种AI工具+MCP接口+frida hook逆向,绕过限制,解密算法,得出flag,最后给出总结报告。

一、工具准备

1、检材:2024数证杯初赛APK逆向题—“检材-03.apk“;

2、JADX AI-MCP Plugin:

3、jadx-mcp server,如cherry studio中配置:

4、安装frida:

pip install frida;

pip install frida-tools;

5、安装雷电模拟器;

6、推送frida-server到雷电模拟器中,并运行;

7、配置转发端口:

adb forward tcp:27042 tcp:tcp27042

adb forward tcp:27043 tcp:tcp27043

8、参考文章:《2024数证杯初赛APK逆向题WP(CTF2023)》。

二、逆向过程

先看参考文章。下面我将细化过程,将要点讲明白。

1、通过frida的js将中途释放出来并删除掉的update_1_.dex恢复出来(参考文章中提及);

2、比较 “检材-03.apk”和“update_1_.dex”,会发现:前者相比缺少了三个非常重要的字符串DICT、KEY、PASSWORD:

以及 缺少了一个重要的函数 com.power.flag.A中的calculateFlag(Context context, String str, String str2),

以及 两者的 loadkey函数都不尽相同。

3、将update_1_.dex中的com.power.flag.A和com.power.flag.B交由kimi处理,找到加解密算法,

如下:

4、根据上面的3写一个解密代码:

DICT   = “9>AG3OCP1N2-4L5K6M7+BQD&EVF=0@8$”

CIPHER = “+>M=+K-@MN+-MK-@MN++MK+OM=M&MK”

(1). 反向:密文字符 → 原十六进制字符

rev = {DICT[i+1]: DICT[i] for i in range(0, len(DICT), 2)}

(2). 逐个替换

hex_str = ”.join(rev[c] for c in CIPHER)   # 796F752061726520617765736F6D65

print(‘hex =’, hex_str)

(3). 十六进制 → 字符串

plain = bytes.fromhex(hex_str).decode(‘ascii’)

print(‘password =’, plain)

得出密码:you are awesome

5、当输入上面的password后,出现:

6、再hook textview吧。现在我们提供一个完整的frida hook,省略掉上面的update_1_.dex以及上面的5,直接将flag显示出来,代码如下:

【hook_textview.js:】

Java.perform(function () {

    letFile=Java.use(“java.io.File”)

    File.delete.implementation=function () {

    // this.delete(); // 不删除文件

        console.log(“Call delete: “+this)

        returntrue;

    }

    letTextView=Java.use(“android.widget.TextView”);

  TextView.setText.overload(‘java.lang.CharSequence’).implementation=function (text) {

        this.setText(text)

        console.log(“SetText: “+text)

    }

});

7、验证:

frida -U -f com.power.ctf2023 -l hook_textview.js

在雷电模拟器apk密码框输入:you are awesome,提交后得到flag

三、总结

相比PE的AI-mcp逆向,apk的就显得繁琐些。但核心思想主要在frida hook这里,有了AI助力,包括js的编写都成了飞速。

我们通过frida hook java.io.File提取了被删文件update_1_.dex来进行前后对比分析,掌握加解密算法,得出了密码;并再次frida hook android.widget.TextView,将密码输入后解出flag。最后,我将上述两过程合二为一,给出完整的frida hook代码,得到flag。

利用 Frida 对 APK 进行动态分析——完整流程小结

  1. 目标

样本: com.power.ctf2023

需求:绕过「动态加载 + 自毁 dex」的密码验证,拿到正确 flag。

  1. 静态观察(JEB / jadx)

主 apk 仅负责加载  assets/a  → 解密成  update_1_.dex  → 反射调用  com.power.flag.A.loadKey() 。

关键常量: DICT  /  PASSWORD  /  KEY  全部硬编码在  A.class 。

  1. 动态痛点

不保留 dex → 无法静态二次反编译;

密码错 → 不进入分支,后续逻辑不加载;

类可能延迟加载 → 直接  Java.use()  报  ClassNotFoundException 。

  1. Frida 解决步骤

  1. 结果

运行时字典仍为  “9>AG3OCP1N2-4L5K6M7+BQD&EVF=0@8$” ;

逆算后得到新口令  “you are awesome” ,最终 flag 通过  TextView  日志一次性拿到:flag{ISEC-41a2369f6b586047b628d570c11d66f1}

  1. 通用经验

“动态加载 + 自删除”是 CTF/壳常见套路——先拦删除,再枚举类;

遇到  ClassNotFoundException  → 延迟/轮询/枚举 三选一;

任何硬编码的“字典-密文”组合都可逆推,只要运行时把实参抓出来;

Frida 的核心价值:让隐藏逻辑在内存里“现形”,再反推即可。


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:MicroPest MicroPest MicroPest《利用AI逆向CTF-APK》

利用AI逆向CTF-APK 网络安全文章

利用AI逆向CTF-APK

文章总结: 本文分享了利用Frida和AI工具逆向CTFAPK的实战经验。通过Hook文件删除提取自毁DEX,利用AI分析解密算法得出密码,再HookTextV
AI锐评网络安全的现状 网络安全文章

AI锐评网络安全的现状

文章总结: 本文揭露网络安全行业薪资被严重高估,新人起薪多在6至8千元,而非宣传的过万。行业缺的是有实战经验的人才而非简历。主要工作分为攻防实战、防御运维和合规
评论:0   参与:  0