Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
도구/GitHubGitHub/kernullist/windbg-decompile-ext
Static AnalysisDynamic Analysis (Sandboxing)Code AnalysisReverse EngineeringDebuggersMalware AnalysisBinary AnalysisLearning & EducationAI-Assisted ReversingFirmware AnalysisBinary Exploitation
11211633개월 전Kitploit 검토 완료
GitHub
kernullist/windbg-decompile-ext

windbg-decompile-ext

실시간 함수를 디스어셈블하고 LLM을 사용하여 검증된 의사 코드를 생성하는 WinDbg x64 확장 프로그램.

저장소 보기

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

LLM을 통한 Windbg 디컴파일 확장

native decompile viewer

screenshot

이 프로젝트는 함수를 이름이나 주소로 확인하고, 결정론적 제어 흐름 뷰를 재구성하며, 확장에서 직접 LLM에 물어 의사 코드를 생성하는 Windows x64 WinDbg 확장 스켈레톤입니다.

레이아웃

  • src/extension: WinDbg 확장 DLL 및 !decomp 명령.
  • src/shared: 확장에서 공유하는 JSON, 분석기, 프로토콜 및 검증기 코드.
  • scripts: 빌드 및 벤더 복사 도우미.
  • third_party/dbgeng: 선택적 벤더된 dbgeng.h 및 dbgeng.lib 복사본.
  • third_party/zydis: 기본적으로 제공되는 벤더된 안정적인 Zydis 소스 트리.

현재 범위

  • x64 전용 가정
  • DbgEng를 통한 실시간 메모리 분석
  • 안정적인 니모닉/피연산자 복구를 위한 Zydis 기반 구조적 디스어셈블리
  • 심볼 영역, 언와인드 및 휴리스틱 함수 범위 복구
  • 들어오는 레지스터 인수, 스택 슬롯 로컬, 병합 후보 및 정규화된 분기 조건에 대한 SSA-Lite 스타일 복구
  • 정의-사용 힌트, 정규화된 복사/상수 표현식 및 죽은 정의 마커를 포함한 저수준 IR 값 사실
  • 레지스터 및 스택 로컬 전반에 걸쳐 수렴된 live-in/live-out 도달 정의를 위한 블록 수준 값 상태 사실
  • 자연 루프, if/else 후보, switch 후보, 루프 유도 메타데이터 및 switch 범위/기본 메타데이터에 대한 도미네이터 기반 제어 흐름 영역 사실
  • 섀도/홈 슬롯, 스택 포인터 델타, 프롤로그/에필로그 인식, no-return 호출, 테일 콜, 썽크, 임포트 래퍼 후보 및 복구된 레지스터/스택 호출 인수를 위한 x64 ABI 사실
  • 잘못된 들어오는 인수를 피하기 위한 벡터 제로 이디엄 가드와 함께 xmm0부터 xmm3까지의 SIMD/FP 인식 Microsoft x64 인수 복구
  • 포인터 유사 값, 스택 로컬, 필드 오프셋, 스케일드 인덱스 배열, 열거형 유사 비교, 비트플래그 테스트 및 vtable 후보에 대한 타입 복구 힌트
  • 메모리/문자열 도우미, 보안 쿠키, 스택 프로브, 할당자, 집계 초기화자 및 RIP-상대 전역/임포트 로드에 대한 이디엄 및 라이브러리 패턴 사실
  • 직접 호출, 레지스터/메모리 간접 호출, 가상 호출/vtable 오프셋 후보, 반환 타입, 매개변수 모델, 부작용, 메모리 효과, 소유권 힌트 및 신뢰도에 대한 호출 대상 사실
  • 제어 흐름 평탄화 디스패처, 복구된 의미론적 엣지, 불투명 조건부 데드 엣지 및 스칼라 명령어 대체 이디엄에 대한 OLLVM 스타일 난독화 사실
  • 난독 해제 준비 사실 및 복구된 난독화 사실이 유사 C 재작성을 안내할 수 있는지 여부에 대한 /deobf:on|off 제어
  • 고신호 분석기, PDB 및 관찰된 동작 사실을 명령어/블록 근거로 연결하는 증거 그래프 사실
  • 분석기 생성 의사 코드 스켈레톤, CFG 영역, 조건 및 중요한 블록에 대한 그래프 인식 요약, 순위가 지정된 고신호 사실 선택 및 대규모 사실 집합에 대한 확산 샘플링을 사용한 refine-first 프롬프팅
  • 출력 콜백이 DML을 지원할 때 엔트리/기본 블록/증거/호출 대상 탐색을 위한 WinDbg DML 링크
  • 간략, 증거 설명, 사실 전용, 디버그 프롬프트, JSON 및 데이터 모델 스타일 출력을 위한 분리된 결과 모드
  • no-return, 타입, 필드 및 이름 바꾸기 힌트에 대한 사용자 수정 스위치
  • 라이브, 덤프, 커널 및 TTD 유사 세션에 대한 세션 인식 분석 정책 사실
  • 현재 디버거 컨텍스트에서 관찰된 동작 사실(가능한 경우 레지스터 인수 샘플, 메모리 핫스팟 및 TTD 쿼리 제안 포함)
  • LLM 프롬프팅을 위한 RIP 상대 문자열/전역/IAT 분류 및 호출 대상 시그니처 힌트
  • LLM 프롬프팅을 위한 로드된 PDB 인식 프로토타입, 범위 지정 매개변수/로컬, 필드, 열거형 및 소스 라인 힌트
  • 확장에서 직접 인프로세스 LLM 호출
  • OpenAI 호환 HTTP 어댑터 또는 결정론적 모의 폴백
  • LLM 출력에 대한 검증기 패스

WinDbg 사용법

빌드 출력에서 확장을 로드한 다음, 심볼 또는 주소에 대해 !decomp를 실행합니다:```text .load C:\path\to\decomp.dll !decomp /doctor !decomp module!FunctionName !decomp 0x7ffb`12345678

설정이 잘못된 것 같거나 LLM 제공자를 활성화하기 전에 `/doctor`를 사용하세요:```text
!decomp /doctor
!decomp /doctor:net
  • /doctor는 대상(target)이 필요하지 않으며 공급자(provider)를 호출하지 않습니다. 설정 경로/로드 상태, 공급자/모델/엔드포인트 요약, 비밀(secret) 없이 인증(auth) 존재 여부, 타임아웃/토큰/청크(chunking) 설정, DML 지원, 세션 클래스/한정자(qualifier), 프로세서 유형 및 PDB 주의사항을 보고합니다.
  • /doctor:net은 명시적인 네트워크 확인 요청으로 허용되지만, 현재 공급자 핑(ping)이 생략되었다고 보고합니다. 확장 프로그램은 닥터 모드에서 네트워크 프로브(probe)를 수행하지 않습니다.
  • API 키, 베어러 토큰(bearer token), 리프레시 토큰(refresh token), URL 쿼리 문자열과 같은 비밀 값은 출력되지 않습니다.

대상(target)은 공개/비공개 심볼(symbol), 내보낸 함수 이름 또는 주소(address)가 될 수 있습니다. 대상이 함수 내부의 주소로 확인되는 경우, 확장 프로그램은 심볼, 되감기(unwind) 데이터 및 제어 흐름 휴리스틱(heuristic)에서 포함하는 함수 범위를 복구하려고 시도합니다. 공백이 포함된 대상은 따옴표로 묶습니다:```text !decomp "my module!Function With Spaces"

일반적인 명령 경로는 로컬 분석을 수행하고, 분석기 사실을 구축하며, 선택적으로 구성된 LLM 엔드포인트를 호출하고, 복구된 증거에 대해 응답을 검증한 후, 의사 C 코드와 신뢰도, 경고 및 불확실성 메모를 출력합니다:```text
!decomp ntdll!RtlAllocateHeap
!decomp kernel32!Sleep
!decomp game.exe!CheckIntegrity

Normal, brief, explain 출력에는 /verbose 없이도 간결한 진행 상황 스트림이 포함됩니다. 긴 LLM 실행에서는 로컬 분석 완료, 청크 진행 상황, 재시도 알림, 병합 시작, 검증 및 Ctrl+Break 취소 힌트가 표시됩니다. /view:json, /view:facts, /view:prompt, /view:data와 같은 기계 판독 가능 모드는 진행 줄과 DML 도우미 링크를 생략하여 스크립트가 요청된 페이로드만 수신하도록 합니다.

/view:*를 사용하여 보고 싶은 내용을 선택하세요. 이렇게 하면 명령어 표면이 작게 유지됩니다. 하나의 옵션으로 모든 출력 모드를 제어할 수 있습니다.```text !decomp /view:brief module!HotPath !decomp /view:explain module!BranchyFunction !decomp /view:json module!FunctionName !decomp /view:facts module!FunctionName !decomp /view:prompt module!FunctionName !decomp /view:data module!FunctionName !decomp /view:analyzer module!FunctionName !decomp /view:plan module!FunctionName

- `brief`는 대상, 신뢰도, 요약, 그리고 첫 번째 불확실성 또는 검증 경고를 출력합니다.
- `explain`은 증거, 제어 흐름, 타입 힌트, 관찰된 동작, 호출 대상 섹션을 추가합니다.
- `json`은 기계가 읽을 수 있는 요청 및 응답 JSON을 출력합니다.
- `facts`는 분석기 사실만 출력하고 LLM 경로를 비활성화합니다.
- `prompt`는 정확한 시스템 프롬프트, 사용자 프롬프트 및 프롬프트 사실을 출력합니다. LLM 호출을 비활성화합니다.
- `data`는 WinDbg JavaScript/NatVis 스타일 자동화에 사용하기 위한 안정적인 JSON 스냅샷을 출력합니다.
- `analyzer`는 LLM을 호출하지 않고 결정론적 분석기 전용 의사 코드 경로를 렌더링합니다.
- `plan`은 LLM을 호출하거나 결과 캐시를 업데이트하지 않고 로컬 분석을 수행하고 사전 점검 계획을 출력합니다. 대상/모듈/범위 개수, PDB 가용성, 세션 정책, 예상 청킹, 프롬프트 크기 관련 개수 및 실용적 권장 사항을 포함합니다.

명령이 멈춘 것처럼 보이거나 전체 진행 스트림을 보려면 `/verbose`를 사용하세요.```text
!decomp /verbose module!SlowFunction
!decomp /verbose /view:json module!SlowFunction
  • /verbose는 대상 확인, 함수 범위 복구, 바이트 읽기, 디스어셈블리, 분석기 사실 구성, PDB/세션 강화, 의사 코드 토큰화, 검증기 결과와 같은 로컬 단계를 출력합니다.
  • LLM 모드에서 /verbose는 프롬프트 크기, 요청 토큰 예산, HTTP 연결/전송/수신 단계, 응답 청크 크기, 완료 이유, 추출된 모델 JSON 미리보기, 재시도 횟수 및 검증기 피드백 재시도 결정을 출력합니다.
  • API 키는 출력되지 않습니다. 요청/응답 로그는 전체 헤더나 전체 프롬프트 본문 대신 크기와 짧은 미리보기를 표시합니다.
  • /verbose는 간결한 진행 스트림을 전체 추적으로 대체합니다. 간결한 진행 줄로 시간이 어디에 소비되는지 진단하기에 충분하지 않을 때 사용하십시오.
  • 장기 실행 !decomp 명령 중 WinDbg에서 Ctrl+Break를 눌러 취소를 요청하십시오. 확장 프로그램은 로컬 분석 단계 사이 및 LLM 작업자를 기다리는 동안 인터럽트를 확인한 다음 활성 동기 HTTP I/O에 중지를 요청합니다.

/brief, /explain, /json, /facts-only, /debug-prompt, /data-model, /dx, /no-llm과 같은 레거시 별칭은 여전히 이전 스크립트에서 작동하지만, 새 예제에서는 /view:*를 사용합니다.

Window viewer:```text !decomp /view:window module!FunctionName !decomp /view:window /view:explain module!FunctionName

- `/view:window`는 대상에 대해 일반적인 `!decomp` 결과 경로를 실행하고, 전체 렌더링된 결과를 별도의 뷰어에서 엽니다.
- 뷰어는 콘솔 경로와 동일한 응답 렌더러를 사용한 후, 디버거 창이 발견될 경우 그 창이 소유하는 네이티브 Win32 모덜리스 도구 창을 엽니다.
- 디버거 출력은 네이티브 뷰어 창 핸들을 보고합니다. 뷰어 창을 생성할 수 없으면 명령이 경고를 출력하고 일반 콘솔 결과로 대체됩니다.
- DML 전용 링크는 뷰어에서 명령 문자열과 함께 텍스트 레이블로 렌더링됩니다. RichEdit을 사용할 수 있는 경우 창은 섹션 제목, 메타데이터 스타일링 및 의사 코드 강조를 포함한 GitHub 스타일의 RTF 레이아웃을 사용하며, 그렇지 않으면 일반 텍스트로 대체됩니다.
- 현재 세션에 이전에 캐시된 결과가 있는 경우 뷰어는 왼쪽에 기록 목록을 표시하여 분석을 다시 실행하지 않고도 현재 출력과 이전 디컴파일 결과 간에 전환할 수 있습니다.
- `/view:json`, `/view:facts`, `/view:prompt`, `/view:data`는 기계가 읽을 수 있는 콘솔 출력으로 유지되며 뷰어로 리디렉션되지 않습니다.```text
!decomp /limit:deep module!LargeFunction
!decomp /limit:huge module!VeryLargeFunction
!decomp /limit:12000 module!VeryLargeFunction
!decomp /timeout:120000 module!SlowFunction
  • /limit:deep 명령어 상한을 8192로 올립니다.
  • /limit:huge 명령어 상한을 16384로 올립니다.
  • /limit:N 명령어 상한을 명시적으로 설정합니다.
  • /timeout:MS 이 호출에 대한 요청 시간 제한을 재정의합니다.
  • LLM 청킹은 decomp.llm.json에 의해 제어됩니다. 명령줄 명령어 상한은 확장 프로그램이 프롬프트 전에 복구를 시도하는 로컬 코드의 양을 제어합니다.
  • 레거시 /deep, /huge, /maxinsn:N은 계속 지원됩니다.

난독화 인식 디컴파일:```text !decomp /deobf:on module!FlattenedFunction !decomp /deobf:off module!FlattenedFunction !decomp /view:facts /deobf:off module!FlattenedFunction

- `/deobf:on`이 기본값입니다. 분석기는 여전히 원시 사실을 출력하지만, 높은 신뢰도의 OLLVM 스타일 디스패처 복구, 불투명한 데드 엣지 증명, 대체 관용구, 의미론적 CFG 오버레이가 프롬프트 사실, 병합 정책, 검증기 충돌 정책, 구조화된 의사 C 복구를 안내할 수 있습니다.
- `/deobf:off`는 `obfuscation`, `semantic_control_flow`, `deobfuscation_readiness` 사실을 계속 표시하지만, 재작성 안전 동작을 비활성화하고, 제어 흐름 구조화를 원시 CFG에 유지하며, 프롬프트/병합/검증기 경로가 원시 난독화된 형태를 보존하도록 지시합니다.
- 디스패처, 가짜 분기(bogus branch) 또는 대체 표면을 확장 프로그램에 요청하지 않고 직접 검사하려면 `/deobf:off`를 사용하세요.
- `/deobfuscation:on|off`는 더 긴 별칭으로 허용됩니다.
도구 다운로드