文章总结: 本文介绍r0re自动逆向分析工具,基于Cairn架构用Java重写,面向AndroidCTF场景,通过Fact/Intent/Hint三类对象管理分析流程,集成JADX、Frida等工具,强调错误保留与验证门控。在看雪CTF题集测试9题通过,验证了工具在动态注册JNI、壳处理等场景的有效性,提供可操作的自定义类型方案与验证流程建议。 综合评分: 85 文章分类: 逆向分析,CTF,安全工具,移动安全,AI安全
r0re 自动逆向分析工具实战记录
fyrlove fyrlove
看雪学苑
2026年9月28日 17:59 上海
在小说阅读器读本章
去阅读
在公众号小说中沉浸阅读
做 Android CTF 时经常碰到同一个问题:前面用 JADX、strings 很快能摸到入口,后面一碰到壳、动态注册 JNI、native 自解密或反调试,就开始在好几个终端和工具之间来回切。最后即便拿到一串“像答案”的内容,过几天再看,往往说不清它从哪一层来的,也不知道有没有真正走到校验点。
#
所以我把 Cairn 用 Java 重写,再把 Android 逆向常用的工具、提示词和验证环节接进去,做成了 r0re。它干的事情很简单:把任务拆小,把每一步看到的东西留下来;候选错了,就从错误处继续,而不是重新开一个聊天窗口。
这次用它跑完了看雪论坛公开 Android CTF 题集。AliCrackme_2、AliCrackme_4 都出现过首个候选不对、补 Hint 后才重新收敛的情况,我把这些过程保留下来了。对我来说,逆向 Agent 能不能第一次完成不是最关键的;更重要的是错误后能不能留下原因,并继续往下走。
说明:文中的样本仅用于公开 CTF/CrackMe 学习和授权逆向场景。源码、配置模板和测试记录随帖附件提供;发布时请将自己的模型 Key、设备地址和本机绝对路径从配置文件中移除。
#
一、测试结果:9 题通过
本次测试覆盖题集中的 9 道题,下图是最终记录。后面只展开 5 道:我想把篇幅留给出错后的处理、Hint 怎么生效,以及最终结果怎么验,而不是逐题堆截图。

这个题不难,但它定下了后面的规矩:资源文件也可能是数据表;答案必须能回到校验函数。
2. AliCrackme_2:首个答案错误后,补 Hint 重新拆题
第二题在第一次分析结束后,将候选输入 App 验证,结果错误。
这时没有把项目推倒重来,也没有手动修改结论,而是补充了“候选必须沿完整校验链验证,并继续定位 native 比较/变换点”的 Hint。Dispatcher 在下一轮看到 Hint 和失败记录后重新派发更窄的 Intent,第二次结果通过了 App 验证。
人工hint在这里做的不是替 AI 解题,而是把“错误候选”转译成下一轮可以执行的约束。对复杂样本而言,这是比反复换 prompt 更可靠的协作方式。
3. AliCrackme_3:壳、反调试与 Morse 线索不能直接等同于答案
第三题包含阿里 dex 壳、反调试和摩斯码变换。创建项目时我直接把这些已知信息放进 Origin,同时明确“公开 writeup 只能作线索”。随后由 Worker 分别推进壳/DEX、Java 调用链、JNI/native 和算法验证,避免一条任务同时承担所有不确定性。
这里特别强调一个容易被忽略的点:Morse 表、hashCode 条件或历史文章给出的候选,都只能提高优先级,不能跳过验证。r0re 会把“已观察到的表”和“已证明到达最终比较的逻辑”分开记录。这样的记录也能避免后面写报告时,把线索误写成结论。
4. AliCrackme_4:静态分析走不通,就让动态证据接管
第四题的第一次候选同样没有通过验证。
这次的 Hint 指向连接设备并观察运行时校验。r0re 自动进入 Frida 动态分析路径:在触发校验时 hook native 比较相关调用,结合脱壳后 dex 中的 AES 常量和密文,复现出完整变换链,再回到设备验证。
这类题的经验很直接:当 native 代码按需解密、静态 dump 里仍然是高熵数据时,不要让 Worker 在静态工具里无限打转。将“运行时触发校验、抓取比较参数或注册表”声明成独立 Intent,反而更快收敛。
5. AliCrackme_2_3
#
七、这轮测试留下的三点经验
第一,把并行用在互相独立的假设上。例如一个 Worker 看 Java 入口,一个看 JNI 映射,一个准备 Frida hook;不要让三个人同时泛泛地“分析整个 APK”。swarm 模式会竞争认领 Intent,已经被验证的 Fact 直接给后续任务使用。
第二,让失败可见且可消费。runtime events 会记录 Worker 的阶段、进度、产物和失败原因;dead_end 用来标识已排除的路线。这样重试不是把同一个 prompt 再跑一次,而是带着“为什么上一条路不通”重新调度。
第三,把完成当作一个状态机,而不是一句话。候选答案先进入 completion candidate;独立 verifier 检查证据和产物;满足门控后才 finalize。对于逆向题,这一步虽然显得慢,却能明显减少“模型把猜测写得很自信”的问题。
八、写在最后
这轮看雪 Android CTF 测试之后,r0re 不再只是“能调模型的服务”。它能拆任务、保存过程、接收人工方向,也能把错误候选留在项目里继续处理,最终完成整个逆向分析过程的到结果。
如果想试,建议先挑一题 Java 层校验清楚的 CrackMe,Goal 里直接写验证条件。把 facts、intents、产物和完成门控走通,再上壳、JNI 和动态分析题。
源码已公开在 fyrlove/r0re。欢迎在公开 CTF、教学样本和已获授权的 App 安全测试中使用,也欢迎把新的样本特征、验证脚本和失败路径补进来。
看雪ID:fyrlove
https://bbs.kanxue.com/user-home-703941.htm
*本文为看雪论坛精华文章,由 fyrlove 原创,转载请注明来自看雪社区
火热售票中!1.25折门票即将售罄
往期推荐
HTB Nimbus渗透测试靶机 Writeup
当高频观测不再经过异常路径:Shadow Cave 与常驻式插桩架构
D3CTF 2026 d3llvm.apk 反调试定位与加密 SO的Dump
一串反引号,十层突破:n1ctf‑2018‑easy_harder_php 完整利用链
实现一个EDR不可见的网络通信(将lwip移植到nt内核中)
球分享
球点赞
球在看
点击阅读原文查看更多
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:看雪学苑 fyrlove fyrlove《r0re 自动逆向分析工具实战记录》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论