{"id":13617215,"url":"https://github.com/google/binnavi","last_synced_at":"2026-01-14T12:59:45.086Z","repository":{"id":36725605,"uuid":"41032178","full_name":"google/binnavi","owner":"google","description":"BinNavi is a binary analysis IDE that allows to inspect, navigate, edit and annotate control flow graphs and call graphs of disassembled code.","archived":true,"fork":false,"pushed_at":"2020-10-23T07:04:37.000Z","size":136495,"stargazers_count":2891,"open_issues_count":0,"forks_count":456,"subscribers_count":213,"default_branch":"master","last_synced_at":"2025-11-10T00:24:29.428Z","etag":null,"topics":["analysis","binnavi","java","reverse-engineering","yfiles"],"latest_commit_sha":null,"homepage":"http://www.zynamics.com/binnavi.html","language":"Java","has_issues":false,"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}},"created_at":"2015-08-19T12:20:24.000Z","updated_at":"2025-11-05T00:03:52.000Z","dependencies_parsed_at":"2022-08-25T05:20:51.822Z","dependency_job_id":null,"html_url":"https://github.com/google/binnavi","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/google/binnavi","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Fbinnavi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Fbinnavi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Fbinnavi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Fbinnavi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/google","download_url":"https://codeload.github.com/google/binnavi/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Fbinnavi/sbom","scorecard":{"id":436451,"data":{"date":"2025-08-11","repo":{"name":"github.com/google/binnavi","commit":"4cfdd91cdda2a6150f537df91a8c4221ae50bb6d"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.5,"checks":[{"name":"Code-Review","score":4,"reason":"Found 7/17 approved changesets -- score normalized to 4","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":"Maintained","score":0,"reason":"project is archived","details":["Warn: Repository is archived."],"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":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"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":"Dangerous-Workflow","score":-1,"reason":"no workflows found","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":"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":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact v1.2.0 not signed: https://api.github.com/repos/google/binnavi/releases/7267988","Warn: release artifact v6.1.0 not signed: https://api.github.com/repos/google/binnavi/releases/2830722","Warn: release artifact v6.0.0 not signed: https://api.github.com/repos/google/binnavi/releases/1694088","Warn: release artifact v1.2.0 does not have provenance: https://api.github.com/repos/google/binnavi/releases/7267988","Warn: release artifact v6.1.0 does not have provenance: https://api.github.com/repos/google/binnavi/releases/2830722","Warn: release artifact v6.0.0 does not have provenance: https://api.github.com/repos/google/binnavi/releases/1694088"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"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":"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":"Binary-Artifacts","score":6,"reason":"binaries present in source code","details":["Warn: binary detected: gradle/wrapper/gradle-wrapper.jar:1","Warn: binary detected: lib/com/google/security/zynamics/binnavi/yfileswrap-obfuscated/6.1/yfileswrap-obfuscated-6.1.jar:1","Warn: binary detected: src/main/java/com/google/security/zynamics/binnavi/data/tutorials/primes.exe:1","Warn: binary detected: src/main/java/com/google/security/zynamics/lib/yfileswrap-obfuscated.jar:1"],"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":-1,"reason":"no dependencies found","details":null,"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"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 20 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":"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"}}]},"last_synced_at":"2025-08-19T04:47:27.942Z","repository_id":36725605,"created_at":"2025-08-19T04:47:27.942Z","updated_at":"2025-08-19T04:47:27.942Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28420815,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T10:47:48.104Z","status":"ssl_error","status_checked_at":"2026-01-14T10:46:19.031Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["analysis","binnavi","java","reverse-engineering","yfiles"],"created_at":"2024-08-01T20:01:38.491Z","updated_at":"2026-01-14T12:59:45.069Z","avatar_url":"https://github.com/google.png","language":"Java","readme":"# BinNavi [![Build Status](https://api.travis-ci.org/google/binnavi.svg?branch=master)](https://travis-ci.org/google/binnavi)\n\nCopyright 2011-2020 Google LLC\n\n## Introduction\n\nBinNavi is a binary analysis IDE - an environment that allows users to inspect,\nnavigate, edit, and annotate control-flow-graphs of disassembled code, do the\nsame for the callgraph of the executable, collect and combine execution traces,\nand generally keep track of analysis results among a group of analysts.\n\n**Note: The BinNavi project is no longer under active development.**\n\n\n## Commercial third-party dependency\n\nBinNavi uses a commercial third-party graph visualisation library (yFiles) for\ndisplaying and laying out graphs. This library is immensely powerful, and not\neasily replaceable.\n\nIn order to perform direct development using yFiles, you need a developer\nlicense for it. At the same time, we want the community to be able to contribute to\nBinNavi without needing a commercial yFiles license. In order to do this and\nconform to the yFiles license, all interfaces to yFiles need to be properly\nobfuscated.\n\nIn order to achieve this, we did the following:\n\n1) BinNavi and all the libraries have been split into two: The parts of the\nproject that directly depend on yFiles were split into subpackages called\n\"yfileswrap\":\n\n*   `com.google.security.zynamics.binnavi`\n*   `com.google.security.zynamics.binnavi.yfileswrap`\n*   `com.google.security.zynamics.zylib`\n*   `com.google.security.zynamics.zylib.yfileswrap`\n*   `com.google.security.zynamics.reil`\n*   `com.google.security.zynamics.reil.yfileswrap`\n\nWe are distributing a pre-built JAR file with all the code in the ``yfileswrap``\nsubpackages - pre-linked and obfuscated against yFiles. If you wish to change\nor add code in BinNavi and do not have a yFiles license, you can freely do \npretty much  whatever you want in the non-yfileswrap packages - you can simply\nput the ``lib/yfileswrap-obfuscated.jar`` into your classpath to test and see\nthe results.\n\nIf you wish to make changes to the ``yfileswrap`` subdirectories, please be aware\nthat you will need a valid yFiles license - and any contribution that you make\nto the BinNavi project has to honor their license agreement. This means that\nyou can't simply expose their inner APIs under different names etc.\n\nWe will enforce this - we're very happy to have found a way to open-source\nBinNavi with the yFiles dependency, and we will make sure that any code we pull\nin respects the yFiles license.\n\n### Note for maintainers/yFiles license holders\n\nTo rebuild the yFiles wrapper library, first copy `y.jar` and `ysvg.jar` to\n`third_party/java/yfiles`. Then rebuild with:\n\n```\nmvn dependency:copy-dependencies\nant build-yfiles-wrapper-jar\nmvn install:install-file \\\n    -Dfile=target/yfileswrap-obfuscated.jar \\\n    -DgroupId=com.google.security.zynamics.binnavi \\\n    -DartifactId=yfileswrap-obfuscated \\\n    -Dversion=6.1 \\\n    -Dpackaging=jar \\\n    -DlocalRepositoryPath=lib\n```\n\n## Building BinNavi from scratch\n\nBinNavi uses Maven for its dependency management, but not for the actual build.\nJava 11 is the minimum supported version.\n\nTo build from scratch use these commands:\n\n```\nmvn dependency:copy-dependencies\nant build-binnavi-fat-jar\n```\n\n## Running BinNavi for the first time\n\nPlease be aware that BinNavi makes use of a central PostgreSQL database for\nstoring disassemblies/comments/traces - so you need to have such an instance\nrunning somewhere accessible to you. You can launch BinNavi as follows:\n\n```\njava -jar target/binnavi-all.jar\n```\n\n## Importing the project into Eclipse\n\nLoading the code into Eclipse for further development requires a little bit of\nconfiguration.\n\n1. Install the dependencies (as described above) and make sure you have a\n   Java SDK with 1.8 language compliance installed.\n2. Create a new \"Java Project From Existing Ant Buildfile\" and use the file ``build.xml``\n3. Select the \"javac\" task found in target \"build-binnavi-jar\"\n4. Open the \"Project Properties\" dialog and choose \"Java build Path\" showing the \"Source\" tab.\n5. Remove all but one source folder and edit it to have the following properties:\n   * Linked Folder Location: ``PROJECT_LOC/src/main/java``\n   * Folder Name: ``java``\n   * Click on \"Next\"\n6. Add ``**/yfileswrap/**`` to the list of directories to exclude.\n7. Go to \"Run-\u003eRun As\", select \"Java Application\" and then search for ``CMain``.\n\nYou should be ready to go from here.\n\n## Exporting disassemblies from IDA\n\nAs part of this project, we are distributing an IDA Pro plugin that exports\ndisassemblies from IDA into the PostgreSQL database format that BinNavi\nrequires. When running BinNavi, simply configure the right path for IDA,\nclick on the \"install plugin\" button if necessary -- you should now be able to\nimport disassemblies.\n\n## Using other disassemblers than IDA\n\nRight now, we only have the IDA export plugin - but we are hoping very much\nthat someone will help us build export functionality for other disassemblers\nin the near future.\n\n## Building BinNavi with Gradle\n\n*Please note that at current the Maven build is the authoritative build system for BinNavi. \nGradle is purely experimental and is likely to change.*\n\nYou can build BinNavi with gradle by running the following:\n\nOn Linux / OS X:\n\n```\n$ ./gradlew clean jar \n```\n\nOn Windows:\n\n```\n/gradlew.bat clean jar\n```\n\nThis will produce the jar in the project route under `build/libs/`. \n\n### Loading the project into Eclipse with Gradle\n\nOn Linux / OS X:\n\n```\n$ ./gradlew eclipse \n```\n\nOn Windows:\n\n```\n./gradlew.bat eclipse\n```\n\nAs part of the project creation process it will download the dependencies. Once complete\ndo the following to load into Eclipse:\n\n1. Open Eclipse.\n2. File \u003e Import... from menu bar.\n3. From the window that appears select General \u003e Existing Projects into Workspace.\n4. Ensure the \"Select root directory\" radio button is selected.\n5. Click Browse... and navigate to the project directory. \n6. The projects area should now have \"binnavi\" and a tick next to it.\n7. Press Finish.\n\nYou Eclipse workspace is now setup and complete for BinNavi. \n\n### Loading the project into IntelliJ with Gradle\n\nOn Linux / OS X:\n\n```\n$ ./gradlew idea\n```\n\nOn Windows:\n\n```\n./gradlew.bat idea\n```\n\nAs part of the project creation process it will download the dependencies. Once complete\ndo the following to load into IntelliJ:\n\n1. Open IntelliJ.\n2. Select \"Open\" from main window.\n3. Navigate to the project folder and should see the IntelliJ icon. This signifies its a project.\n4. Press Ok and wait for it to import and load. \n5. IntelliJ might not recognise it as a gradle project. Select enable from the popup window and use local gradle. \n\nYour IntelliJ environment is now setup and complete for IntelliJ.\n","funding_links":[],"categories":["Tools","Debugging and Reverse Engineering","Java","\u003ca id=\"fcf75a0881617d1f684bc8b359c684d7\"\u003e\u003c/a\u003e效率\u0026\u0026导航\u0026\u0026快速访问\u0026\u0026图形\u0026\u0026图像\u0026\u0026可视化","使用","Java (504)"],"sub_categories":["Essential Tools","Other Resources","\u003ca id=\"3b1dba00630ce81cba525eea8fcdae08\"\u003e\u003c/a\u003e图形\u0026\u0026图像","功能"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgoogle%2Fbinnavi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgoogle%2Fbinnavi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgoogle%2Fbinnavi/lists"}