版权所有 2011-2020 Google LLC
BinNavi 是一个二进制分析 IDE - 一个允许用户检查、导航、编辑和注释反汇编代码的控制流图的环境,对可执行文件的调用图执行相同的操作,收集和组合执行跟踪,并通常进行跟踪一组分析师的分析结果。
注意:BinNavi 项目不再处于积极开发状态。
BinNavi 使用商业第三方图形可视化库 (yFiles) 来显示和布局图形。这个库非常强大,并且不容易被替换。
为了使用 yFiles 进行直接开发,您需要它的开发人员许可证。同时,我们希望社区能够为 BinNavi 做出贡献,而无需商业 yFiles 许可证。为了做到这一点并符合 yFiles 许可证,yFiles 的所有接口都需要进行适当的混淆。
为了实现这一目标,我们做了以下工作:
com.google.security.zynamics.binnavi
com.google.security.zynamics.binnavi.yfileswrap
com.google.security.zynamics.zylib
com.google.security.zynamics.zylib.yfileswrap
com.google.security.zynamics.reil
com.google.security.zynamics.reil.yfileswrap
我们正在分发一个预构建的 JAR 文件,其中包含yfileswrap
子包中的所有代码 - 针对 yFiles 进行预链接和混淆。如果您希望在 BinNavi 中更改或添加代码并且没有 yFiles 许可证,您可以在非 yfileswrap 包中自由地执行几乎所有您想要的操作 - 您只需将lib/yfileswrap-obfuscated.jar
放入您的类路径即可测试并查看结果。
如果您希望更改yfileswrap
子目录,请注意您将需要有效的 yFiles 许可证 - 并且您对 BinNavi 项目所做的任何贡献都必须遵守其许可协议。这意味着您不能简单地以不同的名称等公开它们的内部 API。
我们将强制执行这一点 - 我们很高兴找到了一种使用 yFiles 依赖项开源 BinNavi 的方法,并且我们将确保我们提取的任何代码都遵守 yFiles 许可证。
要重建 yFiles 包装器库,请首先将y.jar
和ysvg.jar
复制到third_party/java/yfiles
。然后重建:
mvn dependency:copy-dependencies
ant build-yfiles-wrapper-jar
mvn install:install-file
-Dfile=target/yfileswrap-obfuscated.jar
-DgroupId=com.google.security.zynamics.binnavi
-DartifactId=yfileswrap-obfuscated
-Dversion=6.1
-Dpackaging=jar
-DlocalRepositoryPath=lib
BinNavi 使用 Maven 进行依赖管理,但不用于实际构建。 Java 11 是支持的最低版本。
要从头开始构建,请使用以下命令:
mvn dependency:copy-dependencies
ant build-binnavi-fat-jar
请注意,BinNavi 使用中央 PostgreSQL 数据库来存储反汇编/注释/跟踪 - 因此您需要在您可以访问的地方运行这样的实例。您可以按如下方式启动 BinNavi:
java -jar target/binnavi-all.jar
将代码加载到 Eclipse 中进行进一步开发需要进行一些配置。
build.xml
PROJECT_LOC/src/main/java
java
**/yfileswrap/**
添加到要排除的目录列表中。CMain
。你应该准备好离开这里了。
作为该项目的一部分,我们正在分发一个 IDA Pro 插件,该插件可将 IDA 中的反汇编导出为 BinNavi 所需的 PostgreSQL 数据库格式。运行 BinNavi 时,只需为 IDA 配置正确的路径,如有必要,单击“安装插件”按钮 - 现在您应该能够导入反汇编文件了。
目前,我们只有 IDA 导出插件 - 但我们非常希望有人能在不久的将来帮助我们为其他反汇编程序构建导出功能。
请注意,目前 Maven 构建是 BinNavi 的权威构建系统。 Gradle 纯粹是实验性的,很可能会发生变化。
您可以通过运行以下命令使用 gradle 构建 BinNavi:
在 Linux/OS X 上:
$ ./gradlew clean jar
在 Windows 上:
/gradlew.bat clean jar
这将在build/libs/
下的项目路径中生成 jar。
在 Linux/OS X 上:
$ ./gradlew eclipse
在 Windows 上:
./gradlew.bat eclipse
作为项目创建过程的一部分,它将下载依赖项。完成后,执行以下操作将其加载到 Eclipse 中:
您的 Eclipse 工作区现已为 BinNavi 设置并完成。
在 Linux/OS X 上:
$ ./gradlew idea
在 Windows 上:
./gradlew.bat idea
作为项目创建过程的一部分,它将下载依赖项。完成后,执行以下操作将其加载到 IntelliJ 中:
您的 IntelliJ 环境现已针对 IntelliJ 设置并完成。