Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

FeedsContatoPrivacidade© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
ghidra-llm-pipeline — Extração determinística com PyGhidra, triagem e pipeline local de backend de compilador com LLM para reimplementação em C. | Kitploit
Ferramentas/GitHubGitHub/happytotoro116/ghidra-llm-pipeline
Análise EstáticaAnálise de CódigoEngenharia ReversaScripting e AutomaçãoAnálise de BináriosAprendizado de MáquinaEngenharia Reversa Assistida por IASegurança de IA
GitHub
happytotoro116/ghidra-llm-pipeline

ghidra-llm-pipeline

Extração determinística com PyGhidra, triagem e pipeline local de backend de compilador com LLM para reimplementação em C.

Ver Repositório
4147há 1 diaAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

ghidra-llm-pipeline

Obrigado por baixar meu pipeline Ghidra + LLM.

Este é meu primeiro README. ASL (Língua de Sinais Americana) é minha primeira língua, então meu inglês não é perfeito. Fiz o meu melhor.


----- Por que eu o fiz -----

Eu adoro uma antiga simulação de PC que jogo desde a infância, e quero melhorá-la por dentro.

Observar jogos de código aberto como OpenRA e OpenTTD me ensinou isto: uma reimplementação feita por um entusiasta não se trata de obter o código-fonte original. Trata-se de construir uma nova versão de código aberto do jogo que consiga carregar os assets do original. Assim, qualquer pessoa pode expandi-lo ou contribuir.

Para fazer o trabalho, uso dois tipos de IA juntos:

  • IA na nuvem para conhecimento e conselhos (e para ajuda com scripts em Python).
  • LLMs locais para o trabalho pesado (escrever o código).

----- O pipeline -----

  1. O PyGhidra extrai o programa como assembly e como pseudocódigo C.
  2. Os cabeçalhos são a parte mais importante. Cada função recebe um cabeçalho com as funções e globais que ela usa.
  3. Agrupamento: o Python agrupa as funções que chamam umas às outras em "classes".
  4. Triagem: o Python lê as strings usadas por cada grupo para adivinhar para que ele serve.
  5. Papéis: um script lista o provável papel de cada classe e monta as filas de trabalho.

----- Os rótulos (triagem) -----

Cada função recebe um rótulo. Isso economiza muito tempo, porque não desperdiço esforço com o grande monte de lixo do SO e do runtime.

|-----------|------------------------------------------------------------------------------------------------------------------

RótuloSignificado
KEEPA lógica do próprio jogo (por exemplo, o modelo de voo, o modelo de dano, TrackIR)
WRAPCola voltada para Java que chama APIs do SO ou de entrada: mantenha a assinatura, escreva um novo corpo.
(IL-2 1946 é um motor interessante: C++ e Java juntos.)
REPLACERuntime C antigo, alocador, thunks: o compilador ou o SO os fornece, então uma nova versão de 64 bits não precisa deles
UNKNOWNNão está claro: examine manualmente
-----------------------------------------------------------------------------------------------------------------------------

No meu programa de teste, cerca de 44% das funções eram REPLACE, então nunca precisaram ser convertidas.


----- Assembly, não pseudocódigo C -----

No começo eu confiava que o pseudocódigo C tinha todas as respostas. Isso foi ingênuo. Ele é a interpretação do Ghidra sobre o assembly, e ele faz suposições (tipos de variáveis, argumentos perdidos).

O assembly é a verdade bruta. Ele não tem tipos de variáveis, mas contém o comportamento exato de cada função. Então os scripts leem o assembly e o transformam em um blueprint em forma de C. O C do Ghidra é mantido apenas como dica.


----- LLM como compilador, não como montador -----

Meus primeiros testes usaram os LLMs locais (Qwen 2.5 Coder, DeepSeek Coder V2 Lite, Mellum 2) para ler o assembly diretamente. Nunca funcionou de forma confiável. Eles alucinavam, porque são feitos para escrever código, não para ler código de máquina bruto.

Depois de muitos experimentos fracassados, dividi o trabalho:

  • O Python é o montador. Ele lê o assembly e escreve o blueprint: fatos exatos, um rascunho em C em nível de registrador e uma lista de verificação.
  • O LLM é o compilador. Ele escreve o C real livremente a partir do blueprint.
  • O Python verifica a resposta (verificações de texto e um compilador real) e corrige pequenos deslizes.

NOTA: Como o Python verifica a resposta

  • Verificações de texto: o nome da função, cada chamada, global e string do blueprint, os laços, os tamanhos de passo, as constantes comparadas, o valor de retorno, e que nenhum nome de registrador ou nome inventado tenha sobrado.

  • verificação de compilação com gcc: o código é compilado com gcc (apenas sintaxe, nada é executado). Isso ajudou muito. Numa execução inicial, as verificações de texto aprovaram as respostas do Mellum 2, mas nenhuma delas compilou, por causa de um comentário de cabeçalho escrito fora de um comentário. O gcc apanha o que as verificações de texto não conseguem ver: variáveis não declaradas ou redeclaradas, tipos errados e chavetas ou pontos e vírgulas quebrados. Uma função conta como PASS apenas quando as verificações de texto e a compilação estão ambas OK. O gcc não prova que a lógica está correta, por isso continuo a ler o código em confronto com o blueprint.

  • Se uma verificação falhar, o LLM recebe a lista do que falhou e tenta mais uma vez.

  • O Python corrige pequenos deslizes sozinho, sem o LLM: declara cada variável uma vez, envolve linhas de cabeçalho soltas num comentário, faz com que o último return devolva o resultado correto e adiciona os includes e as declarações.

A checklist surgiu depois de eu ver os LLMs falharem em funções muito longas. Funciona como a checklist que um piloto usa antes da descolagem e da aterragem. O Python escreve-a a partir da função e verifica a resposta contra ela. Nos meus testes, as funções longas começaram a passar, e as execuções ficaram mais rápidas.


----- O que está neste repositório -----

|-------------------|---------------------------------------|---------------------------------------------

PastaO que fazLer
ghidra_pipelineDump, agrupamento, triagem, papéisghidra_pipeline/INSTRUCTION.txt
llm_pipelineBlueprints e o runner do LLM (v3)llm_pipeline/INSTRUCTION_BLUEPRINT_LLM.txt
-------------------------------------------------------------------------------------------------------

Comece por ghidra_pipeline, depois passe para llm_pipeline quando estiver pronto para usar os seus LLMs locais.


----- Início rápido -----

Primeiro, analise o seu programa no PyGhidra e execute PyGhidra Scripts/decompile_full_dump.py. Os dois ficheiros INSTRUCTION explicam a configuração das pastas. Depois:

Primeiro, analise o seu programa no PyGhidra e execute PyGhidra Scripts/decompile_full_dump.py. Os dois ficheiros INSTRUCTION explicam a configuração das pastas. Depois:

python .\make_full_lite_v2.py --in . --out .\OUT
python .\triage_evidence_v2.py --lite .\OUT\LITE_AC
python .\build_roles_v2.py --triage .\OUT\TRIAGE

python .\blueprint_v3.py --group ".\SOURCE\LITE_AC\<GroupName>" --out ".\G_<GroupName>\BLUEPRINT_v3"
python .\run_blueprint_llm_v3.py --bp ".\G_<GroupName>\BLUEPRINT_v3" --out ".\G_<GroupName>\RUN1_v3_<model>" --model <model name>

Você precisa do Ghidra com PyGhidra, Python 3, LM Studio (um modelo carregado) e gcc (recomendado, usado como verificação de compilação).


----- Resultados até agora -----

  • Um grupo de 6 funções de um programa Windows de 32 bits, três modelos locais.
  • Todos os três modelos geraram código logicamente correto (eu o li comparando com os blueprints). O verificador automático passou 6/6, 6/6 e 5/6.
  • Continuo trabalhando nisso. Esta é a primeira versão.

----- Limites -----

Baixar ferramenta