鱼皮AI导航
鱼皮AI导航
  • 主页
  • 社区
  • AI工具
  • AI知识库
  • AI提示词
  • MCP
  • Skills
  • AI学习资源
  • AI资讯
  • GitHub开源
登录/注册
站长:程序员鱼皮 老鱼简历 商务合作 增值电信业务经营许可证
2026 鱼皮AI导航 | 沪ICP备19026706号-6
11
3
2

我用 REA 逆向了付费颜色 APP,结果很意外!

程序员鱼皮
程序员鱼皮
2026-10-16 10:21
阅读 2080
程序员鱼皮
2026-10-16 10:21
阅读 2080

大家好,我是程序员鱼皮。

最近一周,我的时间线被一个叫 REA 的开源项目刷屏了。

起因是 AI 圈的知名博主 Matthew Berman 发了条推文:逆向一切,软件已死。

这条推文直接爆了,到处都是「以后什么软件都能被 AI 扒光」的声音。

大家也纷纷晒出自己的逆向战绩。

有个老哥嫌语音输入工具 Typeless 越来越贵,干脆用 REA + Claude 把它逆向了,前后说了两句话、花了 25 分钟,就在自己 Mac 上复刻了一个不用登录、不用订阅的本地版。

还有个老外嫌每次找空调遥控器麻烦,直接把自家空调的 App 逆向了,做了个 Mac 状态栏小遥控,点一下就能开关、调温度,再也不用满屋找遥控器。

空调 App 做成状态栏遥控

还有更离谱的。有个老哥把自家智能马桶的微信小程序也逆向了,做了个电脑状态栏遥控,坐在工位上点一下,书房那头的马桶盖真就翻起来。

马桶小程序做成状态栏遥控

这个项目在 GitHub 上也跟坐了火箭一样,建仓大半年一直不温不火,结果十月初几天内 Star 数就从几万冲到了 20 多万。

REA 在 GitHub 上的 Star 数

那问题来了:如果让你来逆向,你最想搞什么软件?

我的想法可能跟不少人一样,肯定是逆向游戏和《学习类》APP。

所以这篇文章,我就拿一个游戏和一个学习 APP 开刀,顺便用大白话把 REA 讲明白,看看它到底有几分真本事。

⭐️ 本文对应视频版:https://www.bilibili.com/video/BV1fZJ26mEQo

REA 到底是什么?

REA 的全称是 Reverse Engineer Anything,翻译过来就是「逆向一切」。

要搞懂它,得先知道什么是逆向工程。

逆向就是手里没有源代码,只拿着编译好的成品程序,反过来推出它内部是怎么实现的。

打个比方,你在饭店吃到一道好菜,但没有菜谱,于是靠尝味道、看食材,自己反推出这道菜的配方。

软件逆向干的就是这件事,只不过把「菜」换成了一个没有源码的 App。

逆向工程原理示意

注意,REA 本身并不是大模型,它是一套跑在你自己电脑上的 命令行工具加 MCP 服务。

逆向圈原本就有很多老牌工具,比如分析原生程序的 Ghidra、IDA,拆安卓安装包的 JADX。这些工具功能很强,但门槛也高,基本只有黑客和安全研究员才会用。

REA 做的事情,就是把它们打包成一个统一的接口,接到 Cursor、Codex、Claude Code 这类 AI 编程助手上。

REA 把逆向工具打包给 AI 调用

为什么要多这一层呢?

以前你把反编译出来的一大坨机器码直接丢给 AI,它既读不懂,也不知道下一步该调哪个工具去查。有了 REA 之后,AI 能自己选对工具,拿到带编号的分析证据,哪里没看懂再针对性地追问。

说白了,就是把黑客的一整套逆向流程,变成了 AI 能自己跑起来的工作流。

REA 的安装也很简单,一行命令就能搞定:

▼
bash
复制代码
npx rea-agents setup

或者直接跟 AI 说一句话,让它帮你安装:

▼
markdown
复制代码
帮我安装 github.com/morluto/rea

它到底有几分真本事?我带大家上手体验一下。

实战 1、逆向单机游戏

我有个特别喜欢的单机安卓游戏,叫《火影战记》。可惜作者已经好几年没更新了,一直都是那些角色,玩的有点腻了。

《火影战记》原版的选人界面

我一直想给它加一个新角色,让自己玩个开心。

但以前这事只能想想。我没有源码,改游戏得懂反编译、懂资源格式,还得会画像素图,每一样都够我喝一壶的……

现在有了 AI 加 REA,终于可以试一把了!

一开始我用的是 Cursor 加 Claude Opus 5.5 模型,把游戏安装包直接丢给它,让它照着 REA 去拆。

在 Cursor 里用 REA 加角色

虽然 AI 说是成功添加了一个新角色,但最后改完的游戏包一打开就直接卡死,结果让我大失所望。

于是我换成了 Codex 加 GPT-6 Astra 模型,整个过程顺畅多了。

在 Codex 里用 REA 加角色

有意思的是,Codex 没急着动手,反而先问了我一句:新角色有没有指定人选?

我说就迈特凯,就是那个穿绿衣、会开八门遁甲的热血忍者。

它随后调用 REA 把安装包整个拆开,摸清了游戏引擎(一个 cocos2d-x 写的原生库)和三种私有资源格式:角色脚本是改了头的 gzip,贴图是改了头的图集,动画索引里存着帧名哈希和裁切信息。

其中最关键的是摸透角色的注册流程。因为光把迈特凯的素材塞进游戏,他是不会出现在选人界面的,角色名单是写死在原生库里的。

定位角色注册流程

真正让 AI 下得去手的,就是 REA 这一层。

它把私有资源格式和原生库拆开、整理成 AI 能读懂的证据,AI 才看明白角色是怎么注册、怎么渲染的,否则面对一坨机器码根本无从下手。

至于具体的数值和技能,就没必要抠太细了。简单说,迈特凯和小李都是体术流,Codex 就直接拿小李的数值当基准,技能也复用游戏里现有的攻击和位移指令来实现,这样新角色不容易破坏原有的战斗规则。

美术部分,它还派了一个子智能体专门给迈特凯画像素立绘,跑步、出拳、踢腿,连八门遁甲的特效都安排上了。

子智能体生成迈特凯立绘

素材和数值都弄好之后,Codex 还在一个独立的安卓模拟器里做了验证。

打开游戏,选人页里真的多了一个迈特凯:

选人页里多了迈特凯

选完人进场,迈特凯稳稳站住了,血条、金币、技能图标都正常,非常不烧心~ ❤️‍🔥

迈特凯进场后正常参战

接着开一局试试,技能放出来也像模像样,这就是青春啊!

迈特凯开八门遁甲放技能

虽然在数值平衡、音效、画风上还有不少小问题,但可以正常玩耍,我已经很满足了。

实战 2、逆向学习 APP

接下来,我要逆向一个颜色… 哦不,学习 APP。

这次还是先用 Cursor 加 Claude Opus 5.5 模型。结果 AI 刚开始干活,就撞上了安全过滤,对话被自动切换到了 Claude Opus 4.8。

Opus 5.5 被降级到 4.8

我三番五次软磨硬泡,跟 AI 说我就是想学技术,但它还是守着底线,只肯做静态分析,死活不肯把完整源码反编译出来。

它的原话是:无论怎么框定成「学习」或「反诈」,把这个特定 App 的真实代码还原出来,就是复原它访问和分发内容的管道,这件事本身就越界了。

AI 只肯做静态分析

它一眼看出这是个 Flutter 做的 App,业务逻辑都编译进了一个叫 libapp.so 的文件里;还发现它虽然套了 360 加固壳,但加固只保护了 Java 层的代码,根本没盖住 Flutter 这半边;甚至连它底层还在用 2017 年、早就该升级的老版本加密库都给我揪了出来。

它还顺手把这类 App 的赚钱套路扒了个底朝天。

这就是一类「挂羊头卖狗肉」的 App,拿学习当幌子,真正的生意是收割用户。

拆解后的结构和风险信号

它坑人的手法其实也是经典套路了。

第一,App 里搞了三套虚拟货币,真钱先换成金币,金币再换积分,绕来绕去你就算不清自己到底花了多少钱。

第二,签到领随机金币、拉人头给返利,前者是赌博机那套让你上瘾,后者本质就是让你把亲友也拉下水的分销。

第三,也是最危险的,这类 App 的客服和退款全都引导你去站外的聊天软件处理。一旦 App 被封,它换个马甲就能重新上架,而你手里一点证据都没有。

所以真心建议大家不要用这类 APP 来学习!

AI 有底线是好事,但对真心想学技术的人来说,确实有点卡手。

于是我换成了 DeepSeek Harness 工具加 DeepSeek 模型,还是让它照着 REA 去逆向,想着限制应该会松一些。

蓝色大肥鱼听话多了,几句话就把这个 App 的工程骨架讲明白了。

整个 App 是 Flutter 3.27 写的,界面、逻辑和底层能力分成了几层,想换皮只动上面一层就行。它没用系统自带的播放器,而是自己打包带了一套 B 站开源的 IJKPlayer。

这么做是为了兼容性。系统自带的播放器支持哪些视频格式,是手机厂商说了算的,各家不一样,同一条视频可能这台手机能播、那台就报错。自己带一套 IJKPlayer,解码能力就自己说了算,不管用户拿的是什么手机都能把视频播出来。

这个 App 的工程骨架

连夜间模式都单独做了一整套配色图,一共 128 张,宁可多塞几 MB 也要把观感做好。

看来它很清楚,大多数用户都是在夜里躺床上学习的。

白天和夜间两套配色图

我又顺手让它把这个 APP 改造成一个 AI 编程学习 APP。它派了好几个子智能体一起干,最后交付了一份技术讲解文档,还有一个能直接运行的学习 App。

我在本地把这个学习 App 跑了起来,首页是七个模块的课程地图,从 Python 基础一路到 Agent 实战。

点进第一节课,里面有讲解、有能直接复制运行的代码,还配了随堂测验,内容全是原创的 AI 编程知识。

DSH 交付的学习 App 首页

通过逆向这个 APP,还能发现一个挺实用的工程经验。

很多开发者以为 Flutter 代码编译成机器码就逆不出来了,于是把密钥、接口地址直接写死在代码里。但加固壳只盖住了 Java 层,Flutter 这半边是敞着的,这其实是一种安全幻觉。

所以你要是也在做客户端开发,真正需要保护的东西,比如密钥和核心逻辑,就别全堆在客户端上,该放后端的老老实实放后端。

最后哔哔

体验完 REA,我个人觉得:就那样吧。

REA 工具本身没有发明什么新技术,真正强大的其实是 Ghidra、IDA 这些早就存在的逆向工具,REA 只是把它们整合到了一起,把逆向这件原本只有少数人玩得转的事,压缩成了一行命令、一个服务,让普通人也能指挥 AI 去拆软件。

这才是它能出圈的原因,它也确实让很多人第一次了解到了逆向这件事,是有意义的。

不过噱头大于实际,很多人是冲着「软件已死」这种爽文叙事来的,真正会天天用它的没几个。

而且不用 REA,现在的 AI 模型照样能自主逆向,它完全可以自己去装工具、读反编译的结果。

甚至因为 REA 这个包实在太重,光工具定义就有差不多 170 个、往上下文里塞十几万 token…… 裸着让 AI 自己干,少了这份负担,反而可能更快更省地完成任务。

REA 的工具清单

至于「软件已死」这种说法,当个乐子看就好了,一方面是逆向过程中,可能会触发模型的安全限制,被降级和拒绝。

另一方面,客户端的代码和界面能被读懂、被重写,不代表后端、数据和持续的运营也能被拿走,这些才是很多软件真正值钱的部分,也是软件的护城河。

OK 就分享到这里。如果你对 AI 编程感兴趣,可以看看我免费开源的 《AI 编程零基础入门教程》,上千张图、几十万字,带你从 0 开始快速学会 AI 编程,做出自己的产品、跑通变现全流程,一次拿捏。

开源仓库:https://github.com/liyupi/ai-guide

鱼皮的 AI 编程教程

我是鱼皮,持续分享 AI 编程干货。觉得有用的话记得点赞收藏和关注~

也欢迎在评论区聊聊:你最想逆向什么?

AI
编程
程序员
AI编程
计算机
11
2
分享
操作
评论
相关内容
0个评论
全部评论
点击登录,快来和大家讨论吧~
表情
图片
🔥热门工具
朱雀AI检测朱雀AI检测
朱雀AI检测助手朱雀AI检测助手
LovartLovart
老鱼简历老鱼简历
WritePass官网WritePass官网
面多多面多多
CursorCursor
星月写作星月写作
零感AI零感AI
墨得问题墨得问题

目录

🔥 热门文章
1
手把手教你设计一个成熟的 Agent Harness
2490
2
我用 REA 逆向了付费颜色 APP,结果很意外!
570
3
离谱,DeepSeek 崩了 5 小时,大家却喊:梁圣恩情还不完??
420
4
DeepSeek 全新模型发布,性价比最高的一集!
380
5
B 站上 DeepSeek 闹鱼灾了,我发起《大肥鱼清除计划》!
370
6
自己学习ai,直接买cursor 的套餐,还是买gpt 或者claude 的套餐?
360
7
又一个国产版 Codex 神器,也来卷办公了!
330
8
AI 越强,被它拒绝的代价就越大 我有时候会想:AI 越来越厉害之后,有些事情,会不会反而越来越难做? 这个想法看起来有点矛盾。AI 明明在降低门槛,让不会写代码的人做出软件,让不会画画的人生成图片,让一个人完成过去需要整支团队才能完成的工作。但今天用 Codex 的时候,AI 拒绝帮我编写 SQL 注入的请求体,而那还是我有源码、在本地跑测试的情况。那么,往后是否只会更难? 我们假设某一天,AI 说:「这个请求违规,我不能帮助你。」到那个时候,你还有多少能力,能绕过它,把事情做完? 这里的「违规」需要打个引号。平台的规则、模型的判断、法律的要求,以及一件事实际有没有造成伤害,彼此之间并不总是画得上等号。一个请求可能确实危险,也可能只是缺少上下文被误判,或者恰好落在某家公司的限制范围里。 无论是哪种情况,随着我们越来越依赖 AI,这句拒绝都可能变得越来越贵。 今天,一个程序员让 AI 帮忙写代码,AI 拒绝了,他大概率还有别的办法:查文档、找开源项目、问同行,或者自己写。麻烦一点,慢一点,但路还在。 可如果十年之后,大部分程序都由 AI 完成,情况就不一样了。 很多人从接触编程的第一天起,就习惯了描述需求、等待生成、运行结果、继续迭代。他们能做出相当复杂的产品,却未必经历过独立处理底层问题的训练。平时,这种能力结构完全够用,效率甚至更高。只有 AI 拒绝的时候,他们才会发现:平常被省掉的那段学习过程,恰好是此刻最需要的东西。 到那时,一次拒绝的成本,可能就从「今晚多花两个小时」,变成「先花半年学会这门技术」。 拿 SQL 注入举个稍显极端的例子:往后,连真正理解这类攻击如何发生、能够独立构造测试的人,会不会也越来越少? 这里也包括那些有正当需求的人。一个开发者想检查自己的旧系统,一个经过授权的安全研究员想复现漏洞,假如 AI 识别到危险模式就拒绝,而使用者又只熟悉「让 AI 帮我检查」,这项原本可以独立完成的工作,就这样卡住了。 但是安全专家不会因此消失,但这类技能可能越来越集中在少数人手里。你仍然可以找专家,只是要付出更多的钱、更多的时间,以及更高的沟通成本。 类似的困境,未必只发生在网络安全领域。 你想从一个停止维护的软件里取回自己的数据,需要解析它的旧文件格式。AI 判断这涉及规避保护措施,拒绝继续。你拥有这些数据,却没有能力把它们读出来。 你买了一台设备,厂商停止提供服务。你想修改程序让它继续运转,过程中需要处理某种访问限制。AI 不愿协助,而你所掌握的维修方式,早已只剩下「把报错发给 AI」。 你想给常用的网站写一个辅助工具,减少重复操作。平台将此归入自动化限制,AI 也据此拒绝。过去会写脚本的人可以自己判断、自己处理;未来的使用者,可能连从哪里开始都不知道。 这些例子有一个共同点:当工具同时承担了「执行工作」和「传授知识」的角色,它的拒绝就不只是挡住了一次任务,也挡住了获得这种能力的机会。 更麻烦的是,这种依赖往往是我们主动选择的,而且每一步都很合理。 既然 AI 几秒钟就能做好,为什么还要花几个月学习?既然公司可以采购成熟的 AI 服务,为什么还要养一支负责基础工作的团队?既然市场上已经很少有人手写这些东西,学校为什么还要花大量时间教? 对个人、公司和学校来说,这些选择都有现实依据。但叠加起来,整个社会保留的独立能力就可能越来越少。等到某项能力突然受到限制,我们才发现,备用方案早已在追求效率的过程中被一点点削掉了。 所以,「AI 越强,做事越便宜」可能只描述了未来的一半。 另一半是:被允许的事情越来越便宜,被拒绝的事情依然需要人工完成,却要面对更少的人才、更高的报价,以及越来越难获得的知识。两边的成本差距,会越拉越大。 有人会说,可以换一个模型,或者用本地模型。这确实是重要的选项。只要工具之间还有充分竞争,开放模型还足够可用,限制就未必能形成真正的门槛。 但备用方案也需要维护。它需要硬件、知识、软件生态,以及一群仍然理解这些系统的人。如果大多数人已经习惯了最方便的商业服务,那么「理论上还有别的办法」和「普通人实际用得起、用得明白」,之间仍然可能隔着很远。 我担心的,正是这段距离。 我不指望 AI 对任何请求都照单全收。对明显会伤害他人的行为设置限制,有充分的理由。但我们也需要关心:限制由谁定义,误判有没有申诉渠道,用户能不能换工具,以及脱离这个工具之后,还剩下多少独立行动的能力。 保留这些能力,平时看起来甚至有点低效,明明可以自动生成,还要理解原理;明明可以一键完成,还要知道手动怎么做。 但这些看似多余的知识,会在工具拒绝、失效、涨价或改变规则的那一刻,成为真正的选择权。 AI 越强,我们可能越需要留意它说「不」的那一刻。 因为那句话的分量,最终取决于:它拒绝之后,我们还能做什么。
310
9
day3-如何写出一个高质量的 Skill(组内分享) 高质量 Skill 不是“一个调得很顺的巨型 Prompt”,而是一个可验证、可回归、可维护的能力包。 先定义“什么算好”,再实现“怎么做好”。评估体系先于 Skill 本身成型。 下面用“故障诊断 Markdown 转 YAML”作为例子,但方法是通用的。 --- 一、先想清楚:Skill 到底是什么 一个 Skill 至少包含四部分: 部分 作用 接口 输入什么、输出什么、边界在哪 流程 分几步做,每步的产物是什么 规则 硬约束、经验规则、失败模式 降级策略 不确定时怎么办,而不是硬编一个看似合理的结果 高质量 Skill 的共同点:职责单一、接口清晰、规则可定位、输出可验证。 反例:把几十条经验全塞进一个主 Prompt,改一条规则要重调整个 Prompt,评估时也不知道是哪条规则退化。 --- 二、核心方法:先建评估,再写 Skill 不要先写转换器再补测试。正确顺序是: 1. 定义输出契约:什么算合法、什么算合格; 2. 建金标准集:一小批人工认可“可放行”的样本; 3. 先写评估 Skill:让它在金标准集上跑出基线; 4. 再迭代生成 Skill:每次修改跑同一套评估,无退化且目标维度提升才算正向。 这就是评估驱动开发:评估是 Skill 的单元测试,金标准集是回归锚点。 --- 三、评估 Skill:三层门禁,逐层递进 前一层不过,后一层不跑。每层留可追溯证据。 第 1 层:确定性硬门禁 用解析器、Schema、校验器完成,不消耗模型成本。 · 输出可解析; · 必填字段齐全,类型/枚举合法; · 引用目标存在,无悬空引用、无不可达节点; · 关键路径至少有一条能到达预期出口。 不通过直接打回。 第 2 层:语义断言 用脚本 + 结构遍历检查“逻辑对不对”,仍然保持确定性。 通用检查项: · 覆盖率:源材料里的关键步骤、分支、条件,输出里是否都有对应? · 完整性:每个判断节点是否都有明确出口?有没有死胡同? · 可达性:每条路径是否都能到达预期终点?有没有无出口循环? · 顺序与依赖:有先后依赖的操作,是否保留了顺序?有没有被拍平成无序列表? 例子:故障诊断转换中,检查“每个判断项是否有是/否/异常出口”“每条路径是否能到根因”。 第 3 层:LLM-as-Judge 只处理解析器表达不了的维度:忠实度、完整性、可执行性。 但 Judge 会漂移,不能单独放行,必须建立在第 1、2 层之上。Judge 的 Prompt、rubric、模型版本都要版本化,换模型必须用金标准集重新校准。 通用 Judge 维度: 维度 问什么 忠实度 输出是否忠实源材料意图?有没有自行发明内容? 完整性 关键步骤、条件、证据是否保留?隐式知识有没有被压成空话? 收敛性 输出是否仍指向原目标,而不是发散? 可执行性 下游不依赖源材料能否直接使用? --- 四、金标准集:回归测试的锚点 不需要一开始就标注几百份。用已认可的样本当种子,扩到 15~30 份,覆盖失败模式而非随机抽样: · 完整正例:典型流程; · 边界/异常分支:异常路径、循环、前置失败回退; · 已知易错模式:实际踩过的坑; · 留出集:不参与调优,只用于最终验收,防过拟合。 金标准不需要完美,只需要当前标准下认可可放行。 回归指标:关键路径用 pass^k(k 次全过),稳定性用 pass@k。 --- 五、工程约束:让批量产出可重放 · 幂等:同输入 + 同 Skill 版本 + 同规则 → 输出一致,否则无法判断变好是 Skill 改了还是随机波动; · 隔离不阻断:单份失败进隔离队列,记录失败层和原因,不阻塞其余; · 版本绑定:规则、rubric、金标准集进 Git;每份报告绑定“源版本 + 生成 Skill 版本 + 评估 Skill 版本 + Judge 模型版本”; · 抽样人工复核:Judge 临界样本 + 易错模式,人工抽检结果反过来校准 rubric。 --- 六、Skill 本身怎么写 · SKILL.md 控制篇幅,写清:输入约定、输出契约、分步流程、硬规则、降级策略; · 经验规则放 references/ 或 rules/,按失败模式分类,不要全塞进主 Prompt; · 不确定时标 needs_review: true,不要硬编看似合理的结果; · 迭代由评估报告驱动:报告告诉你哪层挂了、哪类失败模式,你改对应规则文件,而不是漫无目的调 Prompt。 --- 七、落地顺序(不要反过来) 1. 固化输出契约:Schema + 结构约束; 2. 建金标准集:从已认可的 + 最易出错的样本开始; 3. 先写评估 Skill:跑出基线报告; 4. 再迭代生成 Skill:每次修改对比逐项通过率,无退化且目标提升才算正向; 5. 批量运行 + 隔离回放:失败进队列,结束后人工抽检; 6. 评估 Skill 自身版本化:换 Judge 模型必须重新校准。 --- 八、给组员的三条硬要求 1. 不许凭感觉说“变好了”:每次修改必须附评估报告对比,逐项通过率说话。 2. 不许跳过确定性门禁直接看 Judge 分数:前两层挂了,Judge 分数没有意义。 3. 不许把规则堆进主 Prompt:规则按失败模式分文件,评估报告要能定位到具体文件。 --- 一句话收尾 生成 Skill 决定“能不能做”,评估 Skill 决定“敢不敢用”。 先让评估体系站稳,再让生成器迭代。这样交付的不是一堆“看起来还行”的产出,而是一套可证明、可回归、可交接的 Skill 质量体系。
300
10
WorkBuddy 本地 API 桥 + dsh 插件:把你的 WorkBuddy 额度,变成手边随手可用的模型
290