O Gepetto é um plug -in Python que usa vários modelos de linguagem grande para fornecer significado a funções descompiladas pelo IDA Pro (≥ 7,4). Ele pode aproveitá -los para explicar o que uma função faz e renomear automaticamente suas variáveis. Aqui está um exemplo simples de quais resultados ele pode fornecer em apenas segundos:
Simplesmente solte este script ( gepetto.py
, bem como o gepetto/
pasta) na pasta IDA Plugins ( $IDAUSR/plugins
). Por padrão, no Windows, isso deve ser %AppData%Hex-RaysIDA Proplugins
(pode ser necessário criá-lo).
Você precisará adicionar os pacotes necessários à instalação do Python da IDA para que o script funcione. Encontre qual intérprete IDA está usando verificando a seguinte chave de registro: ComputerHKEY_CURRENT_USERSoftwareHex-RaysIDA
(padrão no Windows: %LOCALAPPDATA%ProgramsPythonPython39
). Finalmente, com o intérprete correspondente, basta executar:
[/path/to/python] -m pip install -r requirements.txt
gepetto/config.ini
) e adicionar suas próprias teclas de API. Para o OpenAI, ele pode ser encontrado nesta página. Observe que as consultas da API geralmente não são gratuitas (embora não sejam muito caras) e você precisará configurar um método de pagamento com o provedor correspondente.
A adição de suporte a modelos adicionais não deve ser muito difícil, desde que o provedor que você esteja considerando exponha uma API semelhante à do OpenAI. Olhe para a pasta gepetto/models
para inspiração ou abra um problema se não conseguir descobrir.
Depois que o plug -in é instalado corretamente, você poderá invocá -lo no menu de contexto da janela Pseudocode da IDA, conforme mostrado na captura de tela abaixo:
Alterne entre os modelos suportados por Gecetto no menu Editar> Getetto:
O Gepetto também fornece uma interface da CLI que você pode usar para fazer perguntas ao LLM diretamente da IDA. Certifique -se de selecionar Gepetto
na barra de entrada:
As teclas de atalho a seguir estão disponíveis:
Ctrl
+ Alt
+ G
Ctrl
+ Alt
+ R
Os testes iniciais mostram que solicitar melhores nomes funciona melhor se você pedir uma explicação da função primeiro - presumo que o modelo use seu próprio comentário para fazer sugestões mais precisas. Há um elemento de aleatoriedade nas respostas da IA. Se, por algum motivo, a resposta inicial que você recebe não for adequada, você sempre poderá executar o comando novamente.
Você pode alterar o idioma de Gepetto editando o local na configuração. Por exemplo, para usar o plug -in em francês, você simplesmente adicionaria:
[Gepetto]
LANGUAGE = " fr_FR "
O local escolhido deve corresponder aos nomes das pastas em gepetto/locales
. Se o idioma desejado não estiver disponível, você pode contribuir para o projeto adicionando você mesmo! Crie uma nova pasta para a localidade desejada (Ex: gepetto/locales/de_DE/LC_MESSAGES/
) e abra uma nova solicitação de puxar com o arquivo .po
atualizado, que você pode criar copiando e editando gepetto/locales/gepetto.pot
(substitua todas as linhas iniciando pela msgstr
pela versão local).