Binary Ninja 역공학 엔지니어링
사용자가 Binary Ninja를 명시적으로 선택했거나, Binary Ninja의 중간 표현(IL)이 데이터 흐름 분석에 실질적으로 도움이 될 때, 또는 IDA/Ghidra/radare2 결과에 독립적인 교차 검증이 필요할 때 Binary Ninja를 사용합니다.
안전하게 시작하기
- 대상에 대해 작업을 수행하기 전에 관련 리포지토리 케이스 범위가 준비되었는지 확인합니다.
skills/tool-index.md에서binaryninja를 확인합니다. Binary Ninja는 상용 소프트웨어이며 유효한 Vector 35 라이선스로 수동 설치해야 합니다.- 패치를 적용하거나 데이터베이스를 저장할 때는 복사본에서 작업합니다.
- 분석 결과를 보고하기 전에 임포트/익스포트, 엔트리 포인트, 아키텍처, 파일 해시를 기록합니다.
통합 방식 선택
- GUI 또는 Python API: Binary Ninja가 이미 실행 중이거나 사용자가 직접 대화형 분석을 원할 때 선호합니다.
- 커뮤니티 MCP 브리지: 명시적으로 요청된 경우에만 사용하며, 타사 플러그인 경계를 검토한 후 사용합니다. Binary Ninja HTTP 리스너는
127.0.0.1:9009에 유지하고, 기본적으로 네트워크 노출을 활성화하지 않습니다. - 대체: Binary Ninja를 사용할 수 없거나 라이선스/API로 대상을 열 수 없는 경우
ghidra-reverse,ida-reverse또는radare2를 사용합니다.
검토된 커뮤니티 통합은 fosdickio/binary_ninja_mcp이며, GPL-3.0 라이선스, 플러그인 메타데이터 버전 1.1.0, 최소 Binary Ninja 빌드 4000을 요구합니다. 이 리포지토리는 공식 Vector 35 구성 요소가 아닙니다. 이 스킬은 2026-09-03일자 커밋 8c5134ee46e2bf44f9a4d846bd971c3e39b3e306에 대해 확인되었습니다.
Binary Ninja 측은 플러그인 관리자 또는 검토된 소스에서 설치합니다. MCP stdio 브리지의 경우, 제한 없는 패키지 대신 게시된 브리지 버전을 고정하여 사용합니다:
npx -y [email protected] --host 127.0.0.1 --port 9009
해당 명령은 사용자가 선택한 MCP 클라이언트에만 등록합니다. Binary Ninja가 실행 중이고 바이너리가 열려 있으며 localhost 플러그인 엔드포인트가 응답할 때까지 브리지는 준비되지 않습니다.
분석 워크플로우
- 열려 있는 바이너리를 열거하고 의도한 뷰를 선택합니다.
- 바이너리 상태, 엔트리 포인트, 세그먼트, 임포트, 익스포트, 대표 문자열을 캡처합니다.
- 함수를 단독으로 해석하기 전에 호출 사이트와 참조를 추적합니다.
- 읽기 쉬운 로직에는 HLIL을, 데이터 흐름에는 MLIL SSA를, 리프팅 시 명령어 수준 동작이 손실되는 경우에는 LLIL/디스어셈블리를 사용합니다.
- 이름, 주석, 타입을 점진적으로 적용하고 증거에 원래 주소를 유지합니다.
- 바이트 패치, 프로토타입 변경, 저장된 파일 쓰기를 변형으로 간주합니다. 요청된 경우에만 수행하고 원본 아티팩트를 보존합니다.
- 영향력이 큰 결론은 두 번째 증거 소스 또는 다른 디스어셈블러로 교차 검증합니다.
유용한 MCP 기능 패밀리에는 바이너리/뷰 선택, list_imports, list_exports, list_strings, decompile_function, get_il, 호출자/피호출자, 참조, 타입, 주석, 이름 변경, 바이트 패치가 포함됩니다. 모든 업스트림 함수가 존재한다고 가정하지 말고, 실시간 도구 목록을 확인하십시오.
출력
구체적인 주소, 함수 이름, IL 레벨, 지원 문자열/임포트, 신뢰도 및 재현 단계를 보고합니다. 리포지토리 전체에서 사용되는 증거 → 발견 → 경로 체인을 유지합니다.