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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
spectrIDA-Reverse_Engineering_Stack — 병렬 IDA Pro 바이너리 분석, AI 기반 함수 명명, Neo4j 지식 그래프, phantomrt 에뮬레이션/후킹/퍼징 엔진을 활용한 PE, ELF, NSO 형식의 자동 리버스 엔지니어링 | Kitploit
도구/GitHubGitHub/ggfuchsi-oss/spectrida-reverse_engineering_stack
Static AnalysisDynamic Analysis (Sandboxing)ExploitationReverse EngineeringDebuggersFuzzingMalware AnalysisCTFBinary Analysis
AI-Assisted Reversing
Firmware Analysis
GitHubggfuchsi-oss/spectrida-reverse_engineering_stack

spectrIDA-Reverse_Engineering_Stack

병렬 IDA Pro 바이너리 분석, AI 기반 함수 명명, Neo4j 지식 그래프, phantomrt 에뮬레이션/후킹/퍼징 엔진을 활용한 PE, ELF, NSO 형식의 자동 리버스 엔지니어링

저장소 보기
4991152개월 전Kitploit 검토 완료

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

👻 spectrIDA

바이너리를 통과하는 유령.

로컬에서 실행되는 AI 기반 리버스 엔지니어링 도우미: 병렬 IDA Pro 분석, AI 함수 이름 지정, 불편함 없는 터미널, 지금까지 파악한 모든 내용을 담은 Neo4j 지식 그래프, 그리고 Claude가 해당 그래프를 직접 검색하고 연결할 수 있게 해주는 MCP 서버.

그리고 이제 — phantomrt 덕분에 — 단순히 벽을 읽는 것을 넘어, 벽을 통과합니다: 이름 붙인 함수를 에뮬레이트, 후킹, 퍼징하고, 실제로 일어난 일을 그래프에 기록합니다.

``` spectrida analyze GameAssembly.dll --workers 16 ``` # Patches & Payloads (HTTPS/HTTP)
bindPort    -  리버스 쉘 페이로드를 HTTPS 또는 HTTP 프로토콜을 사용하여 특정 포트에서 수신 대기하는 서버로
               설정합니다.
payload linux/meterpreter/reverse_tcp

bindPort    -  직접 연결 페이로드를 수신 대기할 포트를 설정합니다.
payload windows/meterpreter/reverse_https

bindPort    -  직접 연결 페이로드를 수신 대기할 포트를 설정합니다.
payload linux/x86/shell_reverse_tcp

bindPort    -  직접 연결 페이로드를 수신 대기할 포트를 설정합니다.
payload windows/x64/meterpreter/reverse_tcp

bindPort    -  직접 연결 페이로드를 수신 대기할 포트를 설정합니다.
payload java/meterpreter/reverse_tcp

bindPort    -  직접 연결 페이로드를 수신 대기할 포트를 설정합니다.
payload python/meterpreter/reverse_tcp

◈ spectrIDA ▸ GameAssembly.dll

✓ 00 ✓ 01 ✓ 02 ✓ 03 ▸ 04 · 05 · 06 · 07 ✓ 08 ✓ 09 ✓ 10 ✓ 11 ✓ 12 ✓ 13 ▸ 14 · 15

14/16 shards │ 141,203 functions found ████████████████████████████░░░░ 89% ~4s remaining

---

## 개요

IDA Pro의 자동 분석은 단일 스레드로 동작합니다. 34MB 크기의 il2cpp DLL에서는 *몇 분*이 걸립니다. spectrIDA는 바이너리를 N개의 샤드로 분할하고, idalib을 통해 병렬로 실행한 후, 하나의 `.i64`로 병합합니다. 그런 다음 미세 조정된 8B 모델이 **모든 함수에 이름을 지정**합니다. 이 모든 작업을 사이버펑크 테마와 딱 적당한 양의 비꼼을 가진 하나의 터미널 UI에서 수행합니다.

이것이 1장이며, 독립적으로 작동합니다: 원하지 않으면 AI 없이도 순수한 속도만으로 사용할 수 있습니다.

2장은 출력을 세션보다 오래 지속되는 무언가로 바꿉니다 — MCP 클라이언트(Claude, [pi](https://pi.dev), MCP를 사용하는 모든 것)가 실제로 상주할 수 있는 Neo4j 그래프로, 더 이상 디컴파일러 출력을 하나씩 복사하여 채팅 창에 붙여넣지 않아도 됩니다:```
Binary  ─▶  Parallel IDA Analysis  ─▶  Demangle  ─▶  AI Naming  ─▶  Neo4j Graph  ─▶  MCP Server  ─▶  Claude
              (N idalib shards)       (free, real)   (stripped     (persists,        (search/chain/
                                                       leftovers     forever,          rename, live)
                                                       only)         across sessions)

3장(phantomrt)은 정적 도구가 절대 갖지 못하는 절반을 추가합니다. 즉, 코드를 실행합니다. OS 없이 함수를 에뮬레이션하거나(실행조차 할 수 없는 바이너리(예: Switch .nso)에서 작동), 라이브 프로세스에 후크를 걸거나 퍼징합니다. 그리고 평결(crashes / needs live state / clean)을 이름과 동일한 그래프 노드에 스탬프합니다.

아직 할 일 목록에 있는 것을 포함한 전체 요약은 2장과 3장에 있습니다.

Ghidra가 아닙니다. 한 가지 귀찮은 일(느린 분석 + 이름 지정)을 빠르게 처리하며, 사용하는 것이 정말 재미있습니다. 199회 다운로드가 증명합니다.

클라우드 없음. 텔레메트리 없음. 전적으로 사용자 머신에서 실행됩니다.


수치

tasktime
Among Us DLL — 단일 스레드 IDA~4 hours
Among Us DLL — spectrIDA (16개 워커)67 seconds
153,649개 함수 바이너리 — 전체 네이밍 패스overnight
바이너리 개요 (이 바이너리는 무엇을 하나요?)~30 seconds

측정에 사용된 하드웨어: AMD Ryzen 7 5800X3D (8C/16T), 32 GB RAM, RTX 4070 12 GB. 하드웨어가 다르면 병렬 분석 숫자(코어가 많을수록, 샤드가 많을수록, 더 빠름)가 변하고; 이름 지정 숫자는 대부분 GPU에 의해 제한됩니다. 4시간/67초 Among Us 수치는 2장 이전의 것이며 모든 릴리스에서 독립적으로 재검증되지 않습니다 — 자신의 머신과 바이너리에 대한 숫자를 원한다면 spectrida analyze를 직접 다시 실행하세요. 결과는 샤드 밀도와 바이너리 크기에 따라 다릅니다.

2장 개발 중 실제로 재검증된 수치, 동일한 하드웨어:

binaryfunctionstasktime / result
test_small.dll (PE)189병렬 분석, 4개 워커, CLI6.4s
test_small.dll (PE)164전체 MCP 파이프라인 (분석 + 디맹글 + 그래프 쓰기)9.8s
main.nso — Mario Odyssey (NSO), 16 workers28,038 seed functions병렬 샤드 스캔 단계54.5s
main.nso — Mario Odyssey (NSO), 16 workers74,790 total functions+ 병합/전체 분석 단계143.1s
main.nso — Mario Odyssey (NSO), 16 workers74,790 total functions엔드투엔드 벽시계 시간197.6s
main.nso — Mario Odyssey (NSO)74,790디맹글링만으로 해결됨 (Itanium ABI, 무료, AI 없음)67,300 (90.0%)

해당 NSO 행은 예전 Among Us의 "4시간 → 67초" 주장의 실제 등가물로, 이 릴리스에서 74,790개 함수를 가진 Switch 바이너리에서 새로 측정되었으며 AI 이름 지정은 포함되지 않았습니다 (디맹글링만 — populate=False). 병렬 단계(16코어, 약 55초)는 초기 샤드 검색을 수행하고; 병합 단계(약 143초)는 설계상 단일 스레드입니다 — IDA 데이터베이스 하나, 작성자 하나 — 따라서 작업 관리자에서 해당 부분을 보는 동안 15개의 코어가 잠자는 것을 본다면, 이는 버그 보고서가 아니라 물리학입니다.

여기서 정직한 숫자를 얻는 것은 그 자체로 작은 공포 이야기였습니다. NSO 지원의 첫 번째 버전은 깨끗하게 실행되고, 0으로 종료되며, 대략 75,000개의 함수가 있는 바이너리에 대해 자랑스럽게 727개의 함수를 반환했습니다 — 충돌이 아니라, 그냥 화려하게, 자신만만하게 틀렸으며, 이는 어쩐지 더 나쁩니다. IDA에는 기본 NSO 로더가 없어서, 파일이 조용히 일반 x86("metapc")으로 로드되었습니다. Switch는 출시 이후로 ARM64임에도 불구하고요. 모든 샤드가 순수 AArch64 명령어에 대해 x86 프롤로그 스캐너를 실행하고 우연히 일치하는 것을 "함수"라고 불렀습니다. 아키텍처를 수정하는 것만으로는 아무것도 고쳐지지 않았습니다. 바이너리가 메모리에서 또한 여전히 LZ4 압축되어 있었기 때문입니다 — 그래서 스캔된 것의 절반은 관대하게 말해 노이즈였습니다. 그리고 제대로 압축이 풀리고 AArch64로 플래그가 지정된 후에도, 각 샤드는 바이너리의 자신의 작은 조각 내에서만 호출 대상을 찾고 있었고, 샤드 경계를 넘는 모든 호출을 놓쳤습니다 — 이 크기의 바이너리에서는 대부분의 호출이 그렇습니다. 세 가지 버그, 하나의 숫자, 그리고 그 중 어느 것도 예외를 던지는 예의를 갖추지 못했습니다. (또한 IDA의 스택 프레임 분석을 건너뛰어 병합 단계를 줄여보려고 했습니다 — 아름다운 속도 향상과 Hex-Rays가 그 절반의 디컴파일을 정중히 거부하는 데이터베이스를 얻었습니다. 즉시 되돌렸습니다. 대신 훨씬 작고 훨씬 안전한 FLIRT-서명 건너뛰기를 유지했는데, 이는 어깨를 으쓱할 만한 약 3%의 가치가 있었고 아무것도 깨지 않았으며, 이쯤 되면 유지할 가치가 있는 성격 특성처럼 느껴졌습니다.)

이름 지정 정확도에 관하여: Ghidra 수준의 정답이 아니라, 의사 코드에서 추측하는 8B 모델입니다. 일반적인 헬퍼/게터는 대체로 잘 맞습니다; 깊은 게임 특화 로직은 동전 던지기에 가깝습니다. 잘못된 것은 다시 이름을 지정하세요 — 이것이 rename_function이 그래프로 바로 유지되는 이유입니다.


기능

  • 병렬 샤드 분석 — 주소 공간 샤드로 분할하고, N개의 idalib 인스턴스를 실행하며, 하나의 .i64로 병합합니다. 워커는 플래그, 설정 또는 환경 변수를 통해 구성 가능합니다.
  • 플러그 가능한 형식 지원 — PE, NSO(Switch) 및 ELF(.so/Linux)가 내장되어 제공됩니다; 새 형식을 추가하는 것은 단일 파일이며, 핵심 변경 사항이 없습니다. spectrida formats는 등록된 형식을 나열합니다. 새 바이너리 형식 추가를 참조하세요.
  • AI 함수 이름 지정 — 미세 조정된 Qwen3-8B가 Ollama를 통해 로컬에서 실행되며, 이름을 토큰 단위로 스트리밍합니다. N을 누르세요. 생각하는 것을 지켜보세요. 이름이 나타납니다.
  • 배치 이름 지정 — B를 눌러 목록의 모든 sub_* 함수에 이름을 지정하세요. 자리를 비우세요. 돌아오세요.
  • 바이너리 개요 — O를 누르거나 spectrida overview file.i64를 실행하세요. 모델이 120개의 샘플링된 함수 이름을 읽고 바이너리가 무엇을 하는지, 서브시스템이 무엇인지, 그리고 보안 관련 사항을 알려줍니다. 153k 함수 IL2CPP 런타임을 30초 안에 정확히 식별했습니다.
  • 호출 체인 탐색기 — C는 호출자와 피호출자를 보여줍니다. 모델은 이름을 지정할 때 이를 컨텍스트로 사용합니다 — Player$$TakeDamage에 의해 호출되는 함수는 고립된 것보다 더 잘 이름이 지정됩니다.
  • 디컴파일러 보기 — D는 Hex-Rays 의사 코드를 전환합니다.
  • 내보내기 — 모든 것을 JSON, CSV, IDA .idc 스크립트 또는 심볼 파일로 덤프합니다. .idc는 모든 AI 생성 이름을 한 번의 클릭으로 모든 IDA 설치에 적용합니다.
  • 프로그래매틱 API — from spectrida.api import open_i64. TUI를 건드리지 않고 스크립트, 노트북 또는 Claude Code에서 모든 것을 제어합니다.
  • MCP 서버 — spectrida install mcp는 Claude Code 및/또는 pi에 직접 연결되며, 수동 JSON 편집이 필요 없습니다. 그러면 Claude는 Neo4j 기반 함수 그래프(이름, 의사 코드, 디스어셈블리, 호출자/피호출자)를 검색/읽기/연결하고 새로운 바이너리 자체에 대한 새 분석을 시작할 수 있습니다 — analyze_binary는 하나의 도구 호출로 전체 파이프라인(병렬 분석 → 디맹글 → AI 네이밍 → 그래프)을 백그라운드 작업으로 실행하고 폴링합니다. PE 및 NSO에서 작동합니다. 아래 2장을 참조하세요.
  • 데모 모드 (spectrida --demo) — 설정 없이 전체를 시도해보세요. IDA도, Ollama도 필요 없습니다.
  • 최초 실행 마법사 — Ollama + 모델 설치를 도와주고, IDA 설치를 자동으로 감지한 후 다시 묻지 않습니다.

설치```bash

pip install spectrida

요구 사항: **IDA Pro 9.x** with idalib · **Python 3.10+** · **Ollama**```bash
# install Ollama (Windows)
winget install Ollama.Ollama

# pull the model (8.7 GB — go get coffee)
ollama pull hf.co/gdfhhjk/spectrida-re-gguf:latest

# first run — detects your IDA install and sets everything up
spectrida onboard

# or just try the demo right now
spectrida --demo

명령어```bash

analyze a binary from scratch

spectrida analyze GameAssembly.dll spectrida analyze GameAssembly.dll --workers 8 # custom worker count

open an existing .i64 in the browser

spectrida open file.i64

ask the AI what this binary is

spectrida overview file.i64 spectrida overview file.i64 --addr 0x10001000 --addr 0x10353fd0 # include specific functions

export function names

spectrida export file.i64 -f idc # IDA script — apply names to any install spectrida export file.i64 -f json # full dump with addresses + sizes spectrida export file.i64 -f csv # spreadsheet spectrida export file.i64 -f symbols # addr name pairs spectrida export file.i64 --named-only # skip sub_* functions

도구 다운로드