Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
Tools/GitHubGitHub/gaasedelen/patching
Statische AnalyseDynamische Code-Analyse (DAST)ExploitationReverse EngineeringShellcodeDebuggerMalware-AnalyseBinäranalyseLernen & BildungPayload-EntwicklungBinary-Exploitation
1.3k1491vor 1 JahrVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
GitHub
gaasedelen/patching

patching

Ein interaktives Binary-Patching-Plugin für IDA Pro

Repository anzeigen

Patching – Interaktives Binär-Patchen für IDA Pro

Patching Plugin

Übersicht

Das Patchen von Assemblercode, um das Verhalten eines bestehenden Programms zu ändern, ist in der Malware-Analyse, der Reverse-Engineering von Software und weiteren Bereichen der Sicherheitsforschung nicht ungewöhnlich. Dieses Projekt erweitert den beliebten Disassembler IDA Pro um einen robusteren interaktiven Workflow für Binär-Patches, der für schnelle Iterationen ausgelegt ist.

Dieses Projekt wird derzeit von einem kleinen Fork der allgegenwärtigen Keystone Engine unterstützt und ermöglicht das Patchen von x86/x64 und Arm/Arm64 – mit dem Plan, die übrigen Keystone-Architekturen in einer zukünftigen Version zu aktivieren.

Besonderer Dank gilt Hex-Rays für die Unterstützung der Entwicklung dieses Plugins.

Veröffentlichungen

  • v0.2 – Wichtige Fehlerkorrekturen, IDA 9-Kompatibilität
  • v0.1 – Erste Veröffentlichung

Installation

Dieses Plugin erfordert IDA 7.6 und Python 3. Es unterstützt Windows, Linux und macOS.

Bitte beachten Sie, dass ältere Versionen von IDA (8.2 und älter) nicht kompatibel mit Python 3.11 und höher sind.

Einfache Installation

Führen Sie die folgende Zeile in der IDA-Konsole aus, um das Plugin automatisch zu installieren:

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())

Manuelle Installation

Alternativ kann das Plugin manuell installiert werden, indem Sie das verteilbare Plugin-Paket für Ihre jeweilige Plattform von der Releases-Seite herunterladen und in Ihren Plugins-Ordner entpacken.

Es wird dringend empfohlen, dieses Plugin in das Benutzer-Plugin-Verzeichnis von IDA zu installieren:

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

Verwendung

Das Patching-Plugin wird automatisch für unterstützte Architekturen (x86/x64/Arm/Arm64) geladen und fügt relevante Patching-Aktionen in das Rechtsklick-Kontextmenü der IDA-Disassembly-Ansichten ein:

Patching plugin right click context menu

Eine vollständige Auflistung der kontextuellen Patching-Aktionen wird in den folgenden Abschnitten beschrieben.

Assemblieren

Der Hauptdialog für Patches kann über die Aktion 'Assemblieren' im Rechtsklick-Kontextmenü geöffnet werden. Er simuliert eine einfache IDA-Disassembly-Ansicht, die zum schnellen Bearbeiten einer oder mehrerer Anweisungen verwendet werden kann.

The interactive patching dialog

Die Assemblerzeile ist ein bearbeitbares Feld, das zum Ändern von Anweisungen in Echtzeit verwendet werden kann. Durch Drücken der Eingabetaste wird die eingegebene Anweisung übernommen (gepatcht) und in der Datenbank gespeichert.

Ihre aktuelle Position (auch bekannt als Cursor) wird immer grün hervorgehoben. Anweisungen, die durch Ihren Patch/Ihre Bearbeitung überschrieben werden, werden vor dem Übernehmen des Patches rot hervorgehoben.

Additional instructions that will be clobbered by a patch show up as red

Schließlich können die Pfeiltasten UP und DOWN verwendet werden, während der Fokus noch auf dem bearbeitbaren Assembler-Textfeld liegt, um den Cursor schnell ohne Maus in der Disassembly-Ansicht nach oben und unten zu bewegen.

NOP

Die häufigste Patching-Aktion ist das NOPen einer oder mehrerer Anweisungen. Aus diesem Grund ist die NOP-Aktion im Rechtsklick-Menü immer für den schnellen Zugriff sichtbar.

Right click NOP instruction

Einzelne Anweisungen können genauso wie ein ausgewählter Bereich von Anweisungen genopet werden.

Bedingten Sprung erzwingen

Das Erzwingen eines bedingten Sprungs, damit immer ein 'guter' Pfad ausgeführt wird, ist eine weitere häufige Patching-Aktion. Das Plugin zeigt diese Aktion nur an, wenn Sie mit der rechten Maustaste auf eine bedingte Sprunganweisung klicken.

Forcing a conditional jump

Wenn Sie nie möchten, dass ein bedingter Sprung genommen wird, können Sie ihn stattdessen einfach NOPen!

Speichern & Schnell anwenden

Patches können über das Patching-Untermenü jederzeit in einer ausgewählten ausführbaren Datei gespeichert (angewendet) werden. Die Aktion 'Schnell anwenden' macht es noch schneller, nachfolgende Patches mit denselben Einstellungen zu speichern.

Applying patches to the original executable

Das Plugin wird sich auch aktiv darum bemühen, ein Backup (.bak) der ursprünglichen ausführbaren Datei zu behalten, das es verwendet, um den aktuellen Satz von Datenbank-Patches bei jedem Speichern 'sauber' anzuwenden.

Patch rückgängig machen

Wenn Sie schließlich mit einem Patch unzufrieden sind, können Sie einfach mit der rechten Maustaste auf gepatchte (gelbe) Blöcke von Anweisungen klicken, um sie auf ihren ursprünglichen Wert zurückzusetzen.

Reverting patches

Obwohl es 'einfach' ist, Bytes auf ihren ursprünglichen Wert zurückzusetzen, kann es 'schwierig' sein, die Analyse wieder in den vorherigen Zustand zu versetzen. Das Rückgängigmachen eines Patches kann gelegentlich zusätzliche manuelle Nachbesserungen erfordern.

Bekannte Fehler

  • Verbesserung der Korrektheit von ARM / ARM64 / THUMB
  • Definieren eines 'besseren' Verhaltens für cpp::like::symbols(...) / IDBs (derzeit sehr skizzenhaft)
  • Hinzufügen / Aktualisieren / Ändern / Anzeigen / Warnen vor Relocation-Einträgen??
  • Behandlung umbenannter Register (wie bei dwarf-annotierten IDBs)?
  • Eine Reihe neuer Anweisungen (ca. 2017 und später) werden von Keystone nicht unterstützt
  • Einige problematische Anweisungskodierungen durch Keystone

Zukünftige Arbeiten

Zeit und Motivation vorausgesetzt, könnten zukünftige Arbeiten Folgendes umfassen:

  • Aktivierung der verbleibenden Hauptarchitekturen, die von Keystone unterstützt werden:
    • PPC32 / PPC64 / MIPS32 / MIPS64 / SPARC / SystemZ
  • Assembly mehrerer Anweisungen (z. B. xor eax, eax; ret;)
  • Mehrzeiliges Assembly (z. B. Shellcode / ASM-Labels)
  • Interaktive Byte-/Daten-/Zeichenkettenbearbeitung
  • Symbol-Hinweise / automatische Vervollständigung / unscharfe Übereinstimmung
  • Syntaxhervorhebung für die bearbeitbare Assemblerzeile
  • Bessere Hinweise auf Fehler, Syntaxprobleme usw.
  • NOP / Sprung erzwingen aus der Hex-Rays-Ansicht (klingt einfach, ist aber wahrscheinlich ziemlich schwer!)
  • Umschalter zwischen 'Pretty-Print'-Modus und 'Raw'-Modus? Oder beides anzeigen?
    root@kitploit:~
    Pretty:  mov     [rsp+48h+dwCreationDisposition], 3
       Raw:  mov     [rsp+20h], 3
    

Ich begrüße externe Beiträge, Issues und Feature Requests. Bitte stellen Sie Pull-Requests für den develop-Branch dieses Repositorys, wenn Sie möchten, dass sie für eine zukünftige Version berücksichtigt werden.

Autoren

  • Markus Gaasedelen (@gaasedelen)
Tool herunterladen