
Collare是一种协作逆向工程的工具,旨在允许在项目期间需要使用多个工具的团队来协作,而无需在单独的位置上共享文件。它还包含一个非常简单的用户管理,因此可以用于不同团队在不同项目上工作的多项目服务器。该工具的后端是一个简单的Flask app ,它在Docker中运行的nginx在其前面运行,可与文件和基于JSON的基于JSON的表现一起使用相关数据。前端是一个基于PYQT的GUI工具,其简单接口允许管理项目并使用二进制文件及其相应的反向工程数据库。截至目前,该工具支持Binary Ninja , Cutter (Rizin) , Ghidra , Hopper Dissassembler , IDA , JEB和Android Studio (Decompiled by JADX) 。从这些工具的内部工作中抽象出该实现,以避免使用任何API更改的问题,因此不会直接以插件的形式集成到这些工具中(除了下面所述的数据迁移插件除外)。这项工作纯粹基于管理这些工具生成的文件(实际上仅基于众所周知的文件扩展名)和简单的SVN风格的check-out和check-in操作。
从此存储库中获取最新的二进制版本,或克隆仓库并运行sudo python3 setup.py install或在Windows上使用命令行并运行python3 setup.py install 。在Linux上,这将将工具安装到PATH ,您将能够仅使用collare命令运行它。在Windows上,这将把文件放入C:Users<USERNAME>AppDataLocalProgramsPython<PYTHON_VERSION>Scriptscollare.exe (取决于您安装python)。
对于基于GNOME的桌面UIS,您可以使用以下桌面文件(文件路径可能会根据Collare和Python的版本而变化):
[Desktop Entry]
Type=Application
Encoding=UTF-8
Name=CollaRE
Exec=/usr/local/bin/collare
Icon=/usr/local/lib/python3.8/dist-packages/collare-1.2-py3.8.egg/collare/icons/collare.png
Terminal=false
要启用对切割器的支持,将文件Cutter添加到路径上(打开cmd / terminal写作时, Cutter应启动应用程序)。保存切割器(Rizin)项目时,您必须手动附加.rzdb 。请勿删除文件已经具有的扩展名(例如exe so )。
要启用对二进制忍者的支持,请在您的路径中添加文件binaryninja ninja(打开cmd / terminal写作时, binaryninja应该启动该应用程序)。 Binary Ninja默认情况下将删除文件扩展名,但是该工具对此进行了解释,因此无需手动将原始文件扩展放回。在默认路径中保存项目足以成功推动本地bndb数据库。
为了支持Hopper拆卸器的支持,请在路径中添加文件Hopper (打开cmd / terminal写作时, Hopper应该启动该应用程序)。 Hopper默认情况下将删除文件扩展名,但是工具对此进行了解释,因此无需手动将原始文件扩展放回。简单地使用Ctrl+S保存项目足以成功推动本地hop数据库。
为了启用JEB的支持,将文件jeb添加到您的路径(打开cmd / terminal写作时jeb应该启动应用程序)。这可以通过将OS的默认运行脚本文件重命名为jeb来完成(对于Windows实际上是jeb.bat )。
为了启用IDA工具的支持,将文件ida64和ida添加到您的路径(打开cmd / terminal写作时, ida64 / ida应启动应用程序)。
为了启用此工具的支持,将文件ghidraRun添加到路径analyzeHeadless (Windows的.bat )(.bat)到您的路径(打开cmd / terminal写作时ghidraRun应该启动该应用程序)。请注意,Ghidra根目录中的analyzeHeadless在support文件夹中,因此请确保调整PATH以容纳两个文件。用Ghidra初始化数据库的过程更为复杂,因为Ghidra无法在不创建项目的情况下处理文件。因此,为了能够推动GHIDRA数据库(称为ghdb ),您将在自动处理失败时手动创建项目(基本上每当您处理的文件不是ELF/PE时),然后指定gpr文件的路径(对不起)。
由于在反向工程工作期间经常遇到APK和JAR文件,因此Collare工具还支持使用这些类型的文件。为了启用对这些工具的支持,有必要确保文件android-studio和jadx都在路径中(当您打开cmd / terminal写作时android-studio / jadx应启动应用程序)。 JADX工具用于执行jar/apk文件的反编译,而Android Studio用于打开结果文件。请注意,使用Android Studio是可选的,因为您可以在android-studio Command(例如Intellij Idea)下处理任何其他处理Gradle项目的工具。
如其自己的readme文件中提到的部署服务器端后,有必要向应用程序的所有用户分配使用的证书文件,并使用带有admin密码的默认admin帐户来创建其他用户帐户(不要忘记要通过Admin选项卡更改admin用户的密码)。配置用户时,任何人都可以创建自己的项目并开始使用该工具本身。
要创建一个项目,必须首先通过输入URL,凭据并提供证书来验证服务器身份来对远程服务器进行身份验证。之后,状态将变为Connected ,可以选择或删除现有项目或创建一个新项目,只需输入名称(字母数字字符和_仅_),然后选择将参与该项目的用户(可以在稍后在Admin选项卡”中更改)。请注意,正在创建项目的用户会自动添加到用户列表中,因此您不必选择自己。

在Project View选项卡上后,您可以创建新文件夹(字母数字字符,只有_ ,对不起),然后使用拖放来上传文件(或文件夹)。

由于该工具当前没有任何插件或本机挂钩,这些插件或本机挂钩在保存项目时允许自动上传,因此需要在创建所需的数据库后手动触发本地DB文件按钮。这可以通过右键单击上传的二进制文件并选择要处理二进制文件的工具来完成。您可以进行基本分析,但是强烈建议仅保存文件而不更改任何内容(除了在切刀中附加rzdb以及与Ghidra完全不同的过程外)。不要更改路径和文件名。执行此操作并关闭拆卸器后,您可以右键单击二进制名称,然后选择“ Push Local DBs 。这将上传本地数据库,从现在开始,当您要使用DB文件时,您需要进行Check-out 。请注意,每个二进制文件都可以在所有工具中分别处理,但是每个二进制文件只有一个DB文件,并且工具可以存在。

当您只想检查文件时,您可以右键单击所需的DB文件,然后选择“ Option Open File (或双击)。如果向您签到文件,这将打开本地文件,您可以自由执行对数据库文件的任何更改。完成(或者只想推更改时)时,您可以选择Check-in选项。这将把更改上传到服务器,并提示您是否要保留检查文件以进行进一步更改。如果要丢弃本地更改,请从“上下文”菜单中选择Undo Check-out选项。这将丢弃您的更改,并允许您继续使用服务器的文件。首先打开文件而无需进行Check-out操作,将以虚假的读取模式将其打开(您可以更改DB文件,但是下次您结帐或打开文件时会丢失这些模式)。

该工具还以每个Check-in操作将DB文件视为DB文件的新版本的方式支持DB文件。将提示您插入该版本的评论,该版本用于为该版本中应用的更改提供更多上下文。然后,可以打开或签出文件的先前版本并处理这些版本。

该存储库中的插件文件夹包含用于受支持的工具的插件,您可以在工具之间共享评论和功能名称,以防您使用多个工具在一个二进制文件上工作。按照您感兴趣的工具的标准插件安装说明。每个插件都提供Import和Export功能。当您计划共享工具之间的数据时,请务必确保首先Import数据,以避免重命名已重命名的功能。如果插件带有一些捕获量,则在给定插件的README文件中提到了这些插件。请注意,插件旨在将数据迁移到其他工具,而不是为了同时进行多个人的协作。
