
hyperion-disassembler v0.1.6stable
네이티브 멀티 아키텍처 디스어셈블러 및 디컴파일러 - PE/ELF/Mach-O, x86/x64/ARM64, Lua 스크립팅, RTTI 복구
Hyperion
네이티브 멀티 아키텍처 디스어셈블러 겸 바이너리 분석 도구입니다. PE, ELF, Mach-O, .NET 바이너리를 x86, x64, ARM, ARM64, MIPS, PPC에서 지원합니다. C++20과 ImGui로 처음부터 구축되었습니다.
단일 정적 링크 실행 파일입니다. 설치 프로그램도, 런타임 종속성도 없습니다. 3MB 미만입니다.
커뮤니티
지원 형식 및 아키텍처
| 형식 | 아키텍처 |
|---|---|
| PE (exe, dll, sys) | x86, x64 |
| ELF (so, o, 실행 파일) | x86, x64, ARM, ARM64, MIPS, PPC |
| Mach-O (dylib, 실행 파일, fat/universal) | x64, ARM64 |
| .NET (관리형 어셈블리) | CIL/IL 바이트코드 |
디스어셈블리: Zydis (x86/x64) + Capstone (ARM, ARM64, MIPS, PPC)
기능
분석
- 정렬 충돌 해소를 포함한 재귀 하강 + 선형 스윕
- x64 함수 경계를 위한 .pdata 예외 디렉터리
- RTTI C++ 클래스 복구 (vtable 파싱, 메서드 명명, 클래스 계층 구조)
- 임포트 썽크 탐지, switch/jump 테이블 해석
- Vtable 탐지, 전역 변수 탐지
- FLIRT 시그니처 매칭 (~100개 MSVC CRT 패턴)
- 패커 탐지 (UPX, Themida, VMProtect, ASPack, MPRESS)
- PDB 심볼 로딩 (DbgHelp를 통한 자동 감지)
- DWARF 심볼 로딩 (ELF용 .debug_info)
- C++ 이름 디맹글링 (MSVC + GCC/Clang)
- Noreturn/꼬리 호출/호출 규약 탐지
- 데이터플로 전파, 간접 호출 해석
- 프로시저 간 타입 전파
디컴파일러
- Ghidra 스타일 SSA 파이프라인 (p-code 리프트 → SSA → DCE → 전파 → 구조화 → 출력)
- x86/x64 및 ARM64 디컴파일러
- mark-and-sweep 죽은 코드 제거
- RTTI 인식 출력 (obj->Class::method())
- STL 컨테이너 인식 (std::string, std::vector, std::shared_ptr)
- 연산자 오버로드 탐지, for 루프 재구성
- 반환 값 전파, 호출자 저장 인자 폴딩
- 타입화된 매개변수를 포함한 Main/WinMain 탐지
- 심볼릭 데이터 주소
UI
- 4가지 테마 (Hyperion, IDA, Midnight, Custom) + 배경 이미지 지원
- 탐색 밴드 (색상으로 구분된 메모리 개요, 클릭하여 탐색)
- 색상으로 구분된 니모닉, 인라인 문자열/임포트 주석, xref 배지가 포함된 디스어셈블리
- 패치, 패턴 하이라이트, 키보드 탐색을 지원하는 헥스 에디터
- 의사 코드 패널 (F5, 복사 가능)
- 클릭 가능한 노드가 있는 제어 흐름 그래프 (Space로 그래프/디스어셈블리 전환)
- 필터 및 복사가 가능한 함수, 문자열, 임포트/익스포트 패널
- 교차 참조 팝업 (X 키) 및 탭 패널
- 엔트로피 히트맵, 호출 그래프, 스택 프레임 뷰
- 타입 시스템 (구조체, 열거형), 클래스 뷰 (RTTI 브라우저)
- 바이너리 diff, 패커 결과가 포함된 PE 헤더 뷰어
- SigMaker (자동 와일드카드, 4가지 출력 형식, 고유성 테스트)
- 검색 (텍스트, 와일드카드가 포함된 바이너리 패턴, 즉시 값)
- 뷰티파이 모드 (노이즈 숨김, 함수 코드 + 핵심 데이터만 표시)
- 컨텍스트 메뉴: C 배열, Python bytes, YARA 패턴으로 복사
- 상태 표시줄, 고정폭 코드 글꼴, 여러 글꼴 크기
스크립팅 및 플러그인
- 내장 Lua 5.4 콘솔 (View > Script Console)
- 플러그인 시스템:
plugins/폴더에.lua파일을 드롭 - 플러그인 API: 메뉴 항목, 단축키, 분석 콜백 등록
- 스크립트 API: get_name, set_name, get_insn, get_bytes, get_functions, get_xrefs_to, set_comment, goto_addr, patch_byte, get_segments, get_arch, create_function
- docs/scripting.md 및 docs/plugins.md 참조
MCP 서버 (Model Context Protocol)
- AI 통합(Cursor, Claude Desktop 등)을 위한 내장 헤드리스 MCP 서버
- AI 프롬프트를 통해 디스어셈블리, 디컴파일, xref, 바이너리 구조에 직접 접근
- 실행 파일에
--mcp를 전달하여 서버 시작:./build/Release/Hyperion --mcp(또는 플랫폼에 맞는 방법) - stdio를 통한 상태 확인, 함수 찾기, 문자열 참조, 주석/이름 수정, 디컴파일 지원
사용자 지정
- 설정 패널 (Ctrl+,): 글꼴, 색상, 키 바인딩, 고급 옵션
- 편집 가능한 키 바인딩 (누르면 할당, 유지됨)
- 사용자 테마 내보내기/가져오기 (.hth 파일)
- 커뮤니티 테마 배포를 위한
themes/폴더 - 배경 이미지 지원 (png/jpg, 불투명도 슬라이더)
- 창 불투명도, 커서 라인 색상, 테두리 반경, 스크롤바 너비, 글꼴 선택기
내보내기
- 패치된 바이너리, .asm 목록 (MASM 스타일)
- IDAPython 스크립트 내보내기
- 프로젝트 저장/로드 (.hdb 형식)
- C 배열 / Python / YARA로 복사
안정성
- 잘못된 바이너리에 대해 강화된 PE 로더
- 스레드 안전 분석 (UI로의 원자적 핸드오프)
- 메모리 최적화 (고정 크기 명령어 버퍼, 섹션 제한)
- 모든 작업에 대한 전체 실행 취소/다시 실행
- 60초마다 자동 저장
- 최소화/포커스 해제 시 크래시 없음
키 바인딩
| 키 | 동작 |
|---|---|
| G | 주소로 이동 |
| N | 이름 바꾸기 |
| ; | 주석 |
| X | 교차 참조 |
| F5 | 함수 디컴파일 |
| Space | 디스어셈블리/그래프 전환 |
| D | 데이터 정의 |
| A | 문자열 정의 |
| U | 정의 해제 |
| C | 코드로 강제 지정 |
| H | 16진수/10진수 전환 |
| P | 함수 만들기 |
| Enter | 분기/호출 따라가기 |
| Escape | 뒤로 탐색 |
| Shift+F12 | 문자열 뷰 |
| Ctrl+O | 열기 |
| Ctrl+S | 저장 |
| Ctrl+, | 설정 |
| Ctrl+F | 검색 |
| Alt+B | 바이너리 검색 |
| Ctrl+Z/Y | 실행 취소/다시 실행 |
| Ctrl+Shift+S | 시그니처 생성 |
모든 키 바인딩은 설정에서 사용자 지정할 수 있습니다.
빌드
CMake 3.25+, vcpkg, C++20 컴파일러(MSVC 2022+, GCC 13+, 또는 Clang 16+)가 필요합니다.
git clone https://github.com/Sidenai/hyperion-disassembler
cd hyperion-disassembler
cmake -B build -S . -DCMAKE_TOOLCHAIN_FILE=path/to/vcpkg/scripts/buildsystems/vcpkg.cmake
cmake --build build --config Release
정적 링크(단일 exe, DLL 없음)의 경우:
cmake -B build -S . -DCMAKE_TOOLCHAIN_FILE=path/to/vcpkg/scripts/buildsystems/vcpkg.cmake -DVCPKG_TARGET_TRIPLET=x64-windows-static
cmake --build build --config Release
종속성(vcpkg를 통해 설치): imgui (docking), glfw, zydis, capstone, spdlog, fmt, zlib, lua, stb.
플랫폼
| 플랫폼 | 상태 |
|---|---|
| Windows x64 | 완전 지원 (UI + MCP) |
| Linux x64 | 빌드 가능, 완전 지원 (UI + MCP) |
| macOS (Intel + Apple Silicon) | 빌드 가능, 완전 지원 (UI + MCP) |
상태
활발히 개발 중입니다. 지원되는 모든 형식에서 정적 분석이 가능합니다. 디컴파일러는 x86/x64 및 ARM64에서 읽을 수 있는 C 출력을 생성합니다. RTTI 클래스 복구는 난독화되지 않은 C++ 바이너리에서 작동합니다.
로드맵:
- 디버거 통합 (attach, 중단점, 안티 탐지)
- 협업 분석
- 디컴파일러 추가 개선
라이선스
MIT