{"id":13419896,"url":"https://github.com/google/binexport","last_synced_at":"2026-10-19T14:38:40.212Z","repository":{"id":39627132,"uuid":"41831522","full_name":"google/binexport","owner":"google","description":"Export disassemblies into Protocol Buffers","archived":false,"fork":false,"pushed_at":"2026-09-28T13:53:14.000Z","size":291210,"stargazers_count":1208,"open_issues_count":44,"forks_count":249,"subscribers_count":52,"default_branch":"main","last_synced_at":"2026-10-05T15:22:04.439Z","etag":null,"topics":["binary-ninja","binary-ninja-plugin","bindiff","binexport","binnavi","c-plus-plus","database","ghidra","ghidra-extension","ghidra-plugin","ida-plugin","ida-pro","java","protobuf","reverse-engineering","vxsig"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/google.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"claude":null,"gemini":null,"cursor":null,"copilot":null,"dco":null,"cla":null,"disclosure":null}},"created_at":"2015-09-02T22:49:39.000Z","updated_at":"2026-10-01T17:05:01.000Z","dependencies_parsed_at":"2026-09-05T12:34:27.584Z","dependency_job_id":null,"html_url":"https://github.com/google/binexport","commit_stats":null,"previous_names":[],"tags_count":21,"template":false,"template_full_name":null,"purl":"pkg:github/google/binexport","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Fbinexport","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Fbinexport/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Fbinexport/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Fbinexport/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/google","download_url":"https://codeload.github.com/google/binexport/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Fbinexport/sbom","scorecard":{"id":436449,"data":{"date":"2025-08-11","repo":{"name":"github.com/google/binexport","commit":"81b77848ef27ca03ed6da8872be8bbb949119f67"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":5,"checks":[{"name":"Code-Review","score":10,"reason":"all changesets reviewed","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/cmake.yml:1","Warn: no topLevel permission defined: .github/workflows/gradle.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Maintained","score":5,"reason":"6 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 5","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: Apache License 2.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'main'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact v12-20240417-ghidra_11.0.3 not signed: https://api.github.com/repos/google/binexport/releases/151509522","Warn: release artifact v12-20230515-ghidra_10.3 not signed: https://api.github.com/repos/google/binexport/releases/102996113","Warn: release artifact v12-20230113-ghidra_10.2.2 not signed: https://api.github.com/repos/google/binexport/releases/88819260","Warn: release artifact v12-20221114-ghidra_10.2 not signed: https://api.github.com/repos/google/binexport/releases/82948642","Warn: release artifact v12-20221020-binaryninja not signed: https://api.github.com/repos/google/binexport/releases/80471869","Warn: release artifact v12-20240417-ghidra_11.0.3 does not have provenance: https://api.github.com/repos/google/binexport/releases/151509522","Warn: release artifact v12-20230515-ghidra_10.3 does not have provenance: https://api.github.com/repos/google/binexport/releases/102996113","Warn: release artifact v12-20230113-ghidra_10.2.2 does not have provenance: https://api.github.com/repos/google/binexport/releases/88819260","Warn: release artifact v12-20221114-ghidra_10.2 does not have provenance: https://api.github.com/repos/google/binexport/releases/82948642","Warn: release artifact v12-20221020-binaryninja does not have provenance: https://api.github.com/repos/google/binexport/releases/80471869"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Security-Policy","score":10,"reason":"security policy file detected","details":["Info: security policy file detected: github.com/google/.github/SECURITY.md:1","Info: Found linked content: github.com/google/.github/SECURITY.md:1","Info: Found disclosure, vulnerability, and/or timelines in security policy: github.com/google/.github/SECURITY.md:1","Info: Found text in security policy: github.com/google/.github/SECURITY.md:1"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 14 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/cmake.yml:20: update your workflow using https://app.stepsecurity.io/secureworkflow/google/binexport/cmake.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/cmake.yml:35: update your workflow using https://app.stepsecurity.io/secureworkflow/google/binexport/cmake.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/cmake.yml:39: update your workflow using https://app.stepsecurity.io/secureworkflow/google/binexport/cmake.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/cmake.yml:42: update your workflow using https://app.stepsecurity.io/secureworkflow/google/binexport/cmake.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/cmake.yml:66: update your workflow using https://app.stepsecurity.io/secureworkflow/google/binexport/cmake.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/gradle.yml:24: update your workflow using https://app.stepsecurity.io/secureworkflow/google/binexport/gradle.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/gradle.yml:27: update your workflow using https://app.stepsecurity.io/secureworkflow/google/binexport/gradle.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/gradle.yml:33: update your workflow using https://app.stepsecurity.io/secureworkflow/google/binexport/gradle.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/gradle.yml:38: update your workflow using https://app.stepsecurity.io/secureworkflow/google/binexport/gradle.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/gradle.yml:48: update your workflow using https://app.stepsecurity.io/secureworkflow/google/binexport/gradle.yml/main?enable=pin","Warn: containerImage not pinned by hash: kokoro/docker/debian9-clang/Dockerfile:11: pin your Docker image by updating debian:buster to debian:buster@sha256:58ce6f1271ae1c8a2006ff7d3e54e9874d839f573d8009c20154ad0f2fb0a225","Info:   0 out of   5 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   5 third-party GitHubAction dependencies pinned","Info:   0 out of   1 containerImage dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}}]},"last_synced_at":"2025-08-19T04:47:26.401Z","repository_id":39627132,"created_at":"2025-08-19T04:47:26.401Z","updated_at":"2025-08-19T04:47:26.401Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":344872684,"owners_count":38358143,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-10-03T21:59:58.778Z","status":"online","status_checked_at":"2026-10-19T02:00:06.414Z","response_time":53,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["binary-ninja","binary-ninja-plugin","bindiff","binexport","binnavi","c-plus-plus","database","ghidra","ghidra-extension","ghidra-plugin","ida-plugin","ida-pro","java","protobuf","reverse-engineering","vxsig"],"created_at":"2024-07-30T22:01:22.473Z","updated_at":"2026-10-19T14:38:40.206Z","avatar_url":"https://github.com/google.png","language":"C++","funding_links":[],"categories":["TODO scan for Android support in followings","\u003ca id=\"6fb7e41786c49cc3811305c520dfe9a1\"\u003e\u003c/a\u003e导入导出\u0026与其他工具交互","使用"],"sub_categories":["\u003ca id=\"11139e7d6db4c1cef22718868f29fe12\"\u003e\u003c/a\u003eBinNavi","\u003ca id=\"6fb7e41786c49cc3811305c520dfe9a1\"\u003e\u003c/a\u003e导入导出\u0026与其他工具交互"],"readme":"# BinExport\n\nCopyright 2011-2026 Google LLC.\n\n[![Linux Build Status](https://github.com/google/binexport/workflows/linux-build/badge.svg)](https://github.com/google/binexport/actions?query=workflow%3Alinux-build)\n[![Coverity Scan Build Status](https://scan.coverity.com/projects/8977/badge.svg)](https://scan.coverity.com/projects/google-binexport)\n\u003c!-- disableFinding(\"Ninja\") --\u003e\n\nDisclaimer: This is not an official Google product (experimental or otherwise),\nit is just code that happens to be owned by Google.\n\n## Table of Contents\n\n*   [Introduction](#introduction)\n*   [Installation](#installation)\n    *   [IDA Pro](#ida-pro)\n    *   [Binary Ninja](#binary-ninja)\n    *   [Ghidra](#ghidra)\n*   [Usage](#usage)\n*   [How to build](#how-to-build)\n    *   [Preparing the build environment](#preparing-the-build-environment)\n    *   [Linux](#linux)\n    *   [macOS](#macos)\n    *   [Windows](#windows)\n\n## Introduction\n\nBinExport is the exporter component of\n[BinDiff](https://www.zynamics.com/software.html). It is a plugin/extension for\nthe the disassemblers IDA Pro, Binary Ninja and Ghidra that exports disassembly\ndata into the Protocol Buffer format that BinDiff requires.\n\nThis repository contains the complete source code necessary to build BinExport\nplugin binaries for Linux, macOS and Windows.\n\n## Installation\n\n### IDA Pro\n\nNote: BinExport supports IDA Pro 9.4 or higher. Support for the older 8.x series\nhas been discontinued.\n\nDownload the binaries from the\n[releases](https://github.com/google/binexport/releases) page and copy them\ninto the IDA Pro plugins directory. These are the default paths:\n\n| OS      | Plugin path                                                 |\n| ------- | ----------------------------------------------------------- |\n| Linux   | `/opt/ida-pro-9.4/plugins`                                  |\n| macOS   | `/Applications/IDA Professional 9.4/Contents/MacOS/plugins` |\n| Windows | `%ProgramFiles%\\IDA 9.4\\plugins`                            |\n\nTo install just for the current user, copy the files into one of these\ndirectories instead:\n\n| OS          | Plugin path                          |\n| ----------- | ------------------------------------ |\n| Linux/macOS | `~/.idapro/plugins`                  |\n| Windows     | `%AppData%\\Hex-Rays\\IDA Pro\\plugins` |\n\n#### Verifying the installation version\n\n1.  In IDA, select `Help`|`About programm...`\n2.  Click `Addons...`\n3.  If installed correctly, the following dialog box appears:\n\n    ![IDA addons dialog](/doc/binexport10-ida-addons-dialog.png)\n\n### Binary Ninja\n\nDownload the binaries from the\n[releases](https://github.com/google/binexport/releases) page and copy them\ninto the Binary Ninja plugins directory. These are the default paths for the\ncurrent user:\n\n| OS      | Plugin path                                           |\n| ------- | ----------------------------------------------------- |\n| Linux   | `~/.binaryninja/plugins`                              |\n| macOS   | `~/Library/Application Support/Binary Ninja/plugins/` |\n| Windows | `%AppData%\\Binary Ninja\\plugins`                      |\n\n#### Verifying the installation version\n\n1.  Start Binary Ninja\n2.  Select the `Log` native dock. If this is not visible, enable it via\n    `View`|`Native Docks`|`Show Log`.\n3.  If installed correctly, the log window contains a line similar to this one:\n\n```text\nBinExport 12 (@internal, Jan 3 2023), (c)2004-2011 zynamics GmbH, (c)2011-2024 Google LLC.\n```\n\n### Ghidra\n\n1.  Download the binaries from the\n    [releases](https://github.com/google/binexport/releases) page.\n2.  Start Ghidra, select `File`|`Install Extensions...`\n3.  In the \"Install Extensions\" dialog, click the plus icon in the upper right\n    to \"Add extension\".\n4.  In the \"Select extension\" dialog, enter the path to the\n    `ghidra_BinExport.zip` you downloaded in step 1 and click `OK`.\n5.  Click `OK` twice to close both the \"Install Extensions\" dialog and the\n    notice to restart Ghidra.\n6.  Exit Ghidra.\n\n#### Verifying the installation version\n\n1.  Start Ghidra\n2.  Select `File`|`Install Extensions...`\n3.  If installed correctly, the \"Install Extensions\" dialog should list the\n    \"BinExport\" extension next to a selected checkbox.\n\n## Usage\n\nThe main use case is via [BinDiff](https://zynamics.com/bindiff.html). However,\nBinExport can also be used to export disassembly into different formats:\n\n*   Protocol Buffer based full export\n*   Statistics text file\n*   Text format for debugging\n\n### IDA Pro\n\n1.  Open an IDA Pro database\n2.  Select `Edit`|`Plugins`|`BinExport 12`\n3.  The following dialog box appears:\n\n    ![BinExport plugin dialog](/doc/binexport10-plugin-dialog.png)\n\n4.  Select the type of the file to be exported\n\n#### IDC Scripting\n\nThe BinExport plugin registers the IDC functions below.\n\n| IDC Function name   | Exports to           | Arguments  |\n| ------------------- | -------------------- | ---------- |\n| BinExportBinary     | Protocol Buffer      | filename   |\n| BinExportText       | Text file dump       | filename   |\n| BinExportStatistics | Statistics text file | filename   |\n\nAlternatively, the plugin can be invoked from IDC by calling its main function\ndirectly:\n\n```c\nstatic main() {\n  batch(0);\n  auto_wait();\n  load_and_run_plugin(\"binexport12_ida\", 2 /* kBinary */);\n  qexit(0);\n}\n```\n\nNote that this does provide any control over the output filename. BinExport\nwill always use the filename of the currently loaded database (without\nextension) and append \".BinExport\".\n\n#### IDAPython\n\nThe arguments are the same as for IDC (listed above).\n\nExample invocation of one of the registered IDC functions:\n\n```python\nimport idaapi\nidaapi.ida_expr.eval_idc_expr(None, ida_idaapi.BADADDR,\n  'BinExportBinary(\"exported.BinExport\");')\n```\n\n#### Plugin Options\n\nBinExport defines the following plugin options, that can be specified on IDA's\ncommand line:\n\n| Option                                 | Description                                                           |\n| -------------------------------------- | --------------------------------------------------------------------- |\n| `-OBinExportAutoAction:\u003cACTION\u003e`       | Invoke a BinExport IDC function and exit                              |\n| `-OBinExportModule:\u003cPARAM\u003e`            | Argument for `BinExportAutoAction`                                    |\n| `-OBinExportLogFile:\u003cFILE\u003e`            | Log messages to a file                                                |\n| `-OBinExportAlsoLogToStdErr:TRUE`      | If specified, also log to standard error                              |\n| `-OBinExportX86NoReturnHeuristic:TRUE` | Enable the X86-specific heuristic to identify non-returning functions |\n\nNote: These options must come before any files.\n\n### Binary Ninja\n\nThere is only minimal integration into the Binary Ninja UI at this time.\n\n1.  Open or create a new analysis database\n2.  Select `Tools`|`Plugins`|`BinExport`. This will start the export process.\n\nThe `.BinExport` file is placed next to the analysis database, in the same\ndirectory.\n\n### Ghidra\n\n1.  Open or create a project. For new projects, import a file first using\n    `File`|`Import File...`\n2.  Right-click a file in the current project list and select `Export...` from\n    the context menu.\n3.  In the \"Export\" dialog, under \"Format\", choose\n    \"Binary Export (v2) for BinDiff\".\n4.  Under \"Output File\", enter the desired output file path. If the file\n    extension is missing, `.BinExport` will be appended automatically.\n5.  Optional: click \"Options...\" to set additional export options.\n6.  Click \"OK\", then click \"OK\" again to dismiss the \"Export Results Summary\"\n    dialog.\n\n#### Scripting\n\nThe `BinExport.java` Ghidra script can be run in both headless and GUI mode.\nIn GUI mode, it is available under the `BinExport` category in the Script\nManager. For headless mode, a `BinExport.properties` file with the following\ncontent (or similar, depending on the options you want to use) can be used:\n\n```text\nChoose export file Export = test.BinExport\nChoose options IDA Pro Compatibility = \"Subtract Imagebase;Remap mnemonics;Prepend Namespace to Function Names\"\n```\n\n##### Example usage in headless mode\n\nCreate a project, import and analyze a binary:\n\n```bash\n$ ./analyzeHeadless \u003cproject_location\u003e \u003cproject_name\u003e -import \u003cfile\u003e\n```\n\nRun `BinExport.java` which will generate the `.BinExport` file specified in\n`BinExport.properties`:\n\n```bash\n$ ./analyzeHeadless \u003cproject_location\u003e \u003cproject_name\u003e -process \u003cfile\u003e -propertiesPath \u003cpath\u003e -preScript BinExport.java -noanalysis\n```\n\nAlternatively, use command-line arguments instead of `BinExport.properties`:\n\n```bash\n$ ./analyzeHeadless \u003cproject_location\u003e \u003cproject_name\u003e -process \u003cfile\u003e -preScript BinExport.java test.BinExport \"Prepend Namespace to Function Names\" -noanalysis\n```\n\n## How to build\n\nBelow are build instructions for the native code plugins for IDA Pro and\nBinary Ninja. To build the Java-based extension for Ghidra, please refer\nto the [BinExport for Ghidra](/java) instructions.\n\n### Preparing the build environment\n\nThere are quite a few dependencies to satisfy:\n\n*   Boost 1.83.0 or higher (a partial copy of 1.83.0 ships in `boost_parts`)\n*   [CMake](https://cmake.org/download/) 3.20 or higher\n*   Suggested: [Ninja](https://ninja-build.org/) for speedy builds\n*   GCC 15 or a recent version of Clang on Linux/macOS. On Windows, use the\n    Visual Studio 2022 compiler and the Windows SDK for Windows 11.\n*   Git 1.8 or higher\n*   Dependencies that will be downloaded:\n    *   Abseil, GoogleTest and Protocol Buffers (35.1)\n    *   Binary Ninja SDK\n    *   IDA SDK\n\n### Linux\n\n#### Prerequisites\n\nThe preferred build environment is Debian 11 (\"Bullseye\").\n\nThis should install all the necessary packages:\n\n```bash\nsudo apt update -qq\nsudo apt install -qq --no-install-recommends build-essential\n```\n\nInstall the latest stable version of CMake:\n\n```bash\nwget https://github.com/Kitware/CMake/releases/download/v4.4.0/cmake-4.4.0-linux-x86_64.sh\nmkdir ${HOME}/cmake\nsh cmake-4.4.0-linux-x86_64.sh --prefix=${HOME}/cmake --exclude-subdir\nexport PATH=${HOME}/cmake/bin:${PATH}\n```\n\nThe following sections assume that your current working directory is at the root\nof the cloned repository.\n\n#### Build BinExport\n\nConfigure and build BinExport and run its tests:\n\n```bash\nmkdir -p build_linux \u0026\u0026 cd build_linux\ncmake .. \\\n    -G Ninja \\\n    -DCMAKE_BUILD_TYPE=Release \\\n    \"-DCMAKE_INSTALL_PREFIX=${PWD}\" \\\n    -DBINEXPORT_ENABLE_IDAPRO=ON \\\n    -DBINEXPORT_ENABLE_BINARYNINJA=ON\ncmake --build . --config Release\nctest --build-config Release --output-on-failure\ncmake --install . --config Release --strip\n```\n\nNote: If you don't want to use Ninja to perform the actual build, omit\nthe `-G Ninja` part.\n\nTo disable the IDA Pro build, set `-DBINEXPORT_ENABLE_IDAPRO=OFF`. Likewise, to\ndisable the Binary Ninja build, set `-DBINEXPORT_ENABLE_BINARYNINJA=OFF`.\n\nThis will download and build Abseil, GoogleTest, Protocol Buffers and the\nBinary Ninja API. If all went well, the `build_linux/binexport-prefix`\ndirectory should contain the file `binexport12_ida.so` (for IDA Pro) as well\nas `binexport12_binaryninja.so` (for Binary Ninja).\n\n### macOS\n\n#### Prerequisites\n\nThe preferred build environment is macOS 26 \"Tahoe\" using Xcode. Older versions\nshould also work.\n\nAfter installing the Developer Tools, make sure to install the command-line\ntools as well:\n\n```bash\nsudo xcode-select --install\n```\n\nThe following sections assume that your current working directory is at the root\nof the cloned repository.\n\n#### CMake\n\nDownload the latest stable version of CMake from the official site and mount its\ndisk image:\n\n```bash\ncurl -fsSL https://github.com/Kitware/CMake/releases/download/v4.4.0/cmake-4.4.0-macos-universal.dmg \\\n    -o $HOME/Downloads/cmake-osx.dmg\nhdiutil attach $HOME/Downloads/cmake-osx.dmg\n```\n\nAt this point you will need to review and accept CMake's license agreement. Now\ninstall CMake:\n\n```bash\nsudo cp -Rf /Volumes/cmake-4.4.0-Darwin-x86_64/CMake.app /Applications/\nhdiutil detach /Volumes/cmake-4.4.0-Darwin-x86_64\nsudo /Applications/CMake.app/Contents/bin/cmake-gui --install\n```\n\nThe last command makes CMake available in the system path.\n\n#### Build BinExport\n\nConfigure and build BinExport and run its tests:\n\n```bash\nmkdir -p build_mac \u0026\u0026 cd build_mac\ncmake .. \\\n    -DCMAKE_BUILD_TYPE=Release \\\n    \"-DCMAKE_INSTALL_PREFIX=${PWD}\" \\\n    -DBINEXPORT_ENABLE_IDAPRO=ON \\\n    -DBINEXPORT_ENABLE_BINARYNINJA=ON\ncmake --build . --config Release -- \"-j$(sysctl -n hw.logicalcpu)\"\nctest --build-config Release --output-on-failure\ncmake --install . --config Release --strip\n```\n\nNote: This will use the standard CMake \"Makefile Generator\". You can use XCode\nor Ninja as generators as well.\n\nTo disable the IDA Pro build, set `-DBINEXPORT_ENABLE_IDAPRO=OFF`. Likewise, to\ndisable the Binary Ninja build, set `-DBINEXPORT_ENABLE_BINARYNINJA=OFF`.\n\nThis will download and build Abseil, GoogleTest, Protocol Buffers and the\nBinary Ninja API. If all went well, the `build_mac/binexport-prefix`\ndirectory should contain the file `binexport12_ida.dylib` (for IDA Pro) as well\nas `binexport12_binaryninja.dylib` (for Binary Ninja).\n\n### Windows\n\nThe preferred build environment is Windows 10 (64-bit Intel) using the Visual\nStudio 2022 compiler and the [Windows SDK for Windows\n10](https://dev.windows.com/en-us/downloads/windows-10-sdk).\n\n#### CMake\n\nDownload and install the latest stable CMake (4.4.0 at the time of writing)\nfrom its [download page](https://cmake.org/download/). Make sure to select\n\"Add CMake to the system PATH for all users\".\n\n#### Git\n\nDownload and install Git from its [download\npage](https://git-scm.com/download/win). Make sure to select the following\noptions:\n\n*   The installation directory should be left at the default\n    `%ProgramFiles%\\Git\\bin\\git.exe`\n*   \"Use Git from the Windows Command Prompt\" - have the setup utility add Git\n    to your system path.\n*   \"Use Windows' default console window\" - to be able to use Git from the\n    regular command prompt.\n\n#### Prepare\n\nThe following sections assume an open command prompt with the current working\ndirectory located at the root of the cloned BinExport repository:\n\n```bat\ngit clone https://github.com/google/binexport.git\ncd binexport\n```\n\n#### Build BinExport\n\nConfigure and build BinExport:\n\n```bat\nif not exist build_msvc mkdir build_msvc\ncd build_msvc\ncmake .. ^\n    -G \"Visual Studio 17 2022\" ^\n    -DCMAKE_BUILD_TYPE=Release ^\n    \"-DCMAKE_INSTALL_PREFIX=%cd%\" ^\n    -DBINEXPORT_ENABLE_IDAPRO=ON ^\n    -DBINEXPORT_ENABLE_BINARYNINJA=ON\ncmake --build . --config Release -- /m /clp:NoSummary;ForceNoAlign /v:minimal\nctest --build-config Release --output-on-failure\ncmake --install . --config Release --strip\n```\n\nNote: This will use the CMake \"Visual Studio\" generator. You can use the Ninja\ngenerator as well.\n\nTo disable the IDA Pro build, set `-DBINEXPORT_ENABLE_IDAPRO=OFF`. Likewise, to\ndisable the Binary Ninja build, set `-DBINEXPORT_ENABLE_BINARYNINJA=OFF`.\n\nThis will download and build Abseil, GoogleTest, Protocol Buffers and the\nBinary Ninja API. If all went well, the `build_msvc/binexport-prefix`\ndirectory should contain the file `binexport12_ida.dll` (for IDA Pro) as well\nas `binexport12_binaryninja.dll` (for Binary Ninja).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgoogle%2Fbinexport","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgoogle%2Fbinexport","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgoogle%2Fbinexport/lists"}