COVIL HACKER

, ! .


» COVIL HACKER » rachaduras/inversão » Artigo Introdução ao cortador


Artigo Introdução ao cortador

1 2 2

1

A maioria dos meus posts anteriores foram sobre a reversão de binários com Radare2/Rizin a partir da linha de comando. Embora seja uma ótima opção, recentemente mudei para usar uma GUI alternativa: Cutter. Esta nota será uma introdução a esta ferramenta e como usá-la.

O que é Cutter

Cutter é uma GUI para o desmontador Rizin. Cutter foi originalmente usado em Radare2, então quando Radare2 evoluiu para Rizin, Cutter mudou também.
O Cutter combina os muitos recursos complexos dos comandos do Rizin em uma interface fácil de usar, ao mesmo tempo em que fornece acesso à linha de comando para usuários mais avançados. Isso é ideal para iniciantes, mas usuários experientes do Rizin/Radare2 também podem trabalhar com sucesso com esta ferramenta.

Interface de usuário do cortador

A interface do usuário é dividida em "painéis" separados que o usuário pode arrastar e soltar no aplicativo principal para personalizar a interface do usuário ao seu gosto. Por exemplo, o usuário pode colocar a exibição de desmontagem da função atual no lado esquerdo da tela e a exibição do descompilador da mesma função no lado direito da tela. Este é um caso de uso muito simples, mas mostra que a interface do usuário pode ser tão complexa ou tão simples quanto o usuário desejar.

https://forumupload.ru/uploads/001b/c9/09/2/t195245.png

Adicionando novas abas

Juntamente com as visualizações do descompilador e do desmontador, o Cutter permite que outras ferramentas sejam adicionadas à tela para facilitar a análise. Essas ferramentas incluem strings, visão geral do gráfico, informações de tipo personalizado, o console Rizin, uma função de pesquisa e muito mais. Para adicionar uma nova janela ao layout atual, vá ao menu Janelas e selecione a tela que deseja colocar. Você pode arrastar a janela ao redor do aplicativo e colocá-la em qualquer lugar na interface do usuário. Por exemplo, o usuário pode adicionar uma nova guia de desmontagem à janela atual acessando o Windows e clicando em Adicionar desmontagem.

https://forumupload.ru/uploads/001b/c9/09/2/t310396.png

Isso adicionará uma nova guia à parte inferior da janela atual.

https://forumupload.ru/uploads/001b/c9/09/2/t75329.png

Depois de criar uma nova guia, você pode movê-la para uma janela separada clicando no ícone de losango no canto superior direito da janela. Agora você pode arrastar a nova janela para o lado direito da tela para compartilhá-la com outra janela. Isso permitirá que você tenha duas janelas abertas ao mesmo tempo.

https://forumupload.ru/uploads/001b/c9/09/2/t940190.webp

Visualizando o Disassembler

A janela do disassembler mostra uma desmontagem da função atual que você está visualizando. Também permite "dessincronizar" a janela atual com outras janelas de desmontagem abertas. Isso permite visualizar várias funções ao mesmo tempo sem alterar a aparência de outras janelas abertas. Depois que as duas janelas de desmontagem aparecerem, você pode perceber que ambas estão "sincronizadas", o que significa que clicar em uma janela altera a visualização da outra e vice-versa. Para dessincronizar essas janelas, você pode clicar com o botão direito do mouse em uma delas e selecionar a opção de compensação de sincronização/dessincronização.

https://forumupload.ru/uploads/001b/c9/09/2/t802882.webp

Agora é possível abrir várias funções em nossa nova janela de desmontagem sem afetar a representação original da função. Isso é extremamente útil ao analisar um arquivo binário com várias chamadas de função. Outros recursos na janela de desmontagem incluem: a capacidade de alterar os nomes das funções, variáveis ​​e obter referências a endereços específicos. Tudo isso está disponível clicando com o botão direito do mouse em uma instrução ou variável do montador sobre a qual você deseja obter informações. Por exemplo, você pode alterar o nome de uma variável clicando com o botão direito do mouse e selecionando Renomear local..... O Cutter exibirá um menu que permite renomear a variável. Você também pode alterar as informações de tipo da variável para corresponder melhor ao código real.

https://forumupload.ru/uploads/001b/c9/09/2/t319120.webp

Visualização gráfica

Como a maioria dos desmontadores, o Cutter oferece uma representação gráfica da função atual. Isso permite que o analista veja as ramificações que ocorrem na função a partir das instruções if e fornece uma navegação melhor do que a exibição de desmontagem padrão. Você pode adicionar uma exibição de gráfico acessando a seção Windows e clicando no botão Adicionar gráfico.

Outro recurso útil é o Graph View, que oferece uma visão de alto nível de todo o gráfico de uma função. Essa exibição permite navegar facilmente pelo gráfico e também permite ver onde o cursor está em comparação com a função inteira. Para adicionar uma visão geral do gráfico, vá para a guia Windows e selecione Visão geral do gráfico. Você pode arrastar este widget para qualquer lugar na janela. Eu gosto de colocá-lo abaixo da lista de recursos.

Outro recurso útil da visualização do gráfico é a capacidade de selecionar blocos. Isso mudará a cor de fundo do bloco principal para facilitar a localização. Isso também é exibido na visão geral do gráfico, tornando a navegação muito mais fácil! Para selecionar um bloco, clique com o botão direito do mouse no bloco desejado e selecione Selecionar Bloco. O cortador exibirá uma roda de cores permitindo que você selecione a cor desejada para o bloco.


https://forumupload.ru/uploads/001b/c9/09/2/t902897.webp

Funções

O widget de funções contém uma lista de funções disponíveis no binário e permite ao usuário navegar para uma função específica clicando duas vezes sobre ela. O widget também possui uma barra de pesquisa para ajudar o usuário a encontrar rapidamente a função desejada.

Um widget de recurso pode exibir informações básicas de recursos em um formato suspenso. Ele também lista informações sobre a função, incluindo: deslocamento, tamanho em bytes, se é uma função importada, número de argumentos, blocos e variáveis ​​locais, convenção de chamada, número de arestas no gráfico, tamanho do quadro de pilha e quaisquer comentários adicionado pelo usuário.
Ao clicar com o botão direito do mouse em uma função no menu, o usuário pode adicionar comentários, encontrar referências à função e abri-la em outra visualização.

https://forumupload.ru/uploads/001b/c9/09/2/t649665.png

O Decompiler

Cutter vem com dois descompiladores por padrão: jsdec e Ghidra. O descompilador jsdec é de nível mais baixo que o Ghidra, fornecendo uma versão mais simples da desmontagem em vez de uma representação C do código.

Saída do descompilador mostrando a diferença entre jsdec (à esquerda) e Ghidra (à direita)

Como você pode ver, a saída do Ghidra está mais próxima do código C real do que a saída do jsdec. Para adicionar uma exibição de descompilador, vá para a guia Windows e clique em Adicionar decompilador. Ele tem a mesma funcionalidade da janela de desmontagem, incluindo a capacidade de sincronizar/dessincronizar a janela para que você possa visualizar várias funções ao mesmo tempo.

hexdump

A janela Hexdump é interessante porque fornece a flexibilidade de visualizar um arquivo binário byte a byte. Isso permite ao usuário visualizar diferentes valores de hash para um conjunto de bytes, analisar o conjunto de bytes como um desmontador e exportá-los para várias linguagens, como Python. O painel no lado direito da janela fornece essa funcionalidade. Os valores de hash para o conjunto de bytes selecionado são exibidos na guia Informações. Os seguintes hashes são exibidos: MD5, SHA1, SHA256 e CRC32. Essa guia também exibe a entropia dos dados selecionados.

https://forumupload.ru/uploads/001b/c9/09/2/t991632.png

A guia Análise permite ao usuário exibir os bytes selecionados em vários formatos. Por exemplo, se você precisar que os bytes sejam formatados como uma matriz de bytes Python, essa ferramenta pode fazer isso selecionando Python no menu suspenso.

https://forumupload.ru/uploads/001b/c9/09/2/t137527.png

Você pode escolher outros formatos de dados:

Convertendo Bytes em Instruções de Montagem
Linha
Array montador
Matriz de bytes C
Palavras C (metade e dupla)
Matriz de bytes do Python
JSON
Matriz de bytes JavaScript
regra Yara

Funcionalidade de pesquisa

A funcionalidade de pesquisa do Cutter permite que o usuário pesquise em um arquivo binário qualquer coisa, desde strings até gadgets de programação de objeto (ROP). O recurso de pesquisa do Cutter é uma ferramenta extremamente poderosa para engenharia reversa. Eu uso essa ferramenta para procurar strings interessantes, referências a endereços de memória específicos e instruções de montagem que possam apontar para recursos interessantes, como criptografia. Para adicionar uma nova caixa de pesquisa, abra a guia Windows e clique em Pesquisar. Para pesquisar com esta ferramenta, selecione o tipo de objeto que deseja pesquisar (string, instrução de montagem etc.) na caixa Pesquisar e selecione uma área para pesquisar (seção exibida atualmente, todas as seções, bloco atual, binários brutos, etc.) .d.). Em seguida, digite o que você está procurando e pressione Enter.

https://forumupload.ru/uploads/001b/c9/09/2/t56579.png

Encontrando a string Hello em binário usando a pesquisa de string

https://forumupload.ru/uploads/001b/c9/09/2/t981315.png

Encontrando o código do montador de lea rax em binário com a pesquisa de código

Console O
console é minha ferramenta favorita no Cutter. Ele permite que você use os comandos Rizin da GUI, aproveitando o melhor dos dois mundos! O console não é exibido por padrão. Você pode abri-lo na seção Windows e clicar em Console

https://forumupload.ru/uploads/001b/c9/09/2/t745586.png

Qualquer recurso Rizin não disponível na interface do Cutter pode ser acessado por meio deste console. Por exemplo, você pode editar todas as variáveis ​​de configuração no Rizin com o comando e, mas não parece haver uma maneira de fazer isso na própria GUI. Se você precisar alterar uma configuração específica, é mais fácil fazer isso no console.

https://forumupload.ru/uploads/001b/c9/09/2/t430193.png

Conclusão

No geral, o Cutter é uma ferramenta poderosa quando se trata de engenharia reversa. Eu prefiro isso ao CLI regular, pois oferece o melhor dos dois mundos com uma ferramenta de console. Existem outros recursos que não foram abordados neste artigo, incluindo a nova funcionalidade Yara. Você também pode explorar muitos plugins que ajudarão na análise. Você pode encontrar a documentação completa no site do Cutter.

Obrigado por ler e feliz reverso

0

2


» COVIL HACKER » rachaduras/inversão » Artigo Introdução ao cortador


|