Plugin HRTNG IDA
Le plugin HRTNG IDA est une collection d'outils, d'idées et d'expériences de différentes sources que j'ai trouvées intéressantes et utiles dans mon travail de revers.
Un guide pratique de l'inverse d'un malware complexe en utilisant l'exemple de dissection d'un module Finspy à l'aide du plugin HRTNG IDA sur SecureList
Il n'y a aucun endroit dans le menu où toutes les fonctionnalités du plugin sont regroupées. Éléments de menu HRTNG placés plus près des fonctions de décompilateur IDA et rayons hexadécimales liées logiquement. Les messages, les éléments de menu, les fenêtres contextuels et les boîtes de dialogue appartiennent à ce plugin sont marqués avec le préfixe " [hrt] ".
Le plugin nécessite une présence de décompilateur aux rayons hexagonaux dans votre installation IDA. Le plugin peut être compilé avec Ida SDK> = 7.3 mais pas bien testé avec d'anciennes versions.
Un merci spécial à suivre les peuples pour leurs grands plugins a été utilisé comme base pour mon travail:
- Milan Bohacek, Hexrays_tools et Hexrays_hlight
- Hexraysdeob par Rolf Rolles et Takahiro Haruyama
- Plugin Karthik Selvaraj Krypton
- Ali Rahbar, Ali Pezeshk et Elias Bachaalany Plugin graphique
- Markus Gaasedelen AVX Prise en charge du décompilateur des rayons hexagonaux x64
Caractéristiques du plugin:
Automation
- Tirez les commentaires du désasme à la vue pseudocode
- Variables locales et globales de renommée automatique, membres de structure
- Substitution automatique de l'énumération
- Aide COM
Transformation de pseudocode interactive
- User Interactive Renommage / Retyping Assistance
- Aide à l'évolution du type de membre de la structure ou de la variable locale / globale
- reinterpret_cast
- Sélection d'effondrement
- Convertisseur "offset"
Décryptage
- Chaînes / données / décryptage const
- Créer des chaînes de pile (éventuellement avec décryptage)
- Créer des chaînes de tableau (éventuellement avec décryptage)
- Décryptage des chaînes de masse
Traiter avec le code obscurci
- Décompiler le code obscurci
- Scanner les hachages des noms d'API
- Sans expression
Reconnaissance du code
- Signatures de microcode
- Délice - détection des fonctions inclinées
Assistance aux structures
- Créer des structures factices
- Aider les lacunes divisées dans les structures
Assistance aux appels virtuels / indirects
- Assistance aux appels virtuels
- Sautez vers une destination d'appel indirecte
- Correction du pointeur de pile pour l'appel indirect
Améliorations IDA UI
- Xréfs étendus
- Highlight de l'attelle assorti
- Synchronisation du contenu de la fenêtre «Fonctions» Auto
Caractéristiques MISK
- Obtenez l'aide de l'API
- AVX LEVER
- Les chaînes de vidage, les commentaires et les noms de la base de données IDA
- Création de table des décalages
- Convertir la fonction en __UserCall, détecter les registres gâtés
- Définir les conventions d'appel un peu plus près de Go-Lang
Radiation
- Patchez la zone personnalisée avec NOPS
- Patch à partir du débogueur / patch à partir du fichier
- Recherche et patch
- Créer un fichier patché (DEC)
Aide du développeur du plugin IDA
Bâtiment
- Clone ou télécharger Crypto ++ ® Library CMake Code Source Code dans le dossier
hrtng/src/cryptopp-cmake .
cd src
git clone https://github.com/abdes/cryptopp-cmake
- Copiez
IDA_DIR/plugins/hexrays_sdk/include/hexrays.hpp Fichier dans le répertoire include du SDK IDA. (Pas nécessaire pour IDA 9.0) - Modifiez le fichier
hrtng/src/CMakeLists.txt pour définir le chemin d'accès et la version correct du sdk ida utilisé. Pour construire plus tard avec une autre version SDK, vous pouvez modifier la variable IDASDK_VER de CMake avec l'utilisation d'outils cmake -D , ccmake ou cmake-gui . - Créer un répertoire de construction, entrer, configurer et créer un projet CMake
mkdir bld && cd bld
cmake <path-to/hrtng/src>
cmake --build . --config Release -j 4 --clean-first
- Lors de la première tentative de construction, il y aura des erreurs de compilation à ressembler:
hrtng/src/deob.cpp:912:60: error: ‘class rangeset_t’ has no member named ‘getbag’
fc.create("tmpfc2", ranges.getbag(), 0);//!!! add line into range.hpp, class rangeset_t: "const rangevec_t &getbag() const { return bag; }"
- Pour corriger l'erreur, modifiez le fichier
IDA_SDK/include/range.hpp , ajoutant une ligne avec l'implémentation de la fonction getbag dans la déclaration class rangeset_t comme dans l'exemple suivant:
class rangeset_t
{
rangevec_t bag;
...
public:
const rangevec_t &getbag() const { return bag; }
...
};
- Copier les binaires construits dans le dossier
IDA_DIR/plugins togeter avec des fichiers apilist.txt et literal.txt à partir de hrtng/bin/plugins - Profit
Licence
Ce programme est publié sous la licence GPL V3
Auteurs
- Sergey.belov sur kaspersky.com