Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
patching — Un plugin interattivo per il patching binario per IDA Pro | Kitploit
Strumenti/GitHubGitHub/gaasedelen/patching
Analisi StaticaAnalisi Dinamica del Codice (DAST)ExploitReverse EngineeringShellcodeDebuggerAnalisi MalwareAnalisi di BinariApprendimento e FormazioneSviluppo PayloadBinary Exploitation
1.3k14911 anno faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi
GitHub
gaasedelen/patching

patching

Un plugin interattivo per il patching binario per IDA Pro

Vedi Repository

Patching - Patching binario interattivo per IDA Pro

Patching Plugin

Panoramica

Modificare il codice assembly per alterare il comportamento di un programma esistente non è raro nell'analisi malware, nel reverse engineering del software e in ambiti più ampi della ricerca sulla sicurezza. Questo progetto estende il popolare disassemblatore IDA Pro per creare un flusso di lavoro di patching binario interattivo più robusto, progettato per iterazioni rapide.

Questo progetto è attualmente basato su un fork minore del diffuso Keystone Engine, che supporta il patching di x86/x64 e Arm/Arm64, con l'intenzione di abilitare le restanti architetture di Keystone in una versione futura.

Un ringraziamento speciale a Hex-Rays per il supporto allo sviluppo di questo plugin.

Releases

  • v0.2 -- Importanti correzioni di bug, compatibilità con IDA 9
  • v0.1 -- Versione iniziale

Installazione

Questo plugin richiede IDA 7.6 e Python 3. Supporta Windows, Linux e macOS.

Si noti che le versioni precedenti di IDA (8.2 e inferiori) non sono compatibili con Python 3.11 e successive.

Installazione facile

Esegui la seguente riga nella console di IDA per installare automaticamente il 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())

Installazione manuale

In alternativa, il plugin può essere installato manualmente scaricando il pacchetto plugin distribuibile per la propria piattaforma dalla pagina releases e decomprimendolo nella propria cartella dei plugin.

È fortemente consigliato installare questo plugin nella directory dei plugin utente di IDA:

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

Utilizzo

Il plugin di patching si carica automaticamente per le architetture supportate (x86/x64/Arm/Arm64) e inietta le azioni di patching pertinenti nel menu contestuale del tasto destro delle viste di disassemblaggio di IDA:

Menu contestuale del tasto destro del plugin Patching

Un elenco completo delle azioni di patching contestuali è descritto nelle sezioni seguenti.

Assemble

La finestra di dialogo principale per il patching può essere lanciata tramite l'azione Assemble nel menu contestuale del tasto destro. Simula una vista di disassemblaggio di base di IDA che può essere utilizzata per modificare una o più istruzioni in rapida successione.

La finestra di dialogo interattiva per il patching

La riga di assembly è un campo modificabile che può essere utilizzato per modificare le istruzioni in tempo reale. Premere Invio confermerà (applicherà la patch) l'istruzione inserita nel database.

La posizione corrente (ovvero il cursore) sarà sempre evidenziata in verde. Le istruzioni che verranno sovrascritte a causa della patch/modifica verranno evidenziate in rosso prima di applicare la patch.

Le istruzioni aggiuntive che verranno sovrascritte da una patch vengono visualizzate in rosso

Infine, i tasti freccia SU e GIÙ possono essere utilizzati mentre si è ancora concentrati sul campo di testo assembly modificabile per spostare rapidamente il cursore verso l'alto e verso il basso nella vista di disassemblaggio senza usare il mouse.

NOP

L'azione di patching più comune è quella di NOPare una o più istruzioni. Per questo motivo, l'azione NOP sarà sempre visibile nel menu del tasto destro per un accesso rapido.

Istruzione NOP con tasto destro

È possibile NOPare singole istruzioni, così come un intervallo selezionato di istruzioni.

Forza salto condizionale

Forzare un salto condizionale a eseguire sempre un percorso 'buono' è un'altra azione di patching comune. Il plugin mostra questa azione solo quando si fa clic destro su un'istruzione di salto condizionale.

Forzare un salto condizionale

Se non si vuole mai che un salto condizionale venga preso, si può semplicemente NOParlo!

Salva e applica rapido

Le patch possono essere salvate (applicate) a un eseguibile selezionato tramite il sottomenu di patching in qualsiasi momento. L'azione di applicazione rapida rende ancora più veloce il salvataggio di patch successive utilizzando le stesse impostazioni.

Applicare le patch all'eseguibile originale

Il plugin farà anche uno sforzo attivo per conservare un backup (.bak) dell'eseguibile originale che utilizza per applicare 'pulitamente' il set corrente di patch del database durante ogni salvataggio.

Ripristina patch

Infine, se non si è soddisfatti di una patch, è sufficiente fare clic destro sui blocchi di istruzioni patchati (gialli) per ripristinarli al valore originale.

Ripristino delle patch

Sebbene sia 'facile' ripristinare i byte al loro valore originale, può essere 'difficile' ripristinare l'analisi allo stato precedente. Il ripristino di una patch potrebbe occasionalmente richiedere ulteriori correzioni manuali.

Bug noti

  • Migliorare ulteriormente la correttezza di ARM / ARM64 / THUMB
  • Definire un comportamento 'migliore' per cpp::like::symbols(...) / IDB (molto incerto al momento)
  • Aggiungere / Aggiornare / Modificare / Mostrare / Avvisare sulle voci di rilocazione??
  • Gestire i registri rinominati (ad esempio contro idb annotati con dwarf)?
  • Un certo numero di nuove istruzioni (circa 2017 e successive) non sono supportate da Keystone
  • Alcune codifiche di istruzioni problematiche da parte di Keystone

Lavori futuri

Tempo e motivazione permettendo, i lavori futuri potrebbero includere:

  • Abilitare le restanti architetture principali supportate da Keystone:
    • PPC32 / PPC64 / MIPS32 / MIPS64 / SPARC / SystemZ
  • Assembly multi-istruzione (es. xor eax, eax; ret;)
  • Assembly multi-linea (es. shellcode / etichette asm)
  • Modifica interattiva di byte / dati / stringhe
  • Suggerimenti di simboli / completamento automatico / corrispondenza fuzzy
  • Evidenziazione della sintassi per la riga di assembly modificabile
  • Migliori suggerimenti su errori, problemi di sintassi, ecc.
  • NOP / Forza salto dalla vista Hex-Rays (sembra facile, ma probabilmente piuttosto difficile!)
  • pulsante di opzione per alternare tra modalità 'pretty print' e modalità 'raw'? o visualizzare entrambe?
    root@kitploit:~
    Pretty:  mov     [rsp+48h+dwCreationDisposition], 3
       Raw:  mov     [rsp+20h], 3
    

Accetto contributi esterni, segnalazioni di problemi e richieste di funzionalità. Per favore, invia qualsiasi pull request al branch develop di questo repository se desideri che vengano considerate per una versione futura.

Autori

  • Markus Gaasedelen (@gaasedelen)
Scarica lo strumento