
Extrair rótulos de arquivos do IDA, Ghidra, Binary Ninja e Relyze e exportar banco de dados x64dbg. Incluindo endereço principal do radare2.
Este comando extrai todos os rótulos encontrados no arquivo LST fornecido como único argumento. Um banco de dados x64dbg é criado no diretório atual com base nos rótulos extraídos.
O arquivo LST pode ser gerado no IDA a partir do menu File: Produce file -> Create LST file...
$ lst2x64dbg sample.lst
Este comando extrai todos os rótulos encontrados no arquivo CSV fornecido como único argumento. Um banco de dados x64dbg é criado no diretório atual com base nos rótulos extraídos. O valor de imagebase deve ser fornecido.
O arquivo CSV pode ser gerado no Ghidra a partir do menu Window selecionando Symbol Table
Na janela da tabela de símbolos que se abre, ordene os dados pela coluna Location. Em seguida, selecione todos os símbolos que não são locais externos. Com os símbolos desejados selecionados, clique com o botão direito e selecione: Export -> Export to CSV...
NOTA: Se você selecionar locais externos, eles serão ignorados.

Nomeie este arquivo como <module_name>.csv
$ ghidra2x64dbg -i 400000 sample.csv
O valor de imagebase pode ser encontrado no topo do painel de desmontagem na janela CodeBrowser. Faz parte do cabeçalho DOS.

O Ghidra possui uma opção de análise que está desativada por padrão e que pode fornecer mais rótulos para código em uma amostra em certas situações. Esta opção, WindowsPE x86 Propagate External Parameters, é encontrada na janela Analysis Options quando uma amostra é aberta pela primeira vez na ferramenta CodeBrowser.

Este comando extrai todos os rótulos encontrados em um arquivo JSON bnida do Binary Ninja fornecido como único argumento. Um banco de dados x64dbg é criado no diretório atual com base nos rótulos extraídos. O valor de imagebase deve ser fornecido.
Para gerar um arquivo bnida a partir do Binary Ninja, primeiro é necessário instalar o plugin de acordo com as instruções:
https://zznop.github.io/bnida/
Depois que o executável for carregado no Binary Ninja, navegue até o menu Tools e selecione bnida: Export analysis data.

Nomeie este arquivo como <module_name>.json
$ binja2x64dbg -i 400000 sample.json
Este comando extrai todos os rótulos encontrados em um banco de dados x64dbg gerado pelo Relyze fornecido como único argumento. Um banco de dados x64dbg é criado no diretório atual com base nos rótulos extraídos.
Para gerar um banco de dados x64dbg no Relyze, basta abrir o executável e, na visualização Code, clicar com o botão direito e exportar.

Nomeie este arquivo como <module_name>_relyze.dd32 ou <module_name>_relyze.dd64
$ relyze2x64dbg sample_relyze.dd32
Ambos os comandos agora suportam a inclusão da localização de main() conforme detectado
pelo radare2. Basta adicionar -r ou -main a qualquer comando assim:
$ lst2x64dbg -r 0x0040a53a sample.lst
Basta copiar e colar o endereço virtual de main da interface do Cutter ou da linha de comando do radare2.

Cada uma dessas ferramentas verificará o diretório atual em busca de um banco de dados x64dbg que foi criado por uma execução anterior de uma das ferramentas. Qualquer deslocamento desse banco de dados que já possua um rótulo não será alterado por uma execução subsequente de qualquer uma das ferramentas. Em outras palavras, cada ferramenta expande a lista de rótulos, mas não sobrescreve nenhum rótulo que já exista.
Se você criou rótulos manualmente, é recomendável criá-los apenas em um desmontador. Além disso, faça com que a saída desse desmontador seja a primeira a ser processada por uma das ferramentas acima. Dessa forma, todos os seus rótulos personalizados terão garantia de existir no novo banco de dados x64dbg.
Em uma futura iteração deste software, haverá uma maneira de resolver conflitos na etapa de mesclagem do processamento.