
32비트 리틀 엔디언 x86 C++ 바이너리(가상 함수 테이블, RTTI, 상속 복원)를 리버스 엔지니어링하기 위한 Claude Code 스킬
C++로 컴파일된 32비트 리틀 엔디언 x86 (IA-32) 바이너리와 디스어셈블리를 리버스 엔지니어링하기 위한 Claude Code 스킬입니다. ELF 또는 PE 바이너리에서 클래스 레이아웃, vtable, 가상 디스패치, RTTI/상속 계층을 복구하며, 그 구조를 확보한 뒤에 등장하는 워크플로우까지 다룹니다: 사용자 정의 파일 형식 복구, 데이터 파일의 인덱스된 항목을 이를 사용하는 코드/엔티티로 역매핑, 그리고 그 과정에서 마주치는 난독화나 안티 디버깅 기법 인식 등입니다.
에이전트 사용을 위해 설계되었습니다: SKILL.md는 에이전트가 읽는 진입점으로, 기계적이고 잘 정의된 작업(ABI 구조체 레이아웃, 재배치 해석, 심볼 디맹글링)을 원시 디스어셈블리에 대한 추론 노력으로 소모하는 대신 scripts/recon.py를 통해 구조화된 JSON으로 앞당겨 처리하도록 작성되었습니다. 더 고급 도구(radare2, LIEF, Triton)를 사용할 수 없는 경우에도 모든 것이 수동 objdump/readelf/nm/GDB 레시피로 자연스럽게 대체됩니다.
| 영역 | 자동화 여부 | 위치 |
|---|
ELF/Itanium ABI (GCC/Clang, _Z 맹글링): vtable, RTTI, 다중/가상 상속 | 예 -- scripts/recon.py | references/itanium-abi.md |
PE/MSVC ABI (? 맹글링): __thiscall, vftable, Complete Object Locator, vbtable, 스트립된 .rdata 스캐닝 | 수동 / 스크립트 | references/msvc-abi.md |
| OOAnalyzer (Pharos / SWI-Prolog)를 통한 자동화된 C++ 클래스 복구 | 예 -- CLI / JSON | references/tool-recipes.md §12 |
| 데이터 테이블 필드 귀속 및 구조체 복구 (스트라이드 분석, 변위 엔벨로프, 타입 추론) | 수동 레시피 (REWARDS/TIE) | references/tool-recipes.md §13 |
| 프로그래밍 방식 바이너리 분석 (즉시값 xref 스위퍼, 재귀적 디스어셈블리, 경계 탐지) | 스크립트 가능 (Python + Capstone + LIEF) | references/tool-recipes.md §14 |
| 사용자 정의 바이너리 파일 형식 로더 (C++ 클래스 미관여) | 수동 레시피 | references/tool-recipes.md §9 |
| 리소스 바인딩 복구: 데이터 파일의 인덱스된 항목을 이를 사용하는 코드/소유자로 매핑 | 수동 레시피 + scripts/backward_slice.py (Triton 기반 역방향 슬라이싱) | references/tool-recipes.md §10 |
| WinDbg/DbgEng 동적 분석 (GDB가 붙을 수 없는 네이티브 Windows PE 바이너리) | 수동 레시피 | references/tool-recipes.md §11 |
| 난독화 인식 (정크 코드, 불투명 프레디킷, xref 회피 트릭) | 수동 레시피 | references/obfuscation.md |
| 안티 디버깅 기법 인식 | 수동 레시피 | references/anti-debugging.md |
objdump, readelf, nm, c++filt, gdb (표준 binutils/GDB, 거의 모든 Linux 환경에 존재).r2pipe, 그리고 pip install lief capstone pwntools -- 자동화/구조화 레시피를 사용할 수 있게 해줍니다. 없어도 references/tool-recipes.md에 모든 것에 대한 수동 대안이 있습니다.scripts/backward_slice.py 전용: triton-library (JonathanSalwan/Triton 바이너리 분석 프로젝트)를 전용 virtualenv에 설치 -- ML 도구(PyTorch, vLLM 등)가 설치되어 있다면 일반 환경에 pip install triton-library를 하지 마세요. OpenAI의 무관한 GPU 커널 컴파일러 패키지도 triton으로 임포트 가능하여 둘이 충돌합니다. AGENTS.md와 스크립트 자체의 docstring을 참조하세요.git clone [email protected]:gavmor/x86-cpp-reversing-skill.git ~/.agents/skills/x86-cpp-reversing
ln -s ~/.agents/skills/x86-cpp-reversing ~/.claude/skills/x86-cpp-reversing
Claude Code는 "이 .exe는 무엇을 하는가", "이 바이너리에서 클래스 계층을 복구하라", "가상 호출 내부에서 왜 크래시하는가"와 같은 프롬프트에 대해 자동으로 이를 선택합니다 -- 전체 트리거 조건은 SKILL.md의 설명을 참조하세요.
SKILL.md 진입점: 워크플로우, 트리아지 단계, 반합리화 테이블, 종료 기준
AGENTS.md 이 저장소 자체 콘텐츠를 편집하는 에이전트를 위한 지침
scripts/recon.py LIEF 기반 정적 트리아지 + Itanium ABI vtable/RTTI 복구
scripts/backward_slice.py Triton 기반 역방향 슬라이싱 (자체 venv 필요, 위 참조)
references/itanium-abi.md ELF/Itanium ABI 세부 사항
references/msvc-abi.md PE/MSVC ABI 세부 사항
references/tool-recipes.md 작업별 구체적 명령어 (트리아지부터 §14까지)
references/obfuscation.md 의도적 난독화 인식
references/anti-debugging.md 안티 디버깅 기법 인식
이 스킬 자체의 콘텐츠를 확장하는 경우(단순히 대상 바이너리에 사용하는 것이 아니라), 먼저 AGENTS.md를 읽어보세요 -- 특히 외부 도구/라이브러리/논문 인용이 references/*.md에 반영되기 전에 1차 출처와 대조 검증하라는 규범을 확인하세요.