콘텐츠로 이동

RetDec - 재타겟팅 가능한 기계 코드 디컴파일러 치트시트

RetDec - 재타겟팅 가능한 기계 코드 디컴파일러 치트시트

RetDec (Avast의 재타겟팅 가능한 디컴파일러)는 오픈 소스 기계 코드 디컴파일러로, 컴파일된 바이너리를 읽을 수 있는 고수준 코드로 변환합니다. “재타겟팅 가능한”이 핵심 속성입니다: 하나의 아키텍처에 대해 구축되기보다는 많은 명령 집합을 들어올립니다 — x86, ARM, MIPS, PIC32, PowerPC — LLVM IR로, 그 후 그 공통 표현을 C 또는 Python 같은 의사 코드로 디컴파일합니다. 독립형으로 실행되며 IDA, Ghidra, radare2와 통합됩니다.

설치

방법방법
릴리스 빌드GitHub Releases에서 사전 구축 패키지 다운로드
소스에서CMake 빌드 (리포지토리의 빌드 문서 참조)
Dockerdocker run -v "$PWD:/dst" retdec/retdec
확인retdec-decompiler --version

기본 디컴파일

명령어설명
retdec-decompiler binary.exebinary.exe.c로 디컴파일
retdec-decompiler -o out.c binary출력 경로 선택
retdec-decompiler --backend-no-debug binary더 깔끔한 출력
retdec-decompiler --cleanup binary중간 파일 제거
retdec-decompiler --help전체 옵션 목록
# 디컴파일 및 결과 읽기
retdec-decompiler suspicious.exe
less suspicious.exe.c

출력 형식

플래그생산
(기본값)C 소스
-f pyPython 같은 의사 코드
--backend-emit-cfg제어 흐름 그래프
--backend-emit-cg호출 그래프
--config out.json구조화된 분석 설정/결과
LLVM IR디컴파일 중 중간 .ll 출력

지원되는 아키텍처

아키텍처형식
x86 / x86-64PE, ELF, Mach-O
ARM / ThumbELF, PE, raw
MIPSELF, raw
PIC32ELF, Intel HEX
PowerPCELF

광범위한 아키텍처 지원은 RetDec를 임베디드 및 펌웨어 작업에 특히 유용합니다. 여기서 MIPS 및 PIC32 바이너리는 일반적이며 주류 디컴파일러는 더 적습니다.

유용한 옵션

옵션효과
-a arch아키텍처 강제
-e endian엔디안 설정 (little/big)
-m mode모드: bin, raw, ll
--raw-entry-point ADDRraw 바이너리의 엔트리 포인트
--raw-section-vma ADDRraw 코드의 로드 주소
--select-ranges A-B주소 범위만 디컴파일
--select-functions f1,f2특정 함수만 디컴파일
# Raw 펌웨어 블롭: RetDec에 로드 방법 알리기
retdec-decompiler -m raw -a mips -e big \
  --raw-entry-point 0x80000000 --raw-section-vma 0x80000000 firmware.bin

분석 기능

기능제공
파일 형식 감지PE/ELF/Mach-O 파싱
컴파일러/패커 감지도구 체인 지문
서명 기반 함수 ID정적으로 링크된 라이브러리 코드 인식
타입 재구성구조 및 타입 복구
디버그 정보 사용DWARF/PDB 사용 가능할 때

라이브러리 함수 식별은 실제로 매우 중요합니다: 정적으로 링크된 libc의 수천 줄을 건너뛰고 응용 프로그램 자체 논리에 집중할 수 있습니다.

통합

도구플러그인
IDA ProRetDec IDA 플러그인
GhidraRetDec Ghidra 플러그인
radare2r2retdec
APICLI/config를 통해 프로그래밍 방식으로 디컴파일

RetDec vs 다른 디컴파일러

측면RetDecGhidraHex-Rays (IDA)Binary Ninja
비용무료/오픈소스무료/오픈소스상용상용
아키텍처많음 (PIC32 포함)많음많음 (디컴파일러 라이선스당)많음
대화형아니오 (배치)예 (GUI)
최적 대상배치/스크립트된 디컴파일, 임베디드대화형 RE최고 품질 출력모던 API/UX

대화형 작업을 위해 Ghidra를 보완합니다 — RetDec은 자동화된 파이프라인과 이상한 아키텍처에서 빛을 발합니다.

리소스