저작권 2011-2024 Google LLC.
면책 조항 : 이것은 공식 Google 제품 (실험적 또는 기타)이 아니며 Google이 소유 한 코드 일뿐입니다.
Binexport는 Bindiff의 수출 업체입니다. 분해 데이터를 Bindiff가 요구하는 프로토콜 버퍼 형식으로 내보내는 Disassemblers Ida Pro, Binain Ninja 및 GHIDRA의 플러그인/확장자입니다.
오픈 소스 소프트웨어 리버스 엔지니어링 스위트 ghidra의 실험 버전은 java/BinExport 디렉토리에서 제공됩니다.
이 저장소에는 Linux, MacOS 및 Windows 용 Binexport 플러그인 바이너리를 빌드하는 데 필요한 전체 소스 코드가 포함되어 있습니다.
릴리스 페이지에서 Binaries를 다운로드하여 IDA Pro 플러그인 디렉토리에 복사하십시오. 기본 경로입니다.
| OS | 플러그인 경로 |
|---|---|
| 리눅스 | /opt/idapro-8.2/plugins |
| 마코스 | /Applications/IDA Pro 8.2/idabin/plugins |
| 창 | %ProgramFiles%IDA 8.2plugins |
현재 사용자 만 설치하려면 파일을 이러한 디렉토리 중 하나에 대신 복사하십시오.
| OS | 플러그인 |
|---|---|
| Linux/MacOS | ~/.idapro/plugins |
| 창 | %AppData%Hex-RaysIDA Proplugins |
IDA에서 Help 선택하십시오 | About programm...
Addons...
올바르게 설치하면 다음 대화 상자가 나타납니다.

릴리스 페이지에서 Binaries를 다운로드하여 Binary Ninja 플러그인 디렉토리에 복사하십시오. 현재 사용자의 기본 경로입니다.
| OS | 플러그인 경로 |
|---|---|
| 리눅스 | ~/.binaryninja/plugins |
| 마코스 | ~/Library/Application Support/Binary Ninja/plugins/ |
| 창 | %AppData%Binary Ninjaplugins |
Log 기본 도크를 선택하십시오. 이것이 보이지 않으면 View 통해 활성화 | Native Docks | Show Log . BinExport 12 (@internal, Jan 3 2023), (c)2004-2011 zynamics GmbH, (c)2011-2024 Google LLC.
File 선택하십시오 | Install Extensions...ghidra_BinExport.zip 로의 경로를 입력하고 OK 클릭하십시오.OK 두 번 클릭하여 "확장 설치"대화 상자와 GHIDRA를 다시 시작하라는 통지를 모두 닫으십시오.File 선택 | Install Extensions...주요 사용 사례는 Bindiff를 통해입니다. 그러나 Binexport는 분해를 다른 형식으로 내보내는 데 사용될 수도 있습니다.
IDA Pro 데이터베이스를 엽니 다
Edit 선택하십시오 | Plugins | BinExport 12
다음 대화 상자가 나타납니다.

내보낼 파일의 유형을 선택하십시오
Binexport 플러그인은 아래의 IDC 기능을 등록합니다.
| IDC 기능 이름 | 수출 | 논쟁 |
|---|---|---|
| binexportbinary | 프로토콜 버퍼 | 파일 이름 |
| BinexportText | 텍스트 파일 덤프 | 파일 이름 |
| BinexportStatistics | 통계 텍스트 파일 | 파일 이름 |
또는 메인 함수를 직접 호출하여 IDC에서 플러그인을 호출 할 수 있습니다.
static main () {
batch ( 0 );
auto_wait ();
load_and_run_plugin ( "binexport12_ida" , 2 /* kBinary */ );
qexit ( 0 );
}이것은 출력 파일 이름에 대한 컨트롤을 제공합니다. Binexport는 항상 현재로드 된 데이터베이스의 파일 이름 (확장 제외)을 사용하여 ".Binexport"를 부여합니다.
인수는 IDC와 동일합니다 (위에 나열).
예제 등록 된 IDC 기능 중 하나의 호출 :
import idaapi
idaapi . ida_expr . eval_idc_expr ( None , ida_idaapi . BADADDR ,
'BinExportBinary("exported.BinExport");' )Binexport는 IDA의 명령 줄에 지정할 수있는 다음 플러그인 옵션을 정의합니다.
| 옵션 | 설명 |
|---|---|
-OBinExportAutoAction:<ACTION> | Binexport IDC 기능을 호출하고 종료하십시오 |
-OBinExportModule:<PARAM> | BinExportAutoAction 에 대한 논쟁 |
-OBinExportLogFile:<FILE> | 파일에 메시지를 기록합니다 |
-OBinExportAlsoLogToStdErr:TRUE | 지정된 경우 표준 오류에도 로그인하십시오 |
-OBinExportX86NoReturnHeuristic:TRUE | X86- 특이 적 휴리스틱을 활성화하여 비 회전 기능을 식별하십시오 |
참고 : 이러한 옵션은 파일보다 먼저 나와야합니다.
현재 바이너리 닌자 UI에 최소의 통합이 있습니다.
Tools | Plugins | BinExport . 이것은 내보내기 프로세스가 시작됩니다. .BinExport 파일은 동일한 디렉토리에 분석 데이터베이스 옆에 배치됩니다.
File 먼저 가져 오십시오 | Import File...Export... 선택하십시오..BinExport 자동으로 추가됩니다. BinExport.java ghidra 스크립트는 헤드리스 및 GUI 모드 모두에서 실행할 수 있습니다. GUI 모드에서는 스크립트 관리자의 BinExport 카테고리에서 사용할 수 있습니다. 헤드리스 모드의 경우 다음 컨텐츠 (또는 사용하려는 옵션에 따라 유사한)가있는 BinExport.properties 파일을 사용할 수 있습니다.
Choose export file Export = test.BinExport
Choose options IDA Pro Compatibility = "Subtract Imagebase;Remap mnemonics;Prepend Namespace to Function Names"
프로젝트 생성, 바이너리를 수입 및 분석하십시오.
$ ./analyzeHeadless <project_location> <project_name> -import <file>
BinExport.java 실행하여 BinExport.properties 에 지정된 .BinExport 파일을 생성합니다.
$ ./analyzeHeadless <project_location> <project_name> -process <file> -propertiesPath <path> -preScript BinExport.java -noanalysis
또는 BinExport.properties 대신 명령 줄 인수를 사용하십시오.
$ ./analyzeHeadless <project_location> <project_name> -process <file> -preScript BinExport.java test.BinExport "Prepend Namespace to Function Names" -noanalysis
다음은 Ida Pro 및 Binary Ninja 용 기본 코드 플러그인에 대한 빌드 지침입니다. Ghidra의 Java 기반 확장을 구축하려면 Ghidra 지침에 대해 Binexport를 참조하십시오.
만족해야 할 의존성은 상당히 있습니다.
boost_parts 에서 1.83.0 선박의 부분 사본)third_party/idasdk 로의 포장을 풀어보세요)선호되는 빌드 환경은 데비안 11 ( "Bullseye")입니다.
필요한 모든 패키지를 설치해야합니다.
sudo apt update -qq
sudo apt install -qq --no-install-recommends build-essentialCMAKE의 최신 안정 버전을 설치하십시오.
wget https://github.com/Kitware/CMake/releases/download/v3.25.1/cmake-3.25.1-linux-x86_64.sh
mkdir ${HOME} /cmake
sh cmake-3.25.1-Linux-x86_64.sh --prefix= ${HOME} /cmake --exclude-subdir
export PATH= ${HOME} /cmake/bin: ${PATH}다음 섹션에서는 현재 작업 디렉토리가 복제 된 저장소의 루트에 있다고 가정합니다.
IDA SDK의 내용을 third_party/idasdk 로 압축하십시오. 표시된 명령은 IDA Pro 8.2에 대한 것입니다.
unzip PATH/TO/idasdk_pro82.zip -d third_party/idasdk
mv third_party/idasdk/idasdk_pro82/ * third_party/idasdk
rmdir third_party/idasdk/idasdk_pro82모든 전제 조건을 사용하여 Binexport를 구성 및 구축하고 테스트를 실행합니다.
mkdir -p build_linux && cd build_linux
cmake ..
-G Ninja
-DCMAKE_BUILD_TYPE=Release
" -DCMAKE_INSTALL_PREFIX= ${PWD} "
-DBINEXPORT_ENABLE_IDAPRO=ON
" -DIdaSdk_ROOT_DIR= ${PWD} /../third_party/idasdk "
-DBINEXPORT_ENABLE_BINARYNINJA=ON
cmake --build . --config Release
ctest --build-config Release --output-on-failure
cmake --install . --config Release --strip 참고 : 닌자를 사용하여 실제 빌드를 수행하지 않으려면 -G Ninja 부분을 생략하십시오.
Ida Pro 빌드를 비활성화하려면 -DBINEXPORT_ENABLE_IDAPRO=OFF 설정하십시오. 마찬가지로 바이너리 닌자 빌드를 비활성화하려면 -DBINEXPORT_ENABLE_BINARYNINJA=OFF 설정하십시오.
Abseil, Googletest, 프로토콜 버퍼 및 Binary Ninja API를 다운로드하여 구축합니다. 모든 것이 잘 진행되면 build_linux/binexport-prefix 디렉토리에는 두 파일 binexport12_ida.so 및 binexport12_ida64.so (각각 ida 및 ida64 와 함께 사용) 및 binexport12_binaryninja.so (Binary Ninja의 경우)를 포함해야합니다.
선호되는 빌드 환경은 Xcode 15.1을 사용하여 MacOS 13 "Ventura"입니다. MacOS 12 "Monterey"를 사용하여 작동해야합니다.
개발자 도구를 설치 한 후 명령 줄 도구도 설치하십시오.
sudo xcode-select --install다음 섹션에서는 현재 작업 디렉토리가 복제 된 저장소의 루트에 있다고 가정합니다.
공식 사이트에서 CMAKE의 최신 안정 버전을 다운로드하고 디스크 이미지를 장착하십시오.
curl -fsSL https://github.com/Kitware/CMake/releases/download/v3.25.1/cmake-3.25.1-Darwin-x86_64.dmg
-o $HOME /Downloads/cmake-osx.dmg
hdiutil attach $HOME /Downloads/cmake-osx.dmg이 시점에서 CMAKE의 라이센스 계약을 검토하고 수락해야합니다. 이제 cmake를 설치하십시오.
sudo cp -Rf /Volumes/cmake-3.25.1-Darwin-x86_64/CMake.app /Applications/
hdiutil detach /Volumes/cmake-3.25.1-Darwin-x86_64
sudo /Applications/CMake.app/Contents/bin/cmake-gui --install마지막 명령은 시스템 경로에서 cmake를 사용할 수있게합니다.
IDA SDK의 내용을 third_party/idasdk 로 압축하십시오. 표시된 명령은 IDA Pro 8.2에 대한 것입니다.
unzip PATH/TO/idasdk_pro82.zip -d third_party/idasdk
mv third_party/idasdk/idasdk_pro82/ * third_party/idasdk
rmdir third_party/idasdk/idasdk_pro82모든 전제 조건을 사용하여 Binexport를 구성 및 구축하고 테스트를 실행합니다.
mkdir -p build_mac && cd build_mac
cmake ..
-DCMAKE_BUILD_TYPE=Release
" -DCMAKE_INSTALL_PREFIX= ${PWD} "
-DBINEXPORT_ENABLE_IDAPRO=ON
" -DIdaSdk_ROOT_DIR= ${PWD} /../third_party/idasdk "
-DBINEXPORT_ENABLE_BINARYNINJA=ON
cmake --build . --config Release -- " -j $( sysctl -n hw.logicalcpu ) "
ctest --build-config Release --output-on-failure
cmake --install . --config Release --strip참고 : 표준 CMAKE "MakeFile Generator"를 사용합니다. Xcode 또는 Ninja를 발전기로 사용할 수도 있습니다.
Ida Pro 빌드를 비활성화하려면 -DBINEXPORT_ENABLE_IDAPRO=OFF 설정하십시오. 마찬가지로 바이너리 닌자 빌드를 비활성화하려면 -DBINEXPORT_ENABLE_BINARYNINJA=OFF 설정하십시오.
Abseil, Googletest, 프로토콜 버퍼 및 Binary Ninja API를 다운로드하여 구축합니다. 모든 것이 잘 진행되면 build_mac/binexport-prefix 디렉토리에는 binexport12_ida.dylib 및 binexport12_ida64.dylib (각각 ida 및 ida64 와 함께 사용) 및 binexport12_binaryninja.dylib (Binary Ninja) 파일이 포함되어야합니다.
선호되는 빌드 환경은 Visual Studio 2022 컴파일러를 사용하는 Windows 10 (64 비트 인텔)과 Windows 10 용 Windows SDK입니다.
다운로드 페이지에서 최신 안정적인 Cmake (작성시 3.25.1)를 다운로드하여 설치하십시오. "모든 사용자의 시스템 경로에 CMAKE 추가"를 선택하십시오.
다운로드 페이지에서 Git을 다운로드하여 설치하십시오. 다음 옵션을 선택하십시오. * 설치 디렉토리는 기본값 %ProgramFiles%Gitbingit.exe * "Windows 명령 프롬프트에서 git 사용" - 시스템 경로에 git을 추가하도록하십시오. * "Windows 'Default Console Window 사용" - 일반 명령 프롬프트에서 git을 사용할 수 있도록하십시오.
다음 섹션에서는 복제 된 Binexport 저장소의 루트에있는 현재 작업 디렉토리가있는 공개 명령 프롬프트를 가정합니다.
git clone https://github.com/google/binexport.git
cd binexport IDA SDK의 내용을 third_party/idasdk 로 압축하십시오. 표시된 명령은 GIT가 먼저 기본 디렉토리에 설치되었다고 가정하면 IDA Pro 8.2 용입니다.
" %ProgramFiles% Gitusrbinunzip " PATHTOidasdk_pro82.zip -d third_party
rename third_partyidasdk_pro82 idasdk모든 전제 조건을 사용하여 Binexport를 구성하고 빌드하십시오.
if not exist build_msvc mkdir build_msvc
cd build_msvc
cmake .. ^
-G " Visual Studio 17 2022 " ^
-DCMAKE_BUILD_TYPE=Release ^
" -DCMAKE_INSTALL_PREFIX= %cd% " ^
-DBINEXPORT_ENABLE_IDAPRO=ON ^
-DIdaSdk_ROOT_DIR= %cd% ..third_partyidasdk ^
-DBINEXPORT_ENABLE_BINARYNINJA=ON
cmake --build . --config Release -- /m /clp:NoSummary;ForceNoAlign /v:minimal
ctest --build-config Release --output-on-failure
cmake --install . --config Release --strip참고 : CMAKE "Visual Studio"생성기를 사용합니다. 닌자 생성기도 사용할 수 있습니다.
Ida Pro 빌드를 비활성화하려면 -DBINEXPORT_ENABLE_IDAPRO=OFF 설정하십시오. 마찬가지로 바이너리 닌자 빌드를 비활성화하려면 -DBINEXPORT_ENABLE_BINARYNINJA=OFF 설정하십시오.
Abseil, Googletest, 프로토콜 버퍼 및 Binary Ninja API를 다운로드하여 구축합니다. 모든 것이 잘 진행되면 build_msvc/binexport-prefix 디렉토리에는 binexport12_ida.dll 및 binexport12_ida64.dll (각각 ida.exe (for ida64.exe )뿐만 아니라 binexport12_binaryninja.dll 및 binexport12_ida64.dll 파일 두 파일이 포함되어야합니다.