
A Collare é uma ferramenta para engenharia reversa colaborativa que visa permitir que as equipes que precisam usar mais do que uma ferramenta durante um projeto para colaborar sem a necessidade de compartilhar os arquivos em um local separado. Ele também contém um gerenciamento de usuários muito simples e, como tal, pode ser usado para um servidor de vários projetos, onde diferentes equipes funcionam em diferentes projetos. O back-end da ferramenta é um Flask app com nginx na frente dele em execução no Docker que funciona com arquivos e manifestos baseados em JSON que mantêm os dados relevantes. O front-end é uma ferramenta GUI baseada em PYQT com uma interface simples que permite gerenciar os projetos e trabalhar com os arquivos binários e seus bancos de dados de engenharia reversa correspondentes. A partir de agora, a ferramenta suporta Binary Ninja , Cutter (Rizin) , Ghidra , Hopper Dissassembler , IDA , JEB e Android Studio (Decompiled by JADX) . A implementação é abstraída do funcionamento interno dessas ferramentas o máximo possível para evitar problemas com quaisquer alterações na API e, portanto, não se integra diretamente a essas ferramentas na forma de um plug -in (exceto para os plug -ins de migração de dados descritos abaixo). O trabalho baseia-se puramente no gerenciamento dos arquivos produzidos por essas ferramentas (literalmente apenas com base nas extensões de arquivo bem conhecidas) e nas operações simples check-out e check-in no estilo SVN.
Pegue a versão binária mais recente deste repositório ou clone o repositório e execute sudo python3 setup.py install no linux ou use a linha de comando no Windows e execute python3 setup.py install . No Linux, isso instalará a ferramenta no PATH e você poderá executá -lo simplesmente com o comando collare . No Windows, isso colocará o arquivo no C:Users<USERNAME>AppDataLocalProgramsPython<PYTHON_VERSION>Scriptscollare.exe (dependendo de como você instalou o Python).
Para as UIs da área de trabalho baseadas no GNOME, você pode usar o seguinte arquivo da área de trabalho (os caminhos para os arquivos podem variar com base na versão do colare e 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
Para ativar o suporte ao cortador, adicione um Cutter de arquivo ao seu caminho (quando você abre Cutter de redação cmd / terminal deve iniciar o aplicativo). Ao salvar os projetos do Cutter (Rizin), você deve anexar manualmente .rzdb . Não remova a extensão que o arquivo já possui (por exe , por so ).
Para ativar o suporte ao Ninja binário, adicione um arquivo binaryninja ao seu caminho (quando você abre cmd / terminal Writing binaryninja deve iniciar o aplicativo). O Ninja binário está removendo extensões de arquivo por padrão, no entanto, a ferramenta é responsável por isso, para que não haja necessidade de colocar a extensão original de arquivo de volta manualmente. Salvar os projetos como está em um caminho padrão é suficiente para poder pressionar com sucesso o banco de dados local bndb .
Para ativar o suporte ao Hopper Desmontingbler, adicione uma Hopper ao seu caminho (quando você abre a Hopper de escrita cmd / terminal deve iniciar o aplicativo). O Hopper está removendo extensões de arquivo por padrão, no entanto, a ferramenta é responsável por isso, para que não haja necessidade de colocar a extensão de arquivo original de volta manualmente. Salvar os projetos simplesmente com Ctrl+S é suficiente para poder pressionar com sucesso o banco de dados Local hop .
Para ativar o suporte ao Jeb, adicione um arquivo jeb ao seu caminho (quando você abre a escrita cmd / terminal jeb deve iniciar o aplicativo). Isso pode ser feito renomeando o arquivo de script de corredor padrão para o seu sistema operacional (para o Windows jeb.bat jeb .
Para ativar o suporte à ferramenta IDA, adicione um arquivo ida64 e ida ao seu caminho (quando você abre a gravação de cmd / terminal ida64 / ida , deve iniciar o aplicativo).
Para ativar o suporte a esta ferramenta, adicione um arquivo ghidraRun e analyzeHeadless ( .bat for windows) ao seu caminho (quando você abre cmd / redação terminal ghidraRun deve iniciar o aplicativo). Observe que o analyzeHeadless está na pasta support no diretório raiz ghidra, portanto, ajuste PATH para acomodar os dois arquivos. O processo de inicialização do banco de dados com Ghidra é um pouco mais complicado, pois não há como o Ghidra processar o arquivo sem criar um projeto. Para poder pressionar o banco de dados GHIDRA (referido como ghdb ), você será solicitado a criar um projeto manualmente sempre que o processamento automático falhar (basicamente sempre que o arquivo que você processa não for Elf/PE) e especifique o caminho para o arquivo gpr (desculpe por isso).
Como os arquivos APK e JAR são frequentemente encontrados durante os esforços de engenharia reversa, a ferramenta de colar também suporta trabalhar com esses tipos de arquivos. Para ativar o suporte a essas ferramentas, é necessário garantir que os arquivos android-studio e jadx estejam no caminho (quando você abre a redação cmd / terminal android-studio / jadx deve iniciar o aplicativo). A ferramenta JADX é usada para executar a descompilação do arquivo JAR/APK e o estúdio Android é usado para abrir os arquivos resultantes. Observe que o uso do Android Studio é opcional, pois você pode alias qualquer outra ferramenta que lida com projetos gradle sob o comando android-studio (como Intellij Idea).
Depois de implantar o lado do servidor, conforme mencionado em seu próprio arquivo ReadMe, é necessário distribuir o arquivo de certificado usado para todos os usuários do aplicativo, além de usar a conta admin padrão com a senha admin para criar outras contas de usuário (não se esqueça de alterar a senha do usuário admin ) através da guia Admin . Quando os usuários são configurados, qualquer um pode criar seus próprios projetos e começar a trabalhar com a própria ferramenta.
Para criar um usuário do projeto, deve primeiro autenticar o servidor remoto digitando o URL, credenciais e fornecer um certificado para validar a identidade do servidor. Depois disso, o status será alterado para Connected e é possível selecionar ou excluir projetos existentes ou criar um novo projeto simplesmente inserindo o nome (caracteres alfanuméricos e apenas _ ) e selecionando usuários que participarão do projeto (pode ser alterado posteriormente na guia Admin ). Observe que o usuário que está criando o projeto é adicionado automaticamente à lista de usuários para que você não precise selecionar.

Depois de estar na guia Project View você pode criar novas pastas (caracteres alfanuméricos e apenas _ , desculpe) e usar arrastar e soltar para fazer upload de arquivos (ou pastas).

Como a ferramenta atualmente não possui plugins ou ganchos nativos que permitiriam uploads automáticos quando o projeto for salvo, é necessário que o push local do arquivo DB seja acionado manualmente após a criação dos bancos de dados desejados. Isso pode ser feito clicando com o botão direito do mouse no arquivo binário carregado e escolhendo a ferramenta em que você deseja processar o binário. Você pode fazer uma análise básica, mas é fortemente recomendável salvar o arquivo sem alterar nada (além de anexar rzdb no processo e um processo completamente diferente com Ghidra). Não altere o caminho e o nome do arquivo . Depois de fazer isso e fechar o desmontador, você pode clicar com o botão direito do mouse no nome binário e selecionar opção Push Local DBs . Isso fará o upload do banco de dados local e a partir de agora quando você deseja trabalhar com o arquivo de banco de dados necessário para executar Check-out . Observe que cada binário pode ser processado em todas as ferramentas separadamente, mas apenas um arquivo db por binário e ferramenta podem existir.

Quando você deseja apenas inspecionar o arquivo, clique com o botão direito do mouse no arquivo DB desejado e selecione Opção Open File (ou apenas clique duas vezes). Se o arquivo for verificado para você, isso abrirá o arquivo local e você poderá executar livremente quaisquer alterações no arquivo DB. Quando terminar (ou quando você simplesmente deseja pressionar as alterações), pode selecionar a opção Check-in . Isso fará o upload das alterações no servidor e solicitará se você deseja manter o arquivo verificado para obter mais alterações. Se você deseja descartar suas alterações locais, selecione a opção Undo Check-out no menu de contexto. Isso descartará suas alterações e permitirá que você continue com o arquivo do servidor. Abrir um arquivo sem fazer uma operação Check-out primeiro o abrirá em um modo falso somente leitura (você pode fazer alterações no arquivo DB, mas elas serão perdidas na próxima vez que você check-out ou abrir o arquivo).

A ferramenta também suporta a versão dos arquivos do banco de dados de uma maneira que toda ação Check-in contagens como uma nova versão do arquivo DB. Você será solicitado a inserir um comentário para a versão usada para dar mais contexto às alterações aplicadas nessa versão. É então possível abrir ou verificar as versões anteriores dos arquivos e trabalhar neles.

A pasta Plugins neste repositório contém plugins para as ferramentas suportadas que permitem compartilhar comentários e nomes de funções entre as ferramentas, caso você trabalhe em um binário com várias ferramentas. Siga as instruções padrão de instalação do plug -in para a ferramenta em que você está interessado. Cada plug -in oferece uma função Import e Export . Quando você planeja compartilhar os dados entre as ferramentas, sempre certifique -se de Import dados primeiro para evitar renomear funções que já foram renomeadas por outra pessoa. Se o plug -in vier com algumas capturas, elas serão mencionadas no arquivo ReadMe do plug -in fornecido. Observe que os plugins têm como objetivo migrar os dados para outra ferramenta, e não para uma colaboração simultânea de várias pessoas.
