Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
patching — Un plugin interactif de patching binaire pour IDA Pro | Kitploit
Outils/GitHubGitHub/gaasedelen/patching
Analyse StatiqueAnalyse Dynamique de Code (DAST)ExploitationRétro-ingénierieShellcodeDébogueursAnalyse de MalwareAnalyse de BinairesApprentissage et ÉducationDéveloppement de Charges UtilesExploitation de Binaires
1.3k1491il y a 1 anVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager
GitHub
gaasedelen/patching

patching

Un plugin interactif de patching binaire pour IDA Pro

Voir le dépôt

Patching - Correction interactive de binaires pour IDA Pro

Plugin Patching

Présentation

Modifier du code assembleur pour changer le comportement d'un programme existant n'est pas rare dans l'analyse de malwares, le rétro-ingénierie logicielle, et les domaines plus larges de la recherche en sécurité. Ce projet étend le célèbre désassembleur IDA Pro pour créer un flux de travail de correction interactive de binaires plus robuste, conçu pour une itération rapide.

Ce projet est actuellement propulsé par un fork mineur du célèbre Keystone Engine, prenant en charge la correction pour x86/x64 et Arm/Arm64, avec des projets d'activer les architectures Keystone restantes dans une future version.

Un merci spécial à Hex-Rays pour avoir soutenu le développement de ce plugin.

Versions

  • v0.2 -- Corrections de bugs importantes, compatibilité IDA 9
  • v0.1 -- Version initiale

Installation

Ce plugin nécessite IDA 7.6 et Python 3. Il prend en charge Windows, Linux et macOS.

Veuillez noter que les versions plus anciennes d'IDA (8.2 et inférieures) ne sont pas compatibles avec Python 3.11 et supérieur.

Installation facile

Exécutez la ligne suivante dans la console IDA pour installer automatiquement le 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())

Installation manuelle

Alternativement, le plugin peut être installé manuellement en téléchargeant le paquet distribuable du plugin pour votre plateforme respective depuis la page des versions et en le décompressant dans votre dossier plugins.

Il est fortement recommandé d'installer ce plugin dans le répertoire utilisateur des plugins d'IDA :

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

Utilisation

Le plugin de correction se charge automatiquement pour les architectures prises en charge (x86/x64/Arm/Arm64) et injecte les actions de correction pertinentes dans le menu contextuel du clic droit des vues de désassemblage d'IDA :

Menu contextuel du clic droit du plugin de correction

Une liste complète des actions de correction contextuelles est décrite dans les sections suivantes.

Assemble

La boîte de dialogue principale de correction peut être lancée via l'action Assemble dans le menu contextuel du clic droit. Elle simule une vue de désassemblage de base d'IDA qui peut être utilisée pour éditer une ou plusieurs instructions en succession rapide.

La boîte de dialogue de correction interactive

La ligne d'assembly est un champ éditable qui peut être utilisé pour modifier les instructions en temps réel. Appuyer sur Entrée valide (corrige) l'instruction saisie dans la base de données.

Votre emplacement actuel (c'est-à-dire votre curseur) sera toujours surligné en vert. Les instructions qui seront écrasées suite à votre correction/édition seront surlignées en rouge avant de valider la correction.

Les instructions supplémentaires qui seront écrasées par une correction apparaissent en rouge

Enfin, les touches fléchées HAUT et BAS peuvent être utilisées lorsqu'on est encore concentré sur le champ de texte d'assembly éditable pour déplacer rapidement le curseur vers le haut et vers le bas dans la vue de désassemblage sans utiliser la souris.

NOP

L'action de correction la plus courante est de NOPer (remplacer par des NOP) une ou plusieurs instructions. Pour cette raison, l'action NOP sera toujours visible dans le menu du clic droit pour un accès rapide.

Instruction NOP par clic droit

Des instructions individuelles peuvent être NOPées, ainsi qu'une plage d'instructions sélectionnées.

Forcer un saut conditionnel

Forcer un saut conditionnel à toujours exécuter un chemin 'bon' est une autre action de correction courante. Le plugin n'affichera cette action que lorsqu'on clique avec le bouton droit sur une instruction de saut conditionnel.

Forcer un saut conditionnel

Si vous ne voulez jamais qu'un saut conditionnel soit pris, vous pouvez simplement le NOPer à la place !

Sauvegarder & Appliquer rapidement

Les corrections peuvent être sauvegardées (appliquées) à un exécutable sélectionné via le sous-menu de correction à tout moment. L'action d'application rapide permet de sauvegarder plus rapidement les corrections suivantes en utilisant les mêmes paramètres.

Application des corrections à l'exécutable original

Le plugin fera également un effort actif pour conserver une sauvegarde (.bak) de l'exécutable original qu'il utilise pour appliquer 'proprement' l'ensemble actuel des corrections de la base de données lors de chaque sauvegarde.

Annuler une correction

Enfin, si vous n'êtes jamais satisfait d'une correction, vous pouvez simplement cliquer avec le bouton droit sur les blocs d'instructions corrigés (jaunes) pour les rétablir à leur valeur d'origine.

Annulation des corrections

Bien qu'il soit 'facile' de rétablir les octets à leur valeur d'origine, il peut être 'difficile' de restaurer l'analyse à son état précédent. L'annulation d'une correction peut parfois nécessiter des ajustements humains supplémentaires.

Bugs connus

  • Améliorer encore la correction ARM / ARM64 / THUMB
  • Définir un comportement 'meilleur' pour cpp::like::symbols(...) / IDBs (très approximatif actuellement)
  • Ajout / Mise à jour / Modification / Affichage / Avertissement concernant les entrées de relocalisation ??
  • Gérer les registres renommés (par exemple contre un IDB annoté par dwarf) ?
  • Un certain nombre de nouvelles instructions (vers 2017 et après) ne sont pas supportées par Keystone
  • Quelques encodages d'instructions problématiques par Keystone

Travaux futurs

Si le temps et la motivation le permettent, les travaux futurs pourraient inclure :

  • Activer les architectures majeures restantes supportées par Keystone :
    • PPC32 / PPC64 / MIPS32 / MIPS64 / SPARC / SystemZ
  • Assembly multi-instruction (par ex. xor eax, eax; ret;)
  • Assembly multi-ligne (par ex. shellcode / labels asm)
  • Édition interactive d'octets / données / chaînes
  • Indication de symboles / auto-complétion / correspondance floue
  • Coloration syntaxique de la ligne d'assembly éditable
  • Meilleure indication des erreurs, problèmes de syntaxe, etc.
  • NOP / Saut forcé depuis la vue Hex-Rays (semble facile, mais probablement assez difficile !)
  • Bouton radio pour basculer entre le mode 'pretty print' et le mode 'raw' ? ou afficher les deux ?
    root@kitploit:~
    Pretty:  mov     [rsp+48h+dwCreationDisposition], 3
       Raw:  mov     [rsp+20h], 3
    

J'accueille favorablement les contributions externes, les signalements de problèmes et les demandes de fonctionnalités. Veuillez faire toute demande de tirage (pull request) vers la branche develop de ce dépôt si vous souhaitez qu'elle soit considérée pour une future version.

Auteurs

  • Markus Gaasedelen (@gaasedelen)
Télécharger l’outil