Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
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.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
patching — Um Plugin Interativo de Patching Binário para o IDA Pro | Kitploit
Ferramentas/GitHubGitHub/gaasedelen/patching
Análise EstáticaAnálise Dinâmica de Código (DAST)ExploraçãoEngenharia ReversaShellcodeDepuradoresAnálise de MalwareAnálise de BináriosAprendizado e EducaçãoDesenvolvimento de PayloadsExploração de Binários
1.3k1491há 1 anoRevisado pelo Kitploit

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
GitHub
gaasedelen/patching

patching

Um Plugin Interativo de Patching Binário para o IDA Pro

Ver Repositório

Patching - Patching Binário Interativo para IDA Pro

Patching Plugin

Visão Geral

Patching de código assembly para alterar o comportamento de um programa existente não é incomum em análise de malware, engenharia reversa de software e domínios mais amplos de pesquisa em segurança. Este projeto estende o popular descompilador IDA Pro para criar um fluxo de trabalho de patching binário interativo mais robusto, projetado para iteração rápida.

Este projeto é atualmente alimentado por um fork menor do onipresente Keystone Engine, suportando patching para x86/x64 e Arm/Arm64, com planos de habilitar as arquiteturas restantes do Keystone em uma versão futura.

Agradecimentos especiais à Hex-Rays pelo suporte ao desenvolvimento deste plugin.

Lançamentos

  • v0.2 -- Correções importantes de bugs, compatibilidade com IDA 9
  • v0.1 -- Lançamento inicial

Instalação

Este plugin requer IDA 7.6 e Python 3. Ele suporta Windows, Linux e macOS.

Por favor, note que versões mais antigas do IDA (8.2 e anteriores) não são compatíveis com Python 3.11 e superiores.

Instalação Fácil

Execute a seguinte linha no console do IDA para instalar automaticamente o plugin:

Windows / Linux

root@kitploit:~
import urllib.request as r; exec(r.urlopen('https://github.com/gaasedelen/patching/raw/main/install.py').read())

macOS

root@kitploit:~
import urllib.request as r; exec(r.urlopen('https://github.com/gaasedelen/patching/raw/main/install.py', cafile='/etc/ssl/cert.pem').read())

Instalação Manual

Alternativamente, o plugin pode ser instalado manualmente baixando o pacote distribuível do plugin para sua respectiva plataforma na página de releases e descompactando-o na sua pasta de plugins.

É fortemente recomendado que você instale este plugin no diretório de plugins do usuário do IDA:

root@kitploit:~
import ida_diskio, os; print(os.path.join(ida_diskio.get_user_idadir(), "plugins"))

Uso

O plugin de patching será carregado automaticamente para arquiteturas suportadas (x86/x64/Arm/Arm64) e injetará ações de patching relevantes no menu de contexto do botão direito das visualizações de desmontagem do IDA:

Menu de contexto do botão direito do plugin de patching

Uma listagem completa das ações contextuais de patching é descrita nas seções seguintes.

Montar

O diálogo principal de patching pode ser iniciado através da ação Montar no menu de contexto do botão direito. Ele simula uma visualização básica de desmontagem do IDA que pode ser usada para editar uma ou várias instruções em rápida sucessão.

O diálogo interativo de patching

A linha de montagem é um campo editável que pode ser usado para modificar instruções em tempo real. Pressionar enter confirmará (patch) a instrução inserida no banco de dados.

Sua localização atual (também conhecida como cursor) será sempre destacada em verde. Instruções que serão sobrescritas como resultado do seu patch/edição serão destacadas em vermelho antes de confirmar o patch.

Instruções adicionais que serão sobrescritas por um patch aparecem em vermelho

Finalmente, as teclas de seta UP e DOWN podem ser usadas enquanto o foco ainda está no campo de texto editável de montagem para mover rapidamente o cursor para cima e para baixo na visualização de desmontagem sem usar o mouse.

NOP

A ação de patching mais comum é NOPear (NOP out) uma ou mais instruções. Por esta razão, a ação NOP estará sempre visível no menu de botão direito para acesso rápido.

Instrução NOP no botão direito

Instruções individuais podem ser NOPeadas, assim como um intervalo selecionado de instruções.

Forçar Salto Condicional

Forçar um salto condicional a sempre executar um caminho 'bom' é outra ação comum de patching. O plugin só mostrará esta ação ao clicar com o botão direito em uma instrução de salto condicional.

Forçando um salto condicional

Se você nunca quiser que um salto condicional seja tomado, você pode simplesmente NOPeá-lo!

Salvar e Aplicar Rápido

Patches podem ser salvos (aplicados) a um executável selecionado através do submenu de patching a qualquer momento. A ação de aplicar rapidamente torna ainda mais rápido salvar patches subsequentes usando as mesmas configurações.

Aplicando patches ao executável original

O plugin também fará um esforço ativo para reter um backup (.bak) do executável original, que ele usa para aplicar 'limpiamente' o conjunto atual de patches do banco de dados durante cada salvamento.

Reverter Patch

Finalmente, se você alguma vez não estiver satisfeito com um patch, pode simplesmente clicar com o botão direito nos blocos de instruções patcheados (amarelos) para revertê-los ao seu valor original.

Revertendo patches

Embora seja 'fácil' reverter bytes ao seu valor original, pode ser 'difícil' restaurar a análise ao seu estado anterior. Reverter um patch pode ocasionalmente exigir correções manuais adicionais.

Bugs Conhecidos

  • Melhorar ainda mais a correção ARM / ARM64 / THUMB
  • Definir um comportamento 'melhor' para cpp::like::symbols(...) / IDBs (muito instável no momento)
  • Adicionar / Atualizar / Modificar / Mostrar / Avisar sobre Entradas de Realocação??
  • Lidar com registros renomeados (como contra idb anotado com dwarf)?
  • Um número de novas instruções (cerca de 2017 e posteriores) não são suportadas pelo Keystone
  • Algumas codificações problemáticas de instruções pelo Keystone

Trabalhos Futuros

Tempo e motivação permitindo, trabalhos futuros podem incluir:

  • Habilitar as principais arquiteturas restantes suportadas pelo Keystone:
    • PPC32 / PPC64 / MIPS32 / MIPS64 / SPARC / SystemZ
  • Montagem de múltiplas instruções (ex.: xor eax, eax; ret;)
  • Montagem de múltiplas linhas (ex.: shellcode / rótulos asm)
  • Edição interativa de bytes / dados / strings
  • Dicas de símbolos / autocompletar / correspondência fuzzy
  • Destaque de sintaxe na linha de montagem editável
  • Melhores dicas de erros, problemas de sintaxe, etc
  • NOP / Forçar Salto a partir da visualização Hex-Rays (parece fácil, mas provavelmente bem difícil!)
  • alternância de botão de rádio entre modo 'pretty print' vs modo 'raw'? ou exibir ambos?
    root@kitploit:~
    Pretty:  mov     [rsp+48h+dwCreationDisposition], 3
       Raw:  mov     [rsp+20h], 3
    

Eu aceito contribuições externas, issues e pedidos de funcionalidades. Por favor, faça qualquer pull request para o branch develop deste repositório se quiser que sejam considerados para um lançamento futuro.

Autores

  • Markus Gaasedelen (@gaasedelen)
Baixar ferramenta