소개
dEXE는 x86_64 ELF 및 PE 바이너리를 기능적인 C99 소스 코드로 변환하는 에이전틱 디컴파일러입니다. turtle170이 개발한 이 도구는 바이너리를 디스어셈블하고, SSA 영감 중간 표현으로 변환한 후 제어 흐름을 재구성하여 컴파일 가능한 C 코드를 출력합니다. GitHub에서 Apache-2.0 라이선스로 오픈 소스 프로젝트로 제공됩니다.
상세정보
포맷 Agnostic 지원
Linux ELF와 Windows PE 형식 모두 x86_64 아키텍처에 대해 지원하며, object 크레이트를 사용하여 포맷에 구애받지 않는 디스어셈블을 수행합니다.
정확한 디스어셈블
Capstone 엔진을 탑재하여 기계어 명령을 정확하게 파싱하고 디스어셈블합니다.
기본 블록 및 제어 흐름 그래프 추출
점프, 호출, 반환 명령을 분석하여 함수와 해당 제어 흐름 그래프를 재구성합니다.
SSA 중간 표현 리프터
어셈블리 명령을 레지스터 버전 관리를 통해 Single Static Assignment 형태의 중간 표현으로 변환합니다.
C99 코드 생성기
중간 표현의 로직을 표준 goto 구조와 지역 레지스터 변수를 사용하여 컴파일 가능한 C99 소스 코드로 변환합니다.
설치 및 시작 방법
윈도우에서는 winget 패키지 관리자를 통해 다음 명령으로 설치할 수 있습니다:
winget install --id dEXE.dEXE --exact
또는 크레이트.io로부터 다음 명령으로 설치할 수 있습니다:
cargo install dexe
소스 코드로부터 직접 빌드하려면 다음 단계를 따릅니다:
- 저장소를 클론합니다:
git clone https://github.com/turtle170/dEXE.git - 디렉토리로 이동합니다:
cd dEXE - 릴리즈 빌드를 수행합니다:
cargo build --release
기본 사용법
명령줄에서 다음 형식으로 실행합니다:
dexe -i -o
자세한 로그 출력을 원할 경우 환경 변수를 설정하여 실행할 수 있습니다:
RUST_LOG=info dexe -i test.exe -o test.c
명령줄 옵션은 다음과 같습니다:
-i, --input <INPUT>: 입력 바이너리 파일 경로 (x86_64 ELF 또는 PE)-o, --output <OUTPUT>: 출력 C99 소스 파일 경로-h, --help: 도움말 출력-V, --version: 버전 정보 출력
지원 환경 및 요구사항
x86_64 아키텍처의 ELF 및 PE 바이너리 형식을 지원합니다. 다른 아키텍처나 형식은 현재 지원하지 않습니다.
버전 정보
현재 버전은 0.1.1입니다. 자세한 변경 사항은 저장소의 릴리스 노트를 참조하십시오.
제한 사항 및 확인사항
현재 x86_64 ELF 및 PE 형식만 지원하며, 다른 아키텍처나 형식은 처리하지 못할 수 있습니다. 복잡한 최적화나 인라인 어셈블리가 포함된 바이너리의 경우 디컴파일 결과가 불완전할 수 있으며, 수동 검토가 필요할 수 있습니다. 에이전틱 특성상 분석 깊이가 제한될 수 있습니다.
자주 묻는 질문 (FAQ)
dEXE는 오픈 소스인가요?
소스 코드는 GitHub 저장소에서 Apache-2.0 라이선스로 공개되어 있습니다.
어떤 바이너리 형식을 지원하나요?
x86_64 아키텍처의 ELF 및 PE 파일을 지원합니다.
설치는 어떻게 하나요?
winget 패키지 관리자를 통해 dEXE를 설치할 수 있으며, 크레이트.io 또는 소스 코드로부터도 설치 가능합니다.
시스템 요구사항
x86_64 아키텍처의 ELF 또는 PE 바이너리 파일이 필요합니다. 윈도우 환경에서는 winget을 통해 설치할 수 있으며, 크레이트.io 또는 소스 코드로부터도 설치 가능합니다.


