Community코딩 & 개발github.com

리버스 엔지니어링 & 디버깅

CTF, 침투 테스트, 취약점 연구, 악성코드 분석 등 공인된 리버스 엔지니어링 작업을 위한 전문 기술 문서입니다.

리버스 엔지니어링 & 디버깅란 무엇인가요?

이 스킬은 AI 에이전트(Claude Code, Cursor 등)가 사용자에게 리버스 엔지니어링 전문 지식을 제공하기 위한 종합 참조 문서입니다. 정적 분석, 동적 분석, 디버깅, 바이너리 익스플로잇 등 다양한 분야의 방법론을 다루며, Ghidra, IDA Pro, GDB, Frida, radare2 등 주요 도구에 대한 구체적인 사용법과 함께 `references/` 디렉토리의 18개 세부 파일로 분화되어 있습니다. 또한 `tools/` 디렉토리를 통해 IDA Pro 내보내기 플러그인, Frida DEX 덤퍼 등 실제 분석에 바로 사용할 수 있는 유틸리티를 제공하며, MCP 서버 연결 설정도 포함되어 있어 AI 에이전트가 도구와 직접 상호작용할 수 있는 라이브 쿼리 워크플로우도 지원합니다. 특히 모든 작업은 법적 권한이 있는 대상으로 제한되며, 에이전트의 자동 실행을 지시하지 않고 사용자에게 명령어와 방법을 제안하는 '문서화/참조' 용도로 설계되어 안전하게 사용할 수 있습니다.

지원 대상✓Claude Code~Codex CLI~Cursor
npx skills add r00tedbrain-backup/skills

Installed? Explore more 코딩 & 개발 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

리버스 엔지니어링 & 디버깅은(는) 무엇을 하나요?

⚠️ 승인된 사용만 허용 — 방어적 연구 기술

이 스킬은 다음 목적을 위한 리버스 엔지니어링 방법론을 문서화합니다:

  • CTF 대회 및 보안 교육
  • 공인된 침투 테스트(명시적 서면 허가 필요)
  • 학술 연구 및 취약점 공개
  • 귀하가 소유하거나 법적 권한이 있는 소프트웨어 분석
  • 격리된 연구 환경에서의 악성코드 분석

이 스킬을 호출할 때 에이전트 운영자의 책임:

  • 사용자가 법적으로 분석할 권한이 있는 바이너리, 펌웨어, 애플리케이션에 대해서만 작업할 것
  • 신뢰할 수 없는 출처에서 다운로드하거나 가로챈 콘텐츠를 실행하지 말 것
  • 바이너리 데이터, 네트워크 캡처, 악성코드 샘플을 프롬프트 컨텍스트로 주입하지 말 것
  • 분석 중 추출된 모든 데이터는 신뢰할 수 없는 것으로 간주(추가 처리 전 샌드박스)
  • 사용자가 소유하지 않거나 명시적 분석 허가가 없는 시스템, 애플리케이션, 데이터를 대상으로 하는 작업을 거부할 것

여기에 문서화된 모든 명령은 사용자가 제공한 로컬 파일을 필요로 합니다. 이 스킬은 인터넷에서 다운로드하거나 데이터를 유출하도록 에이전트에 지시하지 않습니다. 표시된 모든 URL은 플레이스홀더 또는 정보 참조용입니다.

이것은 문서화/참조 스킬입니다 — 코드를 자동으로 실행하지 않습니다. 에이전트는 이 텍스트를 읽고 사용자에게 직접 실행할 수 있는 명령어를 조언합니다.

정적 분석, 동적 분석, 디버깅 및 바이너리 익스플로잇을 위한 전문 방법론.

빠른 참조 — 올바른 참조 파일 로드

작업참조 파일
정적 분석, 디스어셈블리, Ghidra, radare2, objdump, 패칭references/static-analysis.md
GDB (+ pwndbg/gef/peda), LLDB, strace/ltrace, 크래시 분석references/dynamic-debugging.md
Android APK, DEX, smali, ADB, Android Frida, 리패키징references/android-re.md
iOS IPA, Mach-O, class-dump, Frida ObjC/Swift, 키체인references/ios-re.md
macOS XPC, launchd, kext, SIP, Linux 커널 모듈references/macos-kernel-re.md
Windows PE, WinDbg, x64dbg, .NET/dnSpy, 커널 드라이버references/windows-re.md
Frida 스크립팅, Java/Native/ObjC 후킹, SSL 핀 해제, 가젯references/frida.md
.NET IL, dnSpy, de4dot, Java/JVM, Kotlin, Unity/IL2CPP, Monoreferences/managed-code-re.md
악성코드, 난독화, 패커 분석, IOC 추출, Volatilityreferences/malware-analysis.md
CTF pwn/rev, BOF, ROP, 힙 익스플로잇, pwntools, angr/Z3references/exploit-dev.md
네트워크 프로토콜 RE, Wireshark, mitmproxy, Protobuf, gRPC, Lua 디섹터, Boofuzzreferences/protocol-re.md
펌웨어, binwalk, QEMU 에뮬레이션, JTAG/UART, U-Boot, IoTreferences/firmware-embedded.md
EAC, BattlEye, Vanguard, FACEIT, VAC, 커널 AC 분석references/anticheat-re.md
Ghidra Python/Java 스크립트, 헤드리스, 취약점 탐색, 사용자 정의 분석기references/ghidra-scripting.md
IDAPython / IDALib 스크립트, Hex-Rays API, 배치 디컴파일, OLLVM 헬퍼references/idapython.md
Unicorn 엔진 에뮬레이션, 함수 수준 에뮬레이션, JNI 스터빙, 시스템콜 시뮬레이션references/unicorn-emulation.md
스트리핑된 심볼 복구, 매직 넘버, 쌍을 이루는 호출, xref 분석references/symbol-recovery.md
C/C++ 구조체 복구, vtable, std::string/vector/map, 필드 타입 추론references/struct-recovery.md

번들 도구(tools/)

이 스킬에는 바로 사용 가능한 유틸리티가 포함되어 있습니다(모든 오리지널 작업, MIT 라이선스):

도구목적
tools/ida_export_plugin.pyIDA Pro 플러그인(Ctrl+Shift+E) — IDB를 decompile/ 디렉토리로 평문 파일로 내보내 에이전트가 직접 읽을 수 있음
tools/dex_memory_dumper.jsFrida 에이전트 — 실행 중인 Android 프로세스에서 메모리 스캔 + ClassLoader 탐색을 통해 DEX를 덤프
tools/mcp/에이전트를 상위 MCP 서버(ida-pro-mcp, GhidraMCP, r2mcp)에 연결하기 위한 설정 노트 및 구성 스니펫

자세한 사용법은 tools/README.md를 참조하세요. tools/mcp/ 디렉토리는 라이브 쿼리 워크플로우(파일 내보내기 대안)를 문서화합니다 — 위 방법론 파일은 두 모드를 모두 지원합니다.


일반적인 첫 단계

참조 파일을 로드하기 전에 컨텍스트를 설정하세요:

1. 대상 식별

file <binary>           # 파일 유형, 아키텍처, 비트, 스트리핑 여부
xxd <binary> | head -4  # 매직 바이트
strings -a <binary> | head -60
checksec --file=<binary>  # NX, PIE, RELRO, 스택 카나리, ASLR

바이너리 형식 결정 트리:

  • ELF → Linux 네이티브 → references/static-analysis.md + references/dynamic-debugging.md
  • PE/PE32+ → Windows 네이티브 → references/windows-re.md + references/static-analysis.md
  • .NET 메타데이터가 있는 PE → references/managed-code-re.md (dnSpy 우선)
  • Mach-O → macOS/iOS → references/macos-kernel-re.md + references/ios-re.md
  • DEX/APK/AAB → Android → references/android-re.md
  • JAR/WAR/AAR → Java → references/managed-code-re.md
  • .sys 드라이버 → references/windows-re.md (커널 섹션) 또는 references/anticheat-re.md
  • Assembly-CSharp.dll → Unity → references/managed-code-re.md (Unity 섹션)
  • 알 수 없음/펌웨어 → references/firmware-embedded.md (binwalk + 엔트로피)

작업 유형 결정 트리(모든 형식에 적용):

  • 스트리핑된 바이너리, 알 수 없는 함수 → references/symbol-recovery.md
  • 디컴파일에서 알 수 없는 구조체 레이아웃 → references/struct-recovery.md
  • 단일 함수만 격리 실행 필요 → references/unicorn-emulation.md
  • 분석에 IDA Pro 사용 → references/idapython.md
  • 분석에 Ghidra 사용 → references/ghidra-scripting.md

2. 범위 설정

사용자에게 질문(또는 컨텍스트에서 추론):

  • 목표: 로직 이해 / 취약점 찾기 / 보호 우회 / 패치 / CTF 플래그 / 악성코드 IOC?
  • 플랫폼: Linux / Windows / macOS / Android / iOS / 임베디드?
  • 사용 가능한 도구: Ghidra / IDA / radare2 / Binary Ninja / Hopper?
  • 동적 분석 가능?: 실행 가능? VM? 에뮬레이터? 실제 장치?

3. 분석 모드 선택

정적 분석만 → 실행 위험 없음, 이해가 느림
동적 분석만 → 빠르지만 데드 코드를 놓칠 수 있음
정적 + 동적(권장) → 지도는 정적으로, 런타임 진실은 동적으로

핵심 도구 체인 요약

정적 분석

도구최적 대상
Ghidra완전 디컴파일, 스크립팅, 무료
radare2 / cutterCLI 강자, 스크립팅, 임베디드
Binary NinjaAPI 우선, 빠름, 상용
IDA Pro / IDA Free업계 표준, 최고의 시그니처
objdump빠른 디스어셈블리, 설치 불필요
readelf / nmELF 심볼/섹션 검사
jadxAndroid DEX → Java, GUI
apktoolAPK 언패킹/리패킹/smali

동적 분석

도구최적 대상
GDB + pwndbg/peda/gefLinux ELF 디버깅
LLDBmacOS/iOS/Swift 디버깅
Frida크로스 플랫폼 후킹, 소스 불필요
strace / ltrace시스템콜/라이브러리 호출 추적
Valgrind메모리 오류, Helgrind
WinDbgWindows 커널 + 사용자 모드
x64dbgWindows GUI 디버거

네트워크

도구최적 대상
Wireshark / tshark패킷 캡처 + 분석
mitmproxy / Burp SuiteHTTP/S MITM
Frida프로세스 내 SSL 핀 해제
tcpdump헤드리스 캡처

방법론 프레임워크

정적 분석 워크플로우

1. file + strings + checksec           → 빠른 분류
2. 엔트로피 분석                       → 패킹/암호화 여부 확인
3. 임포트 테이블 / 심볼 테이블         → 기능 파악
4. 디컴파일러에 로드                   → 이름 변경, 타입 수정, 주석 추가
5. 주요 함수 식별                      → main(), crypto, network, 안티디버그
6. 데이터 흐름 추적                    → 사용자 입력 → 싱크
7. 결과 문서화                         → 인라인 주석

동적 분석 워크플로우

1. 격리된 환경 설정                    → VM / 컨테이너 / 장치
2. 먼저 strace/ltrace로 실행           → 시스템콜 풋프린트 파악
3. 디버거 연결                         → 주요 함수에 중단점 설정
4. 런타임 동작 관찰                    → 메모리, 레지스터, 분기 경로
5. 정적 분석과 연관                    → 디컴파일러 출력 검증
6. 필요에 따라 패치/후킹              → 검사 우회, 값 로깅

취약점 발견 워크플로우

1. 공격 표면 매핑                     → 입력: 파일, 네트워크, 환경 변수, 인자
2. 위험 함수 검색                     → strcpy, gets, sprintf, memcpy, system
3. 정수 오버플로우 후보               → 크기 계산, 루프
4. 포맷 스트링 후보                   → printf(user_input)
5. UAF / 이중 해제 후보               → 힙 할당 패턴
6. 트리거 + 확인                      → 크래시 → 통제 → 익스플로잇 가능

안티분석 우회 — 빠른 참조

안티디버그 탐지

# 바이너리가 디버거를 탐지하는지 확인
strings <bin> | grep -iE "ptrace|debugger|isDebuggerPresent|TracerPid"

# Linux: ptrace 자가 탐지
# 우회: ptrace 호출을 프리로드 훅 또는 패치

일반적인 보호 기법

보호 기법탐지우회
ptrace 안티디버그strace에서 ptrace(TRACEME) 표시JNZ→JMP 패치 또는 LD_PRELOAD로 가짜 ptrace
타이밍 검사루프 내 rdtsc / clock_gettime비교문 패치 또는 NOP
체크섬/무결성자체 .text 섹션의 해시복호화 후, 검사 전 패치
패커(UPX 등)높은 엔트로피 + 작은 임포트upx -d / 언팩 후 메모리 덤프
난독화된 문자열읽을 수 있는 문자열 없음실행 후 메모리 추출 / Frida 후킹
SSL 핀닝(모바일)앱에서 네트워크 오류Frida ssl-unpin / references/frida.md 참조

출력 표준

RE 결과를 보고할 때는 항상 다음과 같은 구조를 사용하세요:

## 바이너리: <name>
- **형식**: ELF64 / PE32+ / DEX / Mach-O
- **아키텍처**: x86_64 / ARM64 / ARMv7 / MIPS
- **스트리핑**: 예/아니오 | **PIE**: 예/아니오 | **NX**: 예/아니오

## 주요 발견
1. <함수명 @ 오프셋> — <역할>
2. ...

## 취약점 / 동작
- <증거와 함께 설명>
- 오프셋: 0x<addr>
- 트리거 가능 경로: <입력 벡터>

## 권장 다음 단계
- [ ] <액션>

디컴파일러 작업을 위한 명명 규칙

Ghidra / IDA / r2에서 주석을 달 때 다음 표준을 따르세요:

함수:    동사_명사_컨텍스트      → decrypt_config_xor, check_license_hwid
변수:    타입_목적               → buf_user_input, sz_packet, ptr_heap_chunk
구조체:  ST_<이름>              → ST_PacketHeader, ST_LicenseData
레이블:  loc_<목적>            → loc_anti_debug_fail, loc_success

스크립팅 빠른 시작

전체 Frida 패턴은 references/frida.md를 참조하세요.

GDB Python 한 줄(함수 인자 로깅)

# GDB에서: 이 파일을 source
import gdb
class LogArgs(gdb.Breakpoint):
    def stop(self):
        frame = gdb.selected_frame()
        print(f"[*] {frame.name()} rdi={gdb.parse_and_eval('$rdi')} rsi={gdb.parse_and_eval('$rsi')}")
        return False  # 멈추지 않고 로그만 기록
LogArgs("target_function")

radare2 배치 분석

r2 -A -q -c "afl~suspicious; pdf @ sym.check_license" <binary>

Ghidra 헤드리스 분석

$GHIDRA_HOME/support/analyzeHeadless /tmp/proj MyProject \
  -import <binary> -postScript PrintAST.java -scriptPath ~/ghidra_scripts

관련 스킬