바이너리를 리버스 엔지니어링하려는 대부분의 사람들은 헥스 에디터로 파일을 열고, 20 분 정도 스크롤을 내리다가 포기합니다.
어떤 툴이 파일을 로드하는지 모릅니다. 어떤 프롬프트가 로직을 끄집어내는지 모릅니다. 어셈블리 코드 덩어리를 실제로 재구축할 수 있는 형태로 바꾸는 방법도 모릅니다.
이 11 단계 코스는 Claude Opus 5.5 를 무엇이든 만들어내는 오픈소스 머신으로 바꿔줍니다.
최신 AI 알파 정보를 얻으려면 제 Substack 을 구독하세요:
리버스 엔지니어링은 크래킹이 아닙니다. 직접 만들 수 있을 정도로 대상을 깊이 이해하는 과정입니다.
2026 년 10 월 7 일, Replit 의 CEO 인 Amjad Masad 가 단 한 줄을 올렸습니다.
https://x.com/amasad/status/2107671204639465961
그 아래에서 @morluto 라는 개발자가 증거를 제시했습니다. 에이전트가 Hopper 와 Ghidra 를 조종해 아주 먼 곳까지 갈 수 있게 해주는 툴 세트였습니다.
그 프로젝트가 바로 REA 이며, 며칠 만에 GitHub 스타 110,000 개를 돌파했습니다.

https://github.com/morluto/rea
과장이 아닙니다. 같은 주에 WordCraft 라는 오픈소스 프로젝트가 Microsoft 와 Adobe 를 순수 Rust 로 클린룸 재구축한 버전을 출시했습니다.

Word 와 Adobe 의 동작을 관찰하고 공개된 파일 포맷 명세만 읽어서 만든 결과물이며, 원본 코드는 전혀 건드리지 않았습니다.

이 코스는 밀봉된 바이너리부터 위와 같은 재구축까지의 전 과정을 보여줍니다. 읽기 작업은 Opus 5.5 가 담당합니다.
01. 엔진 - 에이전트가 바이너리를 읽는 방식
Opus 5.5 는 스스로 디스어셈블러를 실행할 수 없습니다. 텍스트를 읽고 텍스트를 쓸 뿐입니다.
에이전트로 리버스 엔지니어링이 가능한 이유는 모델과 바이너리 사이에 툴이 자리 잡고 있기 때문입니다. 이 툴은 파일을 실제 디스어셈블리 엔진에 로드하고, 결과를 호출 가능한 함수로 노출하며, 모델이 질문할 수 있게 해줍니다.

그 툴이 REA 이고, 그 아래에서 돌아가는 엔진이 Hopper, Ghidra 또는 IDA 입니다.
루프는 단순하며 반복됩니다. 모델이 REA 에게 대상 검사를 요청하면, REA 는 정확한 근거(주소, 바이트, 의사코드, 호출 사이트)와 함께 분석 결과를 반환하고, 모델은 그 결과를 바탕으로 다음 질문을 던지거나 재구현 코드를 작성하고 테스트합니다.

모든 작업은 사용자의 기기에서 로컬로 실행됩니다. 모델이 추론하는 데 필요한 분석 결과 외에는 아무것도 업로드되지 않으며, 모든 결론은 관찰(observation), 추론(inference), 미확인(unknown) 중 하나로 태깅됩니다.
**
02. 설치 - rea-agents 와 디스어셈블러 하나
설치 과정에서는 에이전트에 REA 의 MCP 서버를 등록하고 그에 맞는 워크플로우 지침을 설치합니다.
명령어 하나로 끝납니다. 무언가를 쓰기 전에 모든 변경 사항을 먼저 보여주고, 수정하는 항목은 백업합니다.

디스어셈블러는 사용자가 직접 준비합니다. macOS 에서는 Hopper 가 가장 쉽고, Ghidra 는 무료에 크로스 플랫폼을 지원하며, 이미 IDA 를 보유하고 있다면 그것을 쓰면 됩니다.
1# 1. 에이전트(Claude Code, Codex, Cursor, Gemini CLI 등)에 REA 등록2npx rea-agents setup # 예정된 변경 사항을 표시하고, 쓰기 전에 확인을 요청함34# 2. 심층 분석 제공자. macOS 에서는 Hopper 가 가장 매끄럽습니다.5# 승인 후 설치가 자동으로 진행될 수 있습니다. Ghidra 와 IDA 는 사용자가 직접 준비해야 합니다.6# 3. 터미널 사용 및 스크립팅을 위한 rea CLI 설치7npm install --global rea-agents8rea --help910# 4. 에이전트를 재시작한 후 툴이 활성화되었는지 확인11claude12> /mcp13 rea: connected14 open_binary, binary_overview, analyze_function, decompile,15 list_procedures, search, xrefs, trace, inspect_artifact,16 analyze_javascript_application, inspect_managed_artifact ...
요구 사항은 가볍습니다. Node.js 22 이상과 npm 만 있으면 됩니다. 네이티브 분석에는 세 가지 엔진 중 하나가 필요하지만, 정적 JavaScript 및 .NET 검사에는 엔진이 전혀 필요하지 않습니다. 릴리스마다 수정 사항이 자주 포함되므로 REA 를 최신 상태로 유지하세요.
1# 리버스 엔지니어링 기본 규칙 ( CLAUDE.MD )23## 권한4- 내가 소유하거나 분석 권한이 있는 대상만 분석한다. 근거를 한 번 명시한다.5- 모든 주장에는 태그를 단다: 관찰(직접 확인함), 추론(유추함), 미확인.6- 근거를 인용한다: 주소, 바이트, 의사코드 또는 호출 사이트. 출처 없는 주장은 금지.78## 워크플로우9- 전체 덤프가 아닌 가장 작은 개요부터 시작한다. 구체적인 빈틈이 있을 때만 확장한다.10- 열린 세션을 재사용한다. 동일한 분석을 절대 다시 실행하지 않는다.11- 정적 사실과 런타임 사실을 분리한다. 정적 읽기로 실행을 암시하지 않는다.1213## 재구축14- 복사한 코드나 자산이 아닌 동작과 공개 명세를 기반으로 구축한다.15- 의무 장부를 유지한다. 복원된 모든 동작은 "완료" 처리 전에 통과하는 테스트가 필요하다.
Opus 5.5 는 low, medium, high, xhigh, max 다섯 가지 노력(effort) 레벨을 제공합니다. 다음과 같이 사용하세요.
- Medium: 검사 및 탐색용
- High: 일반 함수 주석 처리용
- Max: 난독화된 코드나 포인터 연산이 많은 경우
노력 레벨은 이 코스 전체에서 품질을 결정하는 가장 중요한 조절 장치입니다.
03. 라우터 - 20 가지 대상 유형, 각각 하나의 툴
초보자가 저지르는 첫 번째 실수는 JavaScript 가 그대로 노출된 Electron 앱을 대상으로 디스어셈블러를 켜는 것입니다.
REA 는 대상을 올바른 툴로 라우팅하며, 첫 번째 프롬프트도 그렇게 해야 합니다. 파일 이름과 기능을 명시하고, 진입 툴 선택은 에이전트에게 맡기세요.

1[절대 경로]에 있는 [앱]에서 [기능]이 어떻게 작동하는지 알고 싶어.23먼저 이 대상이 어떤 종류인지(native, Electron/JS, .NET, Go, APK, WASM) 알려주고,4열기에 적합한 REA 툴을 선택해. 아직 심층 분석은 시작하지 마.56그다음 한 문단짜리 맵을 줘: 앱이 무엇으로 만들어졌는지, 규모는 어느 정도인지,7[기능]을 찾으려면 어디부터 봐야 하는지. 관찰, 추론, 미확인을 구분하고,8주장하는 모든 내용에 근거를 인용해.
Electron 앱에 REA 를 연결하면 디스어셈블러 없이도 몇 초 안에 모듈, 임포트, IPC 경계를 반환합니다.
네이티브 Mach-O 나 ELF 에 연결하면 Hopper 데이터베이스를 열어 더 어렵지만 깊은 네이티브 경로를 제공합니다. 자신이 어떤 경로에 있는지 아는 것만으로도 몇 시간을 절약할 수 있습니다.
https://x.com/_vmlops/status/2106690704244420687
04. 정찰 - 개요, 문자열, 콜 그래프
아직 코드를 열지 마세요. 먼저 REA 에게 파일 전체의 맵을 요청하세요. 명령어 하나로 어떤 머신에서 실행되는지, 내부에 함수가 몇 개인지, 숨겨진 읽기 가능한 텍스트가 무엇인지 알 수 있습니다.
이 텍스트는 가장 빠른 단서입니다. 웹 주소, 오류 메시지, 기능 이름은 코드를 한 줄도 읽기 전에 앱이 무엇을 하는지 알려줍니다.
1rea.open_binary { path: "/Applications/Target.app/Contents/MacOS/Target" }2rea.binary_overview {}3 arch: arm644 functions: 1,284 identified5 segments: __TEXT __DATA __LINKEDIT6 entry: _main @ 0x1000051c078rea.search { query: "http" } # strings + code refs9 0x10004a2c0 "https://api.target.app/v3/sync"10 0x10004a300 "Authorization: Bearer "11 0x10004a330 "offline cache miss, falling back"1213rea.xrefs { address: "0x100012ab0" } # who calls this?14 147 references -> core config loader, called everywhere
REA 는 각 함수가 몇 번 호출되는지도 셉니다(이 횟수를 교차 참조, 즉 xrefs 라고 부릅니다).

147 번 호출되는 함수는 앱의 심장부이므로 최고의 노력을 기울일 가치가 있습니다. 두 번 호출되는 함수는 중요해질 때까지 무시해도 되는 작은 헬퍼입니다. 목록 맨 위에서부터 아래로 내려가며 작업하세요.
05. 디컴파일 - 함수 하나를 의사코드로
이제 바쁘게 돌아가는 함수 중 하나를 골라 읽을 수 있는 형태로 바꾸세요. 디컴파일러는 날것의 머신 명령어를 가져와 C 언어에 가까운 코드로 다시 작성합니다.
처음엔 거칠어 보입니다. var_28 같은 이름, 뒤엉킨 로직, 도처에 널린 캐스팅. 하지만 읽을 수는 있고, Opus 5.5 에게는 '읽을 수 있다'는 것만으로 충분합니다.
결과를 저장하려면 명령줄에서 실행하고, 채팅 안에서 바로 실행할 수도 있습니다.
1# 주소를 기준으로 함수 하나를 디컴파일하여 파이프하거나 저장할 수 있는 JSON 으로 출력2rea decompile /Applications/Target.app/.../Target 0x100012ab0 \3 --provider hopper --json > fn_config_loader.json45# 또는 이름으로 함수를 검색하고 참조를 따라가기6rea function /path/to/Target parseConfig --provider hopper --json7rea xrefs /path/to/Target 0x100012ab0 --provider hopper --json8rea trace /path/to/Target "sync" --provider hopper --json
1// 0x100012ab0 xrefs: 1472void sub_100012ab0(void* arg0) {3 void* var_20 = objc_msgSend(cls_NSJSONSerialization,4 sel_JSONObjectWithData_options_error, arg0, 0x0, 0x0);5 if (var_20 != 0x0) {6 void* var_28 = objc_msgSend(var_20, sel_objectForKey, @"endpoints");7 void* var_30 = objc_msgSend(var_20, sel_objectForKey, @"auth_mode");8 void* var_38 = objc_msgSend(var_20, sel_objectForKey, @"retry_count");9 objc_msgSend(g_sharedConfig, sel_setEndpoints, var_28);10 objc_msgSend(g_sharedConfig, sel_setAuthMode, var_30);11 objc_msgSend(g_sharedConfig, sel_setRetryCount,12 objc_msgSend(var_38, sel_intValue));13 }14}
REA 공식 쇼케이스에서는 옛날 게임인 DX-Ball 의 사운드 호출을 추적해 좌우 오디오 밸런스를 결정하는 헬퍼까지 찾아낸 뒤, 절반만 완성된 의사코드를 C 로 변환합니다.

결과물은 원래 테스트 케이스 3,205 개를 모두 통과하고, 컴파일된 63 바이트를 정확히 재현합니다.

전체 과정은 rea.tools/showcase 에서 확인할 수 있습니다.
06. 주석 달기 - Opus 가 모든 변수에 이름을 붙이게 하라
거친 코드는 작업의 절반일 뿐입니다. 이제 Opus 5.5 에게 넘겨 설명과 정리를 요청하세요.
알 수 없는 변수 이름을 실제 의미 있는 이름으로 바꾸고, 함수의 목적을 한 문장으로 설명하며, 따르는 패턴을 짚어내고, 심지어 원본 앱이 남겨둔 버그까지 찾아냅니다.
Claude 에 다음 프롬프트를 붙여넣으세요:
1교차 참조가 147 개인 함수의 디컴파일된 의사코드야.23이 함수에 대해:41. 사용 방식을 바탕으로 모든 변수를 의미 있는 이름으로 변경해.52. 목적을 한 문장으로 설명해.63. 읽고 쓰는 데이터 구조를 나열해.74. 패턴 이름을 지어줘(singleton, factory, state machine, observer 등).85. doc 주석과 함께 깔끔하고 관용적인 Swift(또는 호출 규약이 암시하는 언어)로 다시 작성해.96. 누락된 오류 처리, 입력 검증, 보안 검사가 있으면 표시해.1011답변하기 전에 xhigh 노력으로 충분히 생각해. 이름을 확정하기 전에 각 값이 무엇인지 추론해.12확실하지 않은 부분은 표시해.1314[의사코드 붙여넣기]
디컴파일은 코드가 무엇을 하는지 알려줍니다. Opus 5.5 는 왜 하는지와 재구축에 필요한 이름을 알려줍니다.
https://x.com/0x0SojalSec/status/2108389060192706674
https://x.com/0x0SojalSec/status/2108031166502896035
모든 대상에 디스어셈블러가 필요한 것은 아닙니다. REA 의 Notion 쇼케이스는 앱의 JavaScript 에서 클립보드 기능을 찾아 Electron 레이어를 거쳐 메인 프로세스까지 추적하며, 리치 클립보드를 구성하는 방식을 정확히 보여줍니다. 어셈블리 없이 이루어지는 완전한 추적입니다. 다음을 참고하세요.
07. 난독화 - Tigress 벤치마크
일부 앱은 지금 당신이 하려는 일을 막기 위해 만들어졌습니다. 코드가 의도적으로 엉켜 있습니다. 로직이 뒤섞이고, 텍스트가 암호화되며, 시간을 낭비하게 만드는 가짜 분기가 추가됩니다.
이를 난독화라고 부르며, 아무리 뛰어난 모델이라도 고전하는 유일한 영역입니다. Elastic Security Labs 는 20 개 작업에 걸쳐 Claude Opus 를 Tigress 스크램블러에 적용해 이를 측정했습니다. 다음 수치를 기억해 두세요.

이 수치에서 두 가지 실용적인 교훈을 얻을 수 있습니다.
- 첫째, 실패한 시도는 성공한 시도보다 비용이 약 두 배 듭니다. 모델이 포기하기 전까지 점점 더 강하게 시도하기 때문입니다. 따라서 함수당 지출 한도를 설정하고 일찍 중단하세요.
- 둘째, 전송하기 전에 디컴파일된 코드에서 쓰레기를 제거하세요(Caveman 이라는 무료 툴이 약 75% 를 제거해 줍니다). 그래야 모델이 군더더기가 아닌 진짜 로직에 집중할 수 있습니다.
실제로 마주치게 될 다섯 가지 기법과 코드를 열었을 때 각각의 모습은 다음과 같습니다.

1이 함수는 난독화된 것 같아. max 노력으로 작업해.231. 사용된 기법(제어 흐름 평탄화, 불투명 술어, 죽은 코드, 문자열 암호화, 함수 분할)을 식별하고,4 이 특정 코드에서 각각이 어디에 나타나는지 지적해.52. 해결해: 죽은 분기 제거, 불투명 술어 평가, 디스패치 평탄화 해제, 키를 복구할 수 있다면6 인라인 문자열 복호화.73. 남은 깔끔한 함수를 보여줘.84. 확신도를 1~10 으로 평가해. 6 미만이면 어떤 부분이 불확실한지, 어떤 주변 맥락이9 이를 해결할 수 있는지 정확히 말해. 조용히 추측하지 마.1011[난독화된 의사코드 붙여넣기]
08. 스웜 - 워커를 운영하는 컨트롤러
채팅 하나로는 500 개의 함수를 제대로 읽을 수 없습니다. 본 것을 잊어버리고, 같은 것을 세 가지 다른 이름으로 부르며, 스스로 모순되기 시작합니다.
해결책은 소규모 팀입니다. 작업을 분배하는 컨트롤러 채팅 하나와, 각각 함수 하나를 맡는 여러 워커 채팅입니다.
컨트롤러는 큰 그림을 유지하고 조각들을 다시 이어 붙입니다.

이를 위해 특별한 것을 구축할 필요는 없습니다. 아래 두 프롬프트가 전체 설정입니다.
1당신은 리버스 엔지니어링 컨트롤러입니다. 함수 맵은 functions.json 에 있습니다2(주소, 이름, 크기, xref_count).341. 콜 그래프 근접성을 기준으로 함수를 클러스터링하고, xref 수를 기준으로 클러스터를 정렬합니다.52. 각 클러스터를 워커에게 분배합니다. 직접 함수를 분석하지 마세요.63. 이름이 일관되도록 이미 해결된 구조체를 각 워커의 브리핑에 주입합니다.74. 워커가 6 미만의 확신도를 반환하면, 해결된 이웃의 맥락을 포함해 두 번째 패스를 대기시킵니다.85. 누적 토큰 소비량을 추적하고 각 클러스터 완료 후 보고합니다.
1당신은 워커입니다. 디컴파일된 함수 하나와 지금까지 해결된 구조체를 받습니다.2정확히 다음을 반환하세요: 주소, 목적, 확신도(1~10), structs_used, structs_new,3clean_source, flags. 기존 구조체 이름을 재사용하고, 컨트롤러가 이미 준 구조체에4두 번째 이름을 절대 만들지 마세요. 함수 하나만. 끝나면 중지하세요.
https://x.com/victor_explore/status/2109466356454510612
09. 클린룸 - 합법성을 지키는 네 가지 규칙
클린룸 재구축이란 앱의 동작은 복사하되 내부 코드는 절대 복사하지 않는 것을 의미합니다. 올바르게 하면 출시하는 결과물은 온전히 당신의 것이 됩니다. 잘못하면 타인의 저작권을 떠안게 됩니다.

네 가지 규칙이 당신을 안전하게 지켜주며, WordCraft 팀은 모든 빌드에서 이 네 가지를 자동으로 검사합니다.
- 관찰하되 복사하지 마세요. 대상을 블랙박스로 실행하고, 동작을 관찰하며, 자체 창만 캡처하세요. 코드를 읽거나, 디스어셈블하거나, 붙여넣지 마세요. 단순한 기능 이름 이상의 표현을 복사하지 마세요.
- 소스가 아닌 명세를 따르세요. 파일 포맷은 공개 표준(OOXML 은 ECMA-376 / ISO 29500, 여기에 공개된 RTF 및 ODF 명세 추가)에서 가져와야 하며, 경쟁사의 파서를 읽거나 GPL/LGPL 코드를 참조해서는 안 됩니다.
- 오리지널 자산만 사용하세요. 모든 아이콘, 폰트, 템플릿, 사운드는 코드로 그리거나, 퍼블릭 도메인이거나, 오픈 라이선스를 받아야 하며, 저작자 표시 파일에 한 줄씩 기록되어야 합니다. 그렇지 않으면 CI 검사가 빌드를 실패 처리합니다.
- 두 작업을 분리하세요. 한 에이전트는 동작을 복원하고 명세를 작성합니다. 다른 컨텍스트는 오직 명세만을 바탕으로 구현하며, 원본 분석을 절대 보지 않습니다. 이 분리가 바로 클린룸의 경계입니다.
1완료된 분석을 바탕으로 재구현을 위한 클린룸 명세를 작성해.23동작만 설명해. 다음을 포함해: 모든 공개 인터페이스, 데이터 모델, 테스트 가능한 요구사항으로서의4각 사용자 노출 기능, 읽고 쓰는 파일 포맷(관찰된 동작과 공개 명세 기준), 오류 처리 동작.56포함하지 말 것: 주소나 오프셋, 디컴파일에서 나온 변수 이름, 어셈블리, 원본에서 복사한 모든 것.7바이너리를 한 번도 본 적 없는 개발자가 이 문서만으로 호환되는 버전을 구현할 수 있어야 해.89다음 섹션으로 구성된 마크다운을 출력해: Architecture, Data Model, Public API, File Formats,10Test Cases.
설명서를 바탕으로 작업하는 것은 법적 보호막만이 아닙니다. 수십 년 전 원작자가 내린 결정을 물려받는 대신, 자신의 언어와 요구사항에 맞는 올바른 선택을 할 수 있게 해줍니다.

WordCraft 가 일부 영역에서 Word 보다 빠른 이유는 정확히 Word 의 내부를 복사하지 않았기 때문입니다.
10. 앱 제작 - 12 개의 프로 툴, 하나의 방법론
WordCraft 는 일회성 프로젝트가 아닙니다. ArtCraft 팀이 만든 12 개 앱 중 하나이며, 각각은 당신이 이미 돈을 내고 사용하는 툴을 클린룸 방식으로 재구축한 것으로, 모두 Rust 로 처음부터 작성되어 GitHub 에 무료 오픈소스로 공개되었습니다.
팀의 슬로건은 "Twelve apps. One craft(12 개의 앱, 하나의 기술)"이며, 그 하나의 기술은 9 단계의 방법론입니다. 원본을 관찰하고, 공개 명세를 읽고, 동작만으로 새로운 버전을 구축하는 것입니다.

공통 방법론이 주는 이점은 어디서나 동일합니다. Electron 이 없습니다. 각 앱은 macOS, Windows, Linux 에서 네이티브로 실행되며, FilmCraft 를 제외한 모든 앱이 WebAssembly 를 통해 브라우저 탭에서도 돌아갑니다.
또한 내부의 모든 동작이 이름이 지정된 명령어이기 때문에, 12 개 앱 모두 AI 에이전트로 즉시 제어할 수 있습니다.
모든 Craft 앱은 같은 방식으로 구축되며, 그 구조는 따라 할 가치가 있습니다. 각각 계층으로 쌓여 있고, 각 계층은 바로 아래 계층만 사용합니다. 맨 아래에는 기본 측정 단위가, 맨 위에는 화면에 표시되는 창이 있습니다.
WordCraft 의 계층은 다음과 같습니다:

그리고 모든 동작은 이름이 지정된 명령어일 뿐이므로, 사람이 클릭하든, 키보드 단축키를 누르든, AI 에이전트가 호출하든 정확히 같은 것이 실행됩니다. 이것이 이들 모두를 에이전트로 제어 가능하게 만드는 비결입니다.
1drive WordCraft over MCP23# Headless document automation4claude mcp add wordcraft -- wordcraft-cli mcp56# Or drive the running desktop app7wordcraft --control 7981 &8claude mcp add wordcraft-app -- wordcraft-cli mcp --connect 127.0.0.1:7981910# Tools: list_commands, execute, batch, type_text, select_text,11# inspect_document, render_page, save_document (+ screenshot/click/key live)12> Open report.docx, make every heading 14pt bold, export to PDF13 ✓ select.all-headings -> 12 selected14 ✓ format.font-size 14 · format.bold15 ✓ export report.pdf (selectable text, bookmarks kept)
https://x.com/yuhasbeentaken/status/2109235513102057828
11. 검증 및 출시 - 동등성 입증, MCP 노출
원본의 소스 코드는 없었으므로 한 줄씩 비교할 수는 없습니다.
대신 동작을 비교합니다. 원본과 재구축한 앱에 동일한 입력을 주고 출력이 같은지 확인하세요.
1원본 바이너리와 내 재구축 버전을 비교하는 동작 테스트 하네스를 만들어.2350 개의 입력을 생성해: 정상 30 개, 엣지 케이스 10 개(빈 값, 최대 크기, 유니코드, 특수 문자),4오류 10 개(잘못된 형식, 누락된 필드, 손상됨). 각각을 양쪽에 실행해. 가능한 경우 출력을5바이트 단위로 비교하고, 그렇지 않으면 의미론적으로 비교해. 일치율, 차이점 목록,6각 항목의 심각도(화면 표시 / 동작 / 치명적)를 보고해. report.md 에 저장해.
이는 누구에게든 보여줄 수 있는 가장 설득력 있는 증거이기도 합니다(기사 최상단의 RE 슬롯 참고).

그다음 REA 와 WordCraft 가 그랬던 것처럼 재구축한 버전을 MCP 서버로 출시하세요. 다음 사람의 에이전트가 당신이 REA 를 조종했던 것과 똑같이 이를 제어할 수 있게 됩니다.
각 함수에 명확한 이름과 설명을 부여하고, 간단한 명령줄 툴로 감싸며, 한 줄로 설치할 수 있게 만드세요.
https://x.com/0xMovez/status/2108884063515746410
끝이 아니라 진행하면서 테스트하세요. 위에 세 개의 계층을 쌓은 뒤에 발견한 실수는 수정 비용이 훨씬 비쌉니다.
주말을 날리는 여섯 가지 실수
- Electron 앱에 디스어셈블러를 여는 것. JavaScript 가 그대로 있다면 analyze_javascript_application 으로 라우팅하고 네이티브 경로를 완전히 건너뛰세요.
- 아무것도 읽기 전에 전부 덤프하는 것. 먼저 REA 에게 요약을 요청하세요. 앱 전체를 한 번에 끌어오면 진짜 로직이 노이즈에 묻히고 비용만 늘어납니다.
- 파일 순서대로 함수를 읽는 것. 교차 참조 수로 정렬하세요. xref 147 개인 함수가 아키텍처이고, 2 개인 헬퍼는 나중에 해도 됩니다.
- 3 단계 난독화에 매달리는 것. 벤치마크에서 다중 레이어 해결률은 0% 입니다. 예산을 설정하고, 이웃의 맥락을 확보해 둔 뒤 나중에 돌아오세요.
- 모델이 재구축물에 코드를 복사하게 두는 것. 클린룸 원칙을 위반합니다. 한 컨텍스트에서 먼저 명세를 작성하고, 다른 컨텍스트에서 명세만 보고 구현하세요.
- 동등성 보고서 없이 출시하는 것. "일치하는 것 같다"는 증거가 아닙니다. 50 개의 동작 테스트와 일치율이 증거입니다.
결론:
REA 를 설치하세요. 바이너리를 읽으세요. 그리고 당신만의 것으로 재구축하세요.
대상을 라우팅하고, 표면을 매핑하고, 핵심 함수를 디컴파일하고, Opus 5.5 가 모든 것에 이름을 붙이게 하고, 깨뜨릴 가치가 있는 난독화를 풀고, 스웜으로 확장하고, 깔끔하게 명세화한 뒤 MCP 로 재구축물을 출시하세요.
11 단계. 하나의 모델. 복사된 코드 제로.





