IDA Pro plugin with a rich set of features: decryption, deobfuscation, patching, lib code recognition and various pseudocode transformations
hrtng IDA plugin
hrtng IDA plugin is a collection of tools, ideas and experiments I've found interesting and useful in my reversing work.Special thanks to following peoples for their great plugins were used as base for my work: * Hex-Rays SA ida-sdk examples * Milan Bohacek, hexraystools and hexrays_hlight * J.C. Roberts and Alexander Pick: IDB2PAT * HexRaysDeob by Rolf Rolles and Takahiro Haruyama * Karthik Selvaraj Krypton plugin * Ali Rahbar, Ali Pezeshk and Elias Bachaalany GraphSlick plugin * Markus Gaasedelen AVX support for the Hex-Rays x64 Decompiler
The plugin requires Hex-Rays decompiler presence in your IDA installation. Only latest version of IDA is supported and evolves. However the plugin can be compiled with IDA SDK >= 7.3 New features and fixes added for the current IDA usually not well tested with old versions.
Features of the plugin:
There is no one place in menu where all functionality of the plugin grouped together. The plugin's menu items placed closer to logically related standard IDA & Hex-Rays decompiler functions. Messages, menu items, popup windows and dialog boxes belong to this plugin are marked with "[hrt]" prefix.
Automation
* Automatic renaming local and global variables, struct members * Auto-comments * Enum substitution * COM helperInteractive pseudocode transformation
* User interactive renaming/retyping assistance * Assists with changing type of structure member or local/global variable * Invert "if" statement * reinterpretcast * Collapse selection * "offsetof" convertorDecryption
* String/data/const decryption * Build stack string (optionally with decryption) * Build array string (optionally with decryption) * Mass strings decryptionDeal with obfuscated code
* Decompile obfuscated code * Hidden variable assignments * Scan for API names hashes * Unflattening * Microcode optimizers / "Magic" callsCode recognition
* Microcode signatures * De-Inline - detection of inlined functions * Create patterns (PAT) file from IDA databaseType management assistance
* Create dummy structs * Assist split gaps in structures * Union creation for a variable is reused with different types * List of structures with given size, with given offset * Assist in creation of new structure definitions * Finds structures with same "shape" as is used / Create struct from derefs *Virtual/indirect calls assistance
* Virtual calls assistance * Jump to indirect call destination * Fix stack pointer for indirect callFunction name and type
* Smart rename func * Convert function to _usercall, detect spoiled registers * Import user named functions prototypes into the local type library *IDA UI improvements
* Extended xrefs * Matching brace highlight * Auto turn on 'Functions' window content synchronisation * Render markdown content of "IDA notepad" in a docked viewerMisk features
* Get API help * AVX lifter * Dump strings, comments and names from the IDA database * Offsets table creation * Print reversing progress percent on a proc renaming * Recursively decompile callees * Refactoring (global Find and Replace) *Patching
* Patch custom area with NOPs * Patch from debugger / Patch from file * Search & Patch * Create patched (DEC) fileIDA plugin developer help
*Media
Reversing FinSpy
* securelist - Our secret ingredient for reverse engineering (EN) * Хабр - Cекретный ингредиент для реверс-инжиниринга: как работает наш собственный опенсорс-плагин для IDA (RU) * Positive Hack Days Fest 2025 - Наш секретный ингредиент для реверс-инжиниринга (RU) * Off-By-One 2025 - Speed up your reverse engineering with the hrtng plugin (EN)Analyzing PlugX
* SSTIC 2025 - Analysez des logiciels malveillants plus rapidement avec hrtng (FR)Building
* Clone hrtng together with Crypto++® Library CMake submodule. Or put manually downloaded cryptopp-cmake source code to hrtng/src/cryptopp-cmake folder.
cd src git clone --recurse-submodules https://github.com/KasperskyLab/hrtng.git
* Copy IDADIR/plugins/hexrayssdk/include/hexrays.hpp file to the include directory of the IDA SDK. (Not necessary since IDA 9.0/8.5) * Edit hrtng/src/CMakeLists.txt file to set correct path and version of used IDA SDK. To build later with another SDK version you may change cmake's IDASDK_VER variable with using cmake -D, ccmake or cmake-gui tools. * Create build directory, go into it, configure and build cmake project
mkdir bld && cd bld cmake <path-to/hrtng/src> cmake --build . --config Release -j 4 --clean-first
* On the first build attempt with IDA SDK before version 9.1 there will be compiling error looks like:
hrtng/src/deob.cpp:912:60: error: ‘class rangesett’ has no member named ‘asrangevec’
fc.create("tmpfc2", ranges.asrangevec(), 0);//!!! add line into range.hpp, class rangesett: "const rangevect &asrangevec() const { return bag; }"
* To fix the error, edit IDASDK/include/range.hpp file, adding line with asrangevec function implementation into class rangeset_t declaration as in the following example:
class rangeset_t
{
rangevec_t bag;
...
public:
const rangevect &asrangevec() const { return bag; }
...
};
* Copy built binaries into IDA_DIR/plugins folder together with apilist.txt and literal.txt files from hrtng/bin/plugins * Profit
License
This program is released under GPL v3 licenseAuthor
- Sergey.Belov at kaspersky.com