O primeiro engenheiro reverso agêntico do mundo.
Orquestração de LLM para engenharia reversa de binários
A maioria das tarefas segue uma relação linear: quanto mais difícil uma tarefa, mais tempo ela geralmente leva. A engenharia reversa (e a análise de binários) é uma tarefa em que a dificuldade real é um tanto trivial, mas o tempo de execução pode ser da ordem de horas (e dias!), mesmo para um binário com algumas centenas de funções.
Kong automatiza a camada mecânica, usando um framework de engenharia reversa de nível NSA. Kong pode pegar um binário totalmente ofuscado e sem símbolos e executar um pipeline completo de análise: triagem de funções, construção de contexto de grafo de chamadas, recuperação de tipos e símbolos através de descompilação guiada por LLM, e escrevendo os resultados de volta no banco de dados de programas do Ghidra. A saída é um binário onde alguma FUN_00401a30 agora é parse_http_header, com structs, nomes de parâmetros e convenções de chamada recuperados.
Por que isso existe
Binários sem símbolos perdem todo o contexto que torna o código legível: nomes de funções, informações de tipo, nomes de variáveis, layouts de struct. Recuperar esse contexto é a maior parte do trabalho na maioria das tarefas de RE, e é em grande parte correspondência de padrões: reconhecer funções de biblioteca padrão, inferir tipos a partir do uso, propagar nomes através de grafos de chamadas.
LLMs são bons exatamente nesse tipo de correspondência de padrões. Mas apontar um LLM para a saída bruta do descompilador e perguntar "o que isso faz?" dá resultados medíocres. O modelo carece de contexto de chamada, informações de referência cruzada e a visão mais ampla de como o binário está estruturado. Além disso, a maioria dos binários ofuscados introduz técnicas extremas para impedir a engenharia reversa.
Kong resolve isso construindo janelas de contexto ricas a partir da análise de programas do Ghidra (grafos de chamadas, referências cruzadas, referências de string, fluxo de dados) antes de tocar no LLM, então orquestrando a análise em ordem de dependência para que cada função se beneficie de suas chamadoras já nomeadas. Além disso, Kong introduz seu próprio pipeline de desofuscação agêntico, o primeiro do tipo.
Kong works with most Ghidra-decompilable binaries (for now, more to come).
| C | C++ | Go | Rust | |
|---|---|---|---|---|
| x86 | Alta | Alta | Média | Média |
| x86-64 | Alta | Alta | Média | Média |
| ARM (32-bit) | Alta | Alta | Média | Baixa |
| AArch64 | Alta | Alta | Média | Baixa |
| MIPS | Média | Média | Baixa | Baixa |
| PowerPC | Média | Média | Baixa | Baixa |
Alta: Kong descompila, desofusca e recupera nomes, tipos e estruturas de forma confiável.
Média: A descompilação é utilizável, mas mais ruidosa. Espere recuperação parcial e pontuações de confiança mais baixas.
Baixa: A descompilação tem lacunas significativas e os resultados permanecerão incompletos, ruidosos ou ilegíveis.
Nota: O tamanho do binário escala positivamente com a contagem de funções, custo do LLM e tempo para conclusão. No entanto, o tamanho do binário também escala negativamente com a confiança, portanto, tenha isso em mente ao analisar binários maiores.
Kong usa um pipeline de cinco fases orquestrado por um supervisor que coordena triagem, análise paralela e pós-processamento: