번역 완료이 사례에 대하여
요 며칠 timeline은 온통 REA로 가득하다. 많은 사람들이 "폐쇄 소스 상용 소프트웨어는 AI에게 속옷까지 다 벗겨질 것"이라며 경악하고 있다.
그 repo, MCP 계약, 몇 가지 case를 살펴보니, 근본적인 로직은 실로 매우 직접적이며, 심지어 어떤 흑마법도 없다.
새로운 디컴파일 모델을 발명하지도 않았고, 어셈블리 한 줄조차 스스로 파싱하지 않았다.
하지만 왜 Claude Code가 몇 분 안에 Notion의 프로세스 간 통신을 파악하고, clean-room 재현 코드까지 작성할 수 있는가?
진정한 대비와 가치는 여기에 있다.
1.痛点: 왜 예전에 디컴파일 코드를 AI에게 직접 먹이는 것이 전혀 통하지 않았는가?
대부분의 사람들은 이전에 리버스 엔지니어링한 어셈블리나 난독화 JS를 대규모 모델에 넣어본 적이 있다.
결과는 기본적으로 재앙이었다. 심볼 이름이 제거되고 컨텍스트가 조각난 수천 줄의 코드를 던져넣으면, 대규모 모델은 추측과 어림짐작으로, 논리 설명의 80%는 전적으로 뇌내 보충 환각에 의존했다.
REA는 다른 접근을 했다. 대규모 모델이 최외곽에서 추측하게 하는 대신, 로컬에서 실행되는 MCP Server를 만들어 전체 분석 체인을 계층별로 분리했다:
- 의사결정 계층 (Claude Code / Codex): 목표를 이해하고, 가설을 제시하고, 방향을 정하고, 증거를 얻은 후 재현 코드를 작성한다.
- 스케줄링 계층 (REA MCP): 각端 리버스 인터페이스를 통일하고, Evidence ID가 포함된 구조화된 증거 패키지를 출력한다.
- 실행 엔진 (로컬 툴체인): 네이티브 프로그램은 IDA / Ghidra / Hopper를 호출해 어셈블리와 교차 참조를 추출하고; Electron / 프론트엔드는 직접 AST 정적 분석과 Source Map 복원을 수행하며; Android는 JADX를 호출한다.
- 핵심 메커니즘: Evidence Loop로 대규모 모델의 환각을 짓누르다
리버스 엔지니어링에서 가장 심력을 소모하는 것은, 결코 어떤 코드를 이해하지 못하는 것이 아니라, 디컴파일 창에서 끊임없이 수동으로 교차 참조(Xrefs)를 추적하고, 메모하고, 파편을 맞추는 것이다.
REA는 이 과정을 Agent의 "검증 루프"로 바꿨다:
Agent가 가설을 제시하면, 도구는 정확한 바이트 오프셋과 호출 토폴로지를 포함한 증거 슬라이스를 반환한다. 더 중요한 것은, 어떤 정적 분석 호출 그래프가 불완전하면, 도구는 "커버리지 범위 제한"이라는 마크를 명시적으로 붙인다.
이는 대규모 모델이 "정적 범위 내에서 호출을 찾지 못함"을 "논리적으로 호출이 존재하지 않음"으로 오판하지 않는다는 것을 의미한다. 이전 라운드의 확실한 Evidence ID를 가지고 있어야 다음 계층을 추적할 수 있으며, 분석 범위를 점차 수렴시킨다.
- 구체적 case: Notion 클립보드 프로세스 간 호출 체인
공식이 Notion 클립보드를 추적한 사례를 보면, 과정은 실로 매우 명확하다:
"Notion 웹 측에서 복사를 클릭했을 때, 내용이 어떻게 시스템 클립보드에 쓰이는가"를 알아내려면:
- 프론트엔드가 노출한 API를 스캔하여 preload 래퍼 함수를 찾는다;
- 유일한 IPC 채널 이름 notion:clipboard:write를 캡처한다;
- 채널 이름을 따라 메인 프로세스 코드에서 리스너와 권한 검증을 찾는다;
- 최종적으로 Electron 네이티브 API를 호출하는 완전한 체인을 엮어낸다.
네 단계 작업에서, AI는 어떤 코드 구현도 추측하지 않았고, 전적으로 IPC 채널 이름이라는 사실 앵커에 의존해 프로세스 간 호출 엔드포인트를 빈틈없이 맞춰냈다.
- 신격화하지 마라: 3가지 넘을 수 없는 물리적 경계
그 가치를 명확히 보려면, 그 경계를 더욱 명확히 봐야 한다:
-
제로 백엔드 관통력: 로컬 클라이언트 내의 코드만 분석할 수 있다. SaaS 제품의 핵심 로직은 전부 클라우드 서버에 있으며, 이 도구는 전혀 건드릴 수 없다.
-
네이티브 분석은 로컬 환경에 고도로 의존한다: C/Rust/Go 네이티브 프로그램을 리버스 엔지니어링하려면, 본機에 상용版 IDA 또는 Hopper / Ghidra가 구성되어 있어야 하며, 그 자체는 디컴파일 능력을 갖추지 않는다.
-
강력한 보강은 여전히 사각지대: VMP 패킹, 고강도 제어 흐름 평탄화 난독화를 만나면, 전통 도구도 못 먹고, REA도 마찬가지로 막막하다.
-
산출물은 메커니즘과 의사코드이며, 1:1의 원본 엔지니어링 소스 코드를 무에서 복원할 수 없다.
-
엔지니어 관점의 인지 차원 상승
REA가 발산하는 신호는 매우 명확하다:
AST 정적 분석, 심볼 추출, 교차 참조 추적이 Agent의 기본 도구로 패키징되면, 클라이언트를 분석하는 문턱은 "며칠의 인력 소모"에서 "몇 라운드 대화의 Token 비용"으로 축소되었다.
순전히 클라이언트 코드 로직, 프론트엔드 패키징, 단순 난독화로 구축된 이른바 "기술 장벽"은, 방어 수익이 제로에 가까워지고 있다.
클라이언트 코드는 완전히 투명한 화이트박스가 되고 있다. 소프트웨어의 진정한 해자는, 이미 완전히 클라우드 사설 데이터 플라이휠, 실시간 비즈니스 Context, 그리고 사용자의 진짜 시나리오에 대한 이해 깊이로 이동했다.
원문 / README
这两天 timeline 上都是 REA,一堆人惊呼“闭源商业软件要被 AI 扒得连底裤都不剩了”。
翻了下它的 repo、MCP 契约和几个 case,底层逻辑其实非常直接,甚至没什么黑魔法。
它没有发明任何新的反编译模型,甚至连一行汇编都没自己解析过。
但为什么它能让 Claude Code 在几分钟内摸清 Notion 的跨进程通信,还能写出 clean-room 复现?
真正的反差和价值在这里。
- 痛点:为什么以前直接把反编译代码喂给 AI 根本行不通?
大部分人之前都试过把逆向出来的汇编或者混淆 JS 塞给大模型。
结果基本是灾难:几千行剥离了符号名、上下文破碎的代码丢进去,大模型连猜带蒙,80% 的逻辑解释全靠脑补幻觉。
REA 换了个思路:不让大模型在最外层猜,而是做了一个本地运行的 MCP Server,把整个分析链路分层剥离:
- 决策层(Claude Code / Codex):理解目标、提假设、定方向,拿到证据后写复现代码。
- 调度层(REA MCP):统一各端逆向接口,输出带 Evidence ID 的结构化证据包。
- 执行引擎(本地工具链):原生程序调 IDA / Ghidra / Hopper 提取汇编与交叉引用;Electron / 前端直接做 AST 静态分析与 Source Map 还原;Android 调 JADX。
- 核心机制:用 Evidence Loop 压死大模型的幻觉
逆向工程最消耗心力的,从来不是看不懂某段代码,而是在反编译窗口里不断手动追踪交叉引用(Xrefs)、记笔记、拼碎片。
REA 把这个过程变成了 Agent 的“查证循环”:
Agent 提出一个假设,工具返回包含精确字节偏移、调用拓扑的证据切片。更关键的是,如果某个静态分析调用图不完整,工具会显式打上“覆盖范围受限”的标记。
这意味着大模型不会把“静态范围内没查到调用”误判为“逻辑上不存在调用”,必须拿着上一轮确凿的 Evidence ID 才能追查下一层,把分析范围逐步收敛。
- 具体 case:Notion 剪贴板跨进程调用链
看官方追踪 Notion 剪贴板的案例,过程其实非常清晰:
要搞清楚“Notion 网页端点击复制,内容如何写入系统剪贴板”:
- 扫描前端暴露的 API,定位到 preload 包装函数;
- 抓取到唯一的 IPC 通道名 notion:clipboard:write;
- 顺着通道名在主进程代码里定位监听器和权限校验;
- 最终串出调用 Electron 原生 API 的完整链路。
四步操作,AI 没有猜测任何代码实现,全靠 IPC 通道名这个事实锚点,把跨进程的调用端点严丝合缝拼齐。
- 别神化它:3 个无法逾越的物理边界
看清它的价值,更要看清它的边界:
-
零后端穿透力:只能分析本地客户端内的代码。SaaS 产品核心逻辑全在云端服务器,这套工具碰不到分毫。
-
原生分析高度依赖本地环境:逆向 C/Rust/Go 原生程序,前提是你本机配好了商业版 IDA 或 Hopper / Ghidra,它自己不带反编译能力。
-
强加固依然是死穴:遇到 VMP 加壳、高强度控制流平坦化混淆,传统工具啃不动,REA 同样抓瞎。
-
产出的是机制与伪代码,无法凭空还原出 1:1 的原始工程源码。
-
工程师视角的认知升维
REA 释放出的信号非常明确:
当 AST 静态分析、符号提取和交叉引用追踪被打包成 Agent 的基础工具后,分析客户端的门槛已经从“几天的人力消耗”缩减到“几轮对话的 Token 成本”。
纯靠客户端代码逻辑、前端打包和简单混淆构筑的所谓“技术壁垒”,防守收益正在趋近于零。
客户端代码正在变成全透明的白盒。软件真正的护城河,已经彻底转移到了云端私有数据飞轮、实时业务 Context,以及对用户真实场景的理解深度上。