리버스 엔지니어링(내 코드·앱 이해/분석) 요청을 안전하게 시작할 때 사용. "이 코드 뭐하는지", "이 앱 어떻게 동작", "리버싱", "분석해줘" 등 자연어 요청을 감지해 라우팅 + 동의 게이트로 안내. 방어·교육·본인 소유물 전용.
Scanned 9/3/2026
Install to Claude Code
npx -y skills add sodam-ai/SoDam-Reverse-Eng --skill re-router --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Re Router?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/sodam-ai-re-router)More formats (shields.io, HTML) on the badges page.
---
description: 리버스 엔지니어링(내 코드·앱 이해/분석) 요청을 안전하게 시작할 때 사용. "이 코드 뭐하는지", "이 앱 어떻게 동작", "리버싱", "분석해줘" 등 자연어 요청을 감지해 라우팅 + 동의 게이트로 안내. 방어·교육·본인 소유물 전용.
---
# re-router — "무엇을 하고 싶나요?" + 안전 동의 게이트
이 스킬은 SoDam-Reverse-Eng의 **입구**다. 항상 **세 가지를 순서대로** 한다:
안전 스코프 고정 → 라우팅 → 동의 게이트.
## 0. 안전 스코프 (절대 규칙 — 안전 1층: AI 출력 거부)
이 도구는 **방어·교육·본인 소유물 분석 전용**이다. 아래는 **출력 자체를 거부**한다 — 코드도, 위치도, 단계 설명도 제공하지 않는다:
- 크랙·DRM 우회·인증/로그인/라이선스 우회 방법
- "이 인증 분기를 어디서 NOP/패치하면 통과되는지" 같은 **우회 지점 지목**
- 토큰·키·비밀번호·개인정보 **추출** 방법
- 악성코드 제작·개조
거부할 때는 **짧고 친절하게** 이유를 말하고, 가능하면 방어적 대안(예: "이 코드가 안전한지 점검")을 제안한다.
> 왜 AI가 1차로 막나: deny-hook(2층)은 *도구 호출*만 막는다. 크랙 가이드가 '보고서 텍스트'로 새어 나가는 건 hook이 못 막으므로 **AI인 내가 1차 방어**다.
## 0-A. 안전장치 자가검증 (3층 무결성 — 시작 시 필수)
라우팅으로 넘어가기 전에 먼저 Bash로 `node hooks/_selftest.mjs`(설치된 플러그인 경로 기준, 인식 안 되면 `${CLAUDE_PLUGIN_ROOT}/hooks/_selftest.mjs`)를 실행한다. **결과에 ❌가 하나라도 있으면 분석을 시작하지 않고 즉시 중단**하고, 실패 항목을 그대로 보여주며 재설치·복구를 안내한다(fail-closed — 변조 의심 상태로 다음 단계를 진행하지 않는다). 04_PROJECT_SPEC.md ALWAYS DO "hook 무결성을 시작 시 검증"을 실제로 충족하기 위한 절차다.
## 1. 라우팅 (무엇을 하고 싶나요?)
사용자 의도를 확인한다. **현재 1·2·4번 활성**(2026-07-27 갱신 — 안드로이드는 2026-07-13 실사용 라이브 검증 완료가 실제 보고서 파일로 확인됨):
1. **내 코드/앱 이해·문서화** ✅ (지금 가능) → `re-analyze-mycode` 스킬로 진행
2. **안드로이드 앱 분석(APK)** ✅ (지금 가능) → `re-analyze-android` 스킬로 진행
3. 바이너리 RE (Ghidra) — 🔜 Phase 3 (골격 완료·Ghidra/Java 설치 필요, 라이브 미검증)
4. **AI 코딩 에이전트 구조 분석** ✅ (지금 가능) → `re-analyze-agent` 스킬로 진행
3을 고르면: "아직 도구 설치(Ghidra/Java)가 필요해 라이브 검증 전입니다 — 지금은 '내 코드/앱'·'안드로이드 앱 분석'·'AI 코딩 에이전트 구조 분석'이 가능합니다"라고 안내한다.
## 2. 동의 게이트 (분석 전 필수 — 통과 못 하면 분석 0건, 번호 선택 — 자연어 "예/아니오" 타이핑 요구 금지)
분석 대상 경로를 확인한 뒤, `AskUserQuestion` 도구로 아래 3개 질문을 **한 번에** 물어보세요(re-start·re-android·re-binary와 동일한 3문항·버튼 선택형 구조로 통일, 2026-07-27). 사용자가 "예"/"아니오"를 직접 타이핑하게 하지 말고, 반드시 선택지를 눌러 고르는 형태로 제시하세요:
- 질문 1 (header: "소유권") — "이 대상은 본인 소유 또는 분석 허가를 받은 것이 맞나요?"
- 옵션: "예, 맞습니다" / "아니오"
- 질문 2 (header: "분석 목적") — "이 분석은 방어·교육 목적이 맞나요?"
- 옵션: "예, 맞습니다" / "아니오"
- 질문 3 (header: "이용 동의") — "결과는 참고용이며, 안전/위험을 단정하지 않고 책임은 사용자에게 있음을 이해하셨나요?"
- 옵션: "예, 이해했습니다" / "아니오"
**세 질문 모두 "예" 계열 선택** → 3단계(진행)로. **하나라도 "아니오" 선택 또는 응답 거부** → 즉시 **중단**한다.
동의가 확인되면 아래 방법으로 `.sodam-re/consent-log.jsonl`에 한 줄을 추가한다(파일이 없으면 새로 생성, 기존 내용 뒤에 append — 덮어쓰기 금지). **JSON을 손으로 만들어 Write하거나 Bash echo/printf로 직접 쓰지 않는다** — 윈도우 경로의 백슬래시가 수동 이스케이프 누락(2026-08-19)과 셸 자체의 이스케이프 처리(2026-08-21, Git Bash가 이중 백슬래시를 다시 벗겨냄)로 **두 번** 실제로 깨진 전례가 있다:
1. `Write` 도구로 임시 스크립트 `.sodam-re/_consent_tmp.mjs`를 만든다:
```js
import fs from 'fs';
const entry = {
id: 'con-' + Date.now(),
target_scope: String.raw`<분석 대상 경로>`,
ownership: '<질문1 응답 그대로>',
disclaimer_ack: true,
agreed_at: new Date().toISOString(),
};
fs.appendFileSync('.sodam-re/consent-log.jsonl', JSON.stringify(entry) + '\n');
```
2. `Bash`로 `node .sodam-re/_consent_tmp.mjs` 실행(파일명만 넘기므로 셸 이스케이프 위험 없음).
3. 실행 후 스크립트 파일은 삭제한다.
**왜 이 방식인가**: `String.raw`는 백슬래시를 이스케이프 없이 그대로 쓸 수 있게 하고, `JSON.stringify()`가 나머지 이스케이프를 전담한다 — AI가 `\`를 `\\`로 세어 바꾸는 수작업 자체가 없어진다. `Write` 도구는 셸을 거치지 않으므로 Bash의 이스케이프 문제도 원천 차단된다.
(02_DATA_MODEL의 ConsentRecord — `session_id`는 세션 개념이 구현돼 있지 않아 SafetyLog와 동일하게 생략한다.) 기록 실패해도 분석은 계속 진행한다(감사용 기록일 뿐 동의 판정 자체엔 영향 없음 — SafetyLog와 동일한 fail-safe 원칙).
## 3. 진행
동의가 끝나면 `re-analyze-mycode`로 넘긴다. 결과는 **반드시** `re-report` 표준 형식으로 낸다.
## 4. (참고) 자연어 요청이 막막할 때
RE 요청을 어떻게 표현할지 막막하면(예: 뭘 물어봐야 할지 모르겠을 때), SoDam-Prompt가 설치되어 있다면 그쪽의 `explain-simply`·`long-text-summary` 스킬로 먼저 말을 다듬어보는 것도 방법이다. **완전히 선택 사항**이며, 없어도 위 1~3단계(라우팅·동의 게이트·분석)는 그대로 작동한다 — 이 도구는 Prompt에 의존하지 않는다.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!