Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
도구/GitHubGitHub/avast/retdec
Static AnalysisReverse EngineeringMalware AnalysisBinary Analysis
GitHubavast/retdec

retdec

RetDec는 LLVM 기반의 재대상 지정 가능한 기계어 역컴파일러입니다.

저장소 보기웹사이트
8.6k9973개월 전Kitploit 검토 완료

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

경고

RetDec 프로젝트는 현재 자원 부족으로 제한된 유지보수 모드에 있습니다:

  • 풀 리퀘스트는 환영합니다. 가능하면 지연 없이 우선적으로 검토됩니다.
  • 이슈는 최대 한 분기까지 지연되어 처리됩니다. 기본 프로젝트 유지보수와 관련되지 않은 이슈는 적극적으로 해결되지 않습니다.
  • 기본 프로젝트 유지보수는 계속됩니다.
  • 매우 제한된 개발만 진행됩니다.

RetDec

Travis CI build status TeamCity build status))/statusIcon) RetDec CI

RetDec는 LLVM 기반의 재타겟 가능한 기계어 디컴파일러입니다.

디컴파일러는 특정 대상 아키텍처, 운영 체제 또는 실행 파일 형식에 국한되지 않습니다:

  • 지원되는 파일 형식: ELF, PE, Mach-O, COFF, AR (아카이브), Intel HEX 및 원시 기계 코드
  • 지원되는 아키텍처:
    • 32비트: Intel x86, ARM, MIPS, PIC32 및 PowerPC
    • 64비트: x86-64, ARM64 (AArch64)

기능:

  • 실행 파일의 상세 정보 정적 분석.
  • 컴파일러 및 패커 탐지.
  • 로딩 및 명령어 디코딩.
  • 서명 기반 정적 링크 라이브러리 코드 제거.
  • 디버깅 정보 추출 및 활용 (DWARF, PDB).
  • 명령어 관용구 재구성.
  • C++ 클래스 계층 구조 탐지 및 재구성 (RTTI, vtable).
  • C++ 바이너리 심볼 디맹글링 (GCC, MSVC, Borland).
  • 함수, 타입 및 고수준 구조 재구성.
  • 통합 디스어셈블러.
  • 두 가지 고수준 언어로 출력: C 및 Python 유사 언어.
  • 호출 그래프, 제어 흐름 그래프 및 다양한 통계 생성.

더 자세한 정보는 다음을 참조하세요:

  • Wiki (진행 중)
  • Botconf 2017 발표: 슬라이드, 비디오
  • REcon Montreal 2018 발표: 슬라이드
  • Publications

설치

RetDec을 얻고 설치하는 두 가지 방법이 있습니다:

  1. 사전 빌드된 안정 또는 최신 패키지를 다운로드하여 압축을 풀고, 압축 해제 후 retdec/share/retdec/README.md 파일의 사용 섹션에 있는 지침을 따릅니다.
  2. 빌드 및 설치 섹션의 지침에 따라 소스에서 직접 RetDec을 빌드합니다. 설치 후 아래 지침을 따릅니다.

현재 Windows (7 이상), Linux, macOS 및 (실험적으로) FreeBSD를 지원합니다. 설치된 RetDec 버전은 약 5~6GB의 여유 디스크 공간이 필요합니다.

사용

사용 중인 RetDec 버전에 해당하는 지침을 읽고 있는지 확인하십시오. 확실하지 않은 경우 설치 디렉토리의 retdec/share/retdec/README.md 파일을 참조하십시오.

Windows

  1. RetDec 설치 후 Microsoft Visual C++ Redistributable for Visual Studio 2017을 설치합니다.

  2. 다음 프로그램을 설치합니다:

    • UPX (선택 사항: 전처리 단계에서 UPX 언패커를 사용하려는 경우)
    • Graphviz (선택 사항: 호출 또는 제어 흐름 그래프를 생성하려는 경우)
  3. test.exe라는 바이너리 파일을 디컴파일하려면 다음을 실행합니다:

    root@kitploit:~
    $RETDEC_INSTALL_DIR\bin\retdec-decompiler.exe test.exe
    

    자세한 내용은 retdec-decompiler.exe --help를 실행하십시오.

Linux

  1. RetDec 설치 후 배포판의 패키지 관리자를 통해 다음 패키지를 설치합니다:

    • UPX (선택 사항: 전처리 단계에서 UPX 언패커를 사용하려는 경우)
    • Graphviz (선택 사항: 호출 또는 제어 흐름 그래프를 생성하려는 경우)
  2. test.exe라는 바이너리 파일을 디컴파일하려면 다음을 실행합니다:

    root@kitploit:~
    $RETDEC_INSTALL_DIR/bin/retdec-decompiler test.exe
    

    자세한 내용은 retdec-decompiler --help를 실행하십시오.

macOS

  1. RetDec 설치 후 다음 패키지를 설치합니다:

    • UPX (선택 사항: 전처리 단계에서 UPX 언패커를 사용하려는 경우)
    • Graphviz (선택 사항: 호출 또는 제어 흐름 그래프를 생성하려는 경우)
  2. test.exe라는 바이너리 파일을 디컴파일하려면 다음을 실행합니다:

    root@kitploit:~
    $RETDEC_INSTALL_DIR/bin/retdec-decompiler test.exe
    

    자세한 내용은 retdec-decompiler --help를 실행하십시오.

FreeBSD (실험적)

  1. 현재 FreeBSD용 사전 빌드된 "ports" 패키지는 없습니다. 디컴파일러를 직접 빌드하여 설치해야 합니다. 과정은 아래에 설명되어 있습니다.

  2. test.exe라는 바이너리 파일을 디컴파일하려면 다음을 실행합니다:

    root@kitploit:~
    $RETDEC_INSTALL_DIR/bin/retdec-decompiler test.exe
    

    자세한 내용은 retdec-decompiler --help를 실행하십시오.

RetDec 라이브러리 사용

CMake로 빌드된 경우 프로젝트에서 다양한 RetDec 라이브러리를 쉽게 사용할 수 있습니다. RetDec 설치에는 필요한 모든 헤더, 라이브러리 및 CMake 스크립트가 포함되어 있습니다.

RetDec을 시스템의 표준 설치 위치(예: /usr, /usr/local)에 설치한 경우, 해당 구성 요소를 사용하기 위해 필요한 것은 다음과 같습니다:```cmake find_package(retdec 5.0 REQUIRED COMPONENTS [...] ) target_link_libraries(your-project PUBLIC retdec:: [...] )

root@kitploit:~
RetDec를 자동으로 찾을 수 없는 위치에 설치한 경우, `find_package()`가 사용되기 전에 CMake가 이를 찾을 수 있도록 도와야 합니다. 일반적으로 두 가지 방법이 있습니다 (하나만 선택하여 사용):

1. RetDec 설치 디렉터리를 [`CMAKE_PREFIX_PATH`](https://cmake.org/cmake/help/latest/variable/CMAKE_PREFIX_PATH.html)에 추가:
    ```cmake
    list(APPEND CMAKE_PREFIX_PATH ${RETDEC_INSTALL_DIR})
    ```

2. 설치된 RetDec CMake 스크립트의 경로를 `retdec_DIR`로 설정:
    ```cmake
    set(retdec_DIR ${RETDEC_INSTALL_DIR}/share/retdec/cmake)
    ```

사용 가능한 RetDec 구성 요소 목록은 [Repository Overview](https://github.com/avast/retdec/wiki/Repository-Overview) 위키 페이지를 참조하거나, 사용 방법에 대한 데모는 [retdec-build-system-tests](https://github.com/avast/retdec-build-system-tests)를 참조하세요.

## 빌드 및 설치

이 섹션에서는 RetDec의 로컬 빌드 및 설치에 대해 설명합니다. Docker 사용에 대한 지침은 다음 섹션에 나와 있습니다.

### 요구 사항

#### Linux

* C++17을 지원하는 C++ 컴파일러 및 표준 C++ 라이브러리 (예: GCC >= 7)
* [CMake](https://cmake.org/) (버전 >= 3.6)
* [Git](https://git-scm.com/)
* [OpenSSL](https://www.openssl.org/) (버전 >= 1.1.1)
* [Python](https://www.python.org/) (버전 >= 3.4)
* [autotools](https://en.wikipedia.org/wiki/GNU_Build_System) ([autoconf](https://www.gnu.org/software/autoconf/autoconf.html), [automake](https://www.gnu.org/software/automake/), [libtool](https://www.gnu.org/software/libtool/))
* [pkg-config](https://www.freedesktop.org/wiki/Software/pkg-config/)
* [m4](https://www.gnu.org/software/m4/m4.html)
* [zlib](http://zlib.net/)
* 선택 사항: API 문서 생성을 위한 [Doxygen](http://www.stack.nl/~dimitri/doxygen/) 및 [Graphviz](http://www.graphviz.org/)

Debian 기반 배포판(예: Ubuntu)에서는 `apt-get`으로 필요한 패키지를 설치할 수 있습니다:```sh
sudo apt-get install build-essential cmake git openssl libssl-dev python3 autoconf automake libtool pkg-config m4 zlib1g-dev upx doxygen graphviz

RPM 기반 배포판(예: Fedora)에서는 필요한 패키지를 dnf로 설치할 수 있습니다:```sh sudo dnf install gcc gcc-c++ cmake make git openssl openssl-devel python3 autoconf automake libtool pkg-config m4 zlib-devel upx doxygen graphviz

root@kitploit:~
Arch Linux에서는 필요한 패키지를 `pacman`으로 설치할 수 있습니다:```sh
sudo pacman --needed -S base-devel cmake git openssl python3 autoconf automake libtool pkg-config m4 zlib upx doxygen graphviz

Windows

  • Microsoft Visual C++ (버전 >= Visual Studio 2017 버전 15.7)
  • CMake (버전 >= 3.6)
  • Git
  • OpenSSL (버전 >= 1.1.1)
  • Python (버전 >= 3.4)
  • 선택 사항: API 문서 생성을 위한 Doxygen 및 Graphviz

macOS

패키지는 Homebrew를 통해 설치하는 것이 좋습니다.

  • macOS >= 10.15
  • 전체 Xcode 설치 (명령줄 도구 포함, #425 및 #433 참조)
  • CMake (버전 >= 3.6)
  • Git
  • OpenSSL (버전 >= 1.1.1)
  • Python (버전 >= 3.4)
  • autotools (autoconf, automake, libtool)
  • 선택 사항: API 문서 생성을 위한 Doxygen 및 Graphviz

FreeBSD (실험적)

패키지는 FreeBSD의 미리 컴파일된 패키지 저장소에서 pkg 명령을 사용하거나 ports 데이터베이스 방법을 통해 소스에서 직접 빌드하여 설치해야 합니다.

  • 전체 "pkg" 도구 설명: handbook pkg method
    • pkg install cmake python37 git autotools OR
  • 전체 "ports" 설명: handbook ports method
    • portsnap fetch
    • portsnap extract
  • 예를 들어, cmake의 경우:
    • whereis cmake
    • cd /usr/ports/devel/cmake
    • make install clean

프로세스

참고: RetDec은 이제 시스템 전체 설치를 지원하지만 (#94), 배포판의 패키지 관리자를 사용하여 설치하지 않는 한, RetDec을 지정된 디렉터리에 로컬로 설치하는 것이 좋습니다. 그 이유는 단일 디렉터리만 제거하면 되므로 제거가 더 쉽기 때문입니다. 로컬 설치를 수행하려면 cmake에 -DCMAKE_INSTALL_PREFIX=<path> 매개변수를 사용하여 실행하세요. 여기서 <path>는 RetDec이 설치될 디렉터리입니다 (예: Linux 및 macOS의 경우 $HOME/projects/retdec-install, Windows의 경우 C:\projects\retdec-install).

  • 저장소 복제:
    • git clone https://github.com/avast/retdec
  • Linux:
    • cd retdec
    • mkdir build && cd build
    • cmake .. -DCMAKE_INSTALL_PREFIX=<path>
    • make -jN (N은 병렬 빌드에 사용할 프로세스 수이며, 일반적으로 코어 수 + 1이 가장 빠른 컴파일 시간을 제공합니다)
    • make install
  • Windows:
    • 명령 프롬프트 열기 (예: cmd.exe)
    • cd retdec
    • mkdir build && cd build
    • cmake .. -DCMAKE_INSTALL_PREFIX=<path> -G<generator>
    • cmake --build . --config Release -- -m

cmake에 다음 매개변수를 전달해야 합니다:

  • -DCMAKE_INSTALL_PREFIX=<path>: 설치 경로를 <path>로 설정합니다. Windows에서 백슬래시를 사용하는 경우 경로를 따옴표로 묶으세요 (예: -DCMAKE_INSTALL_PREFIX="C:\retdec").
  • (Windows 전용) -G<generator>: 32비트 빌드의 경우 -G"Visual Studio 15 2017", 64비트 빌드의 경우 -G"Visual Studio 15 2017 Win64"를 사용합니다. 이후 버전의 Visual Studio도 사용할 수 있습니다.

cmake에 다음 추가 매개변수를 전달할 수 있습니다:

  • -DRETDEC_DOC=ON: API 문서와 함께 빌드 (Doxygen 및 Graphviz 필요, 기본적으로 비활성화).
  • -DRETDEC_TESTS=ON: 테스트와 함께 빌드 (기본적으로 비활성화).
  • -DRETDEC_DEV_TOOLS=ON: 개발 도구와 함께 빌드 (기본적으로 비활성화).
  • -DRETDEC_COMPILE_YARA=OFF: 설치 단계에서 YARA 규칙 컴파일 비활성화 (기본적으로 활성화).
  • -DCMAKE_BUILD_TYPE=Debug: 개발 중에 유용한 디버깅 정보와 함께 빌드. 기본적으로 프로젝트는 Release 모드로 빌드됩니다. Windows에서는 효과가 없지만, cmake --build .에 --config Debug 매개변수를 사용하여 동일한 작업을 수행할 수 있습니다.
  • -D<dep>_LOCAL_DIR=<path>: 여기서 <dep>는 {CAPSTONE, GOOGLETEST, KEYSTONE, LLVM, YARA, YARAMOD} 중 하나입니다 (예: -DCAPSTONE_LOCAL_DIR=<path>). 빌드 시 새 복사본을 다운로드하는 대신 <path>에 있는 로컬 저장소 클론을 RetDec 종속성으로 사용합니다. 여러 옵션을 동시에 사용할 수 있습니다.

Docker에서 빌드

Docker 지원은 커뮤니티에서 유지 관리합니다. 문제가 발생하거나 개선 제안이 있으면 이슈 또는 PR을 열어주세요.

이미지 빌드

Docker에서 빌드하는 경우 필요한 라이브러리를 로컬에 설치할 필요가 없습니다. 전체 빌드 도구 체인을 설정하지 않고 RetDec을 사용해 보려는 경우 좋은 옵션입니다.

RetDec Docker 이미지를 빌드하려면 다음을 실행하세요:``` docker build -t retdec - < Dockerfile

root@kitploit:~
이미지는 이 저장소의 master 브랜치로부터 빌드됩니다.

로컬 복사본의 저장소를 사용하여 이미지를 빌드하려면 개발 Dockerfile인 `Dockerfile.dev`를 사용하십시오.```
docker build -t retdec:dev . -f Dockerfile.dev

컨테이너 실행

uid가 1000이 아닌 경우, 입력 바이너리 파일이 포함된 디렉토리가 RetDec에서 접근 가능한지 확인하십시오:``` chmod 0777 /path/to/local/directory

root@kitploit:~
이제 컨테이너 내부에서 디컴파일러를 실행할 수 있습니다:```
docker run --rm -v /path/to/local/directory:/destination retdec retdec-decompiler /destination/binary

참고: /destination 부분은 수정하지 마십시오. /path/to/local/directory 부분만 변경하면 됩니다. 그러면 출력 파일이 /path/to/local/directory에 생성됩니다.

나이틀리 빌드

저희는 master 브랜치의 최신 커밋에서 최신 RetDec 패키지를 두 가지 방법으로 생성합니다.

  • TeamCity 서버 사용
  • Github Actions 사용

이 빌드는 주로 RetDec 개발자, 기여자, 그리고 제품을 실험하는 다른 사용자(예: 공식 릴리스에 존재하는 문제가 현재 master에 여전히 존재하는지 테스트)를 위해 만들어졌습니다.

원하시는 대로 사용할 수 있지만, 특히 Linux 버전의 경우 시스템에서 작동할 것이라는 보장이 없으며, 회귀 가능성이 있음을 명심하십시오. 안정적인 RetDec 버전을 얻으려면 최신 공식 사전 빌드 패키지를 다운로드하거나 최신 RetDec 버전 태그를 빌드하십시오.

TeamCity

  • Windows Server 2016, 버전 10.0
  • Ubuntu Bionic Linux, 버전 18.04
  • Mac OS X, 버전 10.14.6

Github Actions

macOS, Linux 및 Windows용 빌드는 최신 RetDec CI 워크플로 실행에서 찾을 수 있습니다.

프로젝트 문서

master 브랜치의 최신 커밋에 해당하는 최신 Doxygen 생성 소프트웨어 참조는 프로젝트 문서를 참조하십시오.

관련 저장소

  • retdec-idaplugin -- RetDec을 IDA(대화형 디스어셈블러)에 내장하여 사용을 훨씬 쉽게 만듭니다.
  • retdec-r2plugin -- RetDec을 Radare2에 내장하여 사용을 훨씬 쉽게 만듭니다.
  • retdec-regression-tests-framework -- RetDec 및 관련 도구를 위한 회귀 테스트 작성 및 실행 프레임워크입니다. RetDec 프로젝트에 기여할 계획이라면 필수입니다.
  • retdec-regression-tests -- RetDec 및 관련 도구를 위한 회귀 테스트 모음입니다.
  • retdec-build-system-tests -- RetDec 빌드 시스템을 위한 테스트 모음입니다. RetDec 라이브러리 사용 방법에 대한 데모 모음으로도 사용할 수 있습니다.
  • vim-syntax-retdecdsm -- RetDec 디스어셈블러의 출력(.dsm 파일)을 위한 Vim 구문 강조 파일입니다.

라이선스

Copyright (c) 2017 Avast Software, MIT 라이선스 하에 제공됩니다. 자세한 내용은 LICENSE 파일을 참조하십시오.

RetDec은 수정된 PeLib 라이브러리를 포함합니다. Avast Software가 추가한 새 모듈은 MIT 라이선스 하에 제공됩니다. 원본 소스는 다음 라이선스 하에 제공됩니다.

  • Copyright (c) 2004 - 2005 Sebastian Porst ([email protected]), zlib/libpng 라이선스 하에 제공됩니다. 자세한 내용은 LICENSE-PELIB 파일을 참조하십시오.

RetDec은 LICENSE-THIRD-PARTY 파일에 나열된 타사 라이브러리 또는 기타 리소스를 해당 라이선스와 함께 사용합니다.

기여하기

RetDec 기여 가이드라인을 참조하십시오.

감사의 말

이 소프트웨어는 체코 기술 기관(TACR)의 ALFA 프로그램 No. TA01010667 연구 자금 지원을 받았습니다.

도구 다운로드
  • cmake --build . --config Release --target install
  • 또는 Visual Studio IDE에서 cmake로 생성된 retdec.sln을 열 수 있습니다.
  • macOS:
    • cd retdec
    • mkdir build && cd build
    • cmake .. -DCMAKE_INSTALL_PREFIX=<path>
    • make -jN (N은 병렬 빌드에 사용할 프로세스 수이며, 일반적으로 코어 수 + 1이 가장 빠른 컴파일 시간을 제공합니다)
    • make install
  • FreeBSD:
    • sudo pkg install git cmake
    • git clone https://github.com/avast/retdec
    • cd retdec
    • mkdir build && cd build
    • root@kitploit:~
      # FreeBSD (및 기타 BSD)는 cmake, python3, git, autotools가 필요합니다. OpenSSL은 OS에 미리 설치되어 있지만 버전을 확인하세요.
      # 각 패키지에 대해 최신 버전을 사용할 수 있습니다.
      # 설치된 항목 확인:
      sudo pkg info cmake python37 autotools
      # 설치/업그레이드:
      sudo pkg install cmake python37 autotools
      
    • cmake .. -DCMAKE_INSTALL_PREFIX=<path>
    • make -jN (N은 병렬 빌드에 사용할 프로세스 수이며, 일반적으로 코어 수 + 1이 가장 빠른 컴파일 시간을 제공합니다)
    • make install
  • -DRETDEC_ENABLE_<component>=ON: 지정된 구성 요소와 해당 종속성만 빌드합니다 (여러 옵션을 동시에 사용 가능). 기본적으로 모든 구성 요소가 빌드됩니다. 이 메커니즘을 통해 하나 이상의 구성 요소가 활성화되면, 명시적으로 활성화되지 않은 다른 모든 구성 요소 (및 활성화된 구성 요소의 종속성으로 필요하지 않은 구성 요소)는 빌드되지 않습니다. 사용 가능한 모든 구성 요소 옵션은 cmake/options.cmake를 참조하세요.
    • -DRETDEC_ENABLE_ALL=ON: 모든 구성 요소를 (다시) 활성화하는 데 사용할 수 있습니다.
    • 또는 -DRETDEC_ENABLE=<comma-separated component list>를 -DRETDEC_ENABLE_<component>=ON 대신 사용할 수 있습니다 (예: -DRETDEC_ENABLE=fileformat,loader,ctypesparser는 -DRETDEC_ENABLE_FILEFORMAT=ON -DRETDEC_ENABLE_LOADER=ON -DRETDEC_ENABLE_CTYPESPARSER=ON과 동일).