
Unity/IL2CPP 안드로이드 게임에 대한 교육적인 리버스 엔지니어링 연구입니다. 게이트웨이 프로토콜 디코딩, 네이티브 안티-탬퍼링 SDK 분석, SSL 피닝 우회, 그리고 Frida 기반 동적 분석 기법을 문서화합니다.
교육 프로젝트. 목표는 현대 Unity/IL2CPP 안드로이드 게임이 어떻게 통신하는지, 네이티브 보호 SDK가 어떻게 동작하는지, 그리고 실제 APK에 정적+동적 분석 기술을 적용하는 방법을 이해하는 것입니다.
이 저장소는 com.run.tower.defense (왕좌의 게임: 정복)의 진행 중인 리버스 엔지니어링 연구를 문서화합니다. 이 게임은 Unity IL2CPP 런타임, 여러 네이티브 보호 SDK, 그리고 사용자 정의 바이너리 게이트웨이 프로토콜을 사용합니다.
치트, 익스플로잇, 라이브 게임 데이터 수정은 하지 않습니다. 초점은 순전히 내부 아키텍처를 이해하는 데 있습니다.
| 영역 | 상태 | 주요 발견 |
|---|---|---|
| 게이트웨이 프로토콜 (포트 30101) | 디코딩됨 | 사용자 정의 바이너리, uint16_BE 프레이밍, varint 바디, TLS 없음 |
| 오피코드 | 매핑됨 | 0x55 핸드셰이크, 0x5d 게임 액션, 0x1d 상태 동기화, 0x15 하트비트, 0x59 클라이언트 ACK |
| 좌표 인코딩 | 디코딩됨 | ASCII85 유사 4문자 → uint32 (x=왕국, y=위치) |
| 분석 API | 캡처됨 | logagent-wf.centurygame.com — JSON 이벤트, 핀되지 않음 |
| SSL 피닝 | 부분적으로 우회됨 | Java 레이어 우회됨 (OkHttp + TrustManager); 네이티브 BestHTTP 레이어 확인됨 |
| 안티 태머핑 (libnesec) | 식별됨 | Frida 연결 후 약 58초 후 프로세스 종료; 킬 함수 및 탐지 레벨 매핑됨 |
| libxt_a64.so | 식별됨 | 격리된 링커 네임스페이스에 로드된 PLT 후킹 SDK — Frida/맵에서 보이지 않음 |
| libNetHTProtect.so | 분석됨 | 네트워크 무결성 SDK; MD5 핑거프린팅; protobuf 스타일 직렬화 |
| IL2CPP 덤프 | 부분적 | 어셈블리 목록 복구됨; BestHTTP certval RVA 매핑됨 |
got-re/
├── README.md ← 이 파일
├── FLOW.md ← 발견된 전체 데이터 흐름
├── SETUP.md ← 환경 설정 가이드
├── TOOLS_AND_COMMANDS.md ← 모든 명령 및 도구 참조
├── CLAUDE.md ← AI 지원 세션을 위한 컨텍스트
├── captures/
│ ├── battle.pcap ← 게이트웨이 트래픽 샘플 (세션 1)
│ └── battle2.pcap ← 게이트웨이 트래픽 샘플 (세션 2, 더 풍부함)
└── scripts/
├── frida/
│ ├── certval_hook.js ← BestHTTP 인증서 검증 관찰
│ ├── button_hook.js ← Unity UI 버튼 이벤트 후킹
│ ├── ssl_unpin.js ← SSL 언피닝 (Java + IL2CPP 레이어)
│ └── nesec_bypass.js ← libnesec 안티 태머핑 무력화
├── analysis/
│ ├── analyze_gateway.py ← 포트 30101 pcap 캡처 파싱 및 디코딩
│ ├── analyze_mitm.py ← mitmproxy .mitm 파일 읽기 및 필터링
│ ├── decode_1d_v2.py ← 0x1d 상태 동기화 프레임 심층 디코딩
│ └── deep_analysis.py ← 좌표, JSON 조각, 오피코드 0x59
└── proxy/
├── mitm_setup.py ← 기기에 mitmproxy CA 설치
├── run_ssl_unpin.py ← mitmdump + Frida SSL 언피닝 결합 실행기
└── run_button_hook.py ← mitmdump + Frida 버튼 후크 결합 실행기
# 1. 기기에서 frida-server 시작
adb shell "su -c '/data/local/tmp/fs17 -l 0.0.0.0:37555 &'"
adb forward tcp:37555 tcp:37555
# 2. 게이트웨이 트래픽 캡처
adb shell "su -c 'tcpdump -i any -w /sdcard/session.pcap port 30101'"
# ... 게임 플레이 ...
adb pull /sdcard/session.pcap captures/
# 3. 분석
python scripts/analysis/analyze_gateway.py captures/session.pcap
전체 프로토콜 맵과 미해결 질문은 FLOW.md를 참조하세요.
환경 설정을 시작하려면 SETUP.md를 참조하세요.
Ghidra 분석, il2cppdumper 출력, 또는 추가 pcap 캡처가 있다면 — PR 및 이슈를 환영합니다.