Kali Linux

IDA2Obj : Static Binary Instrumentation

IDA2Obj is a tool to implement SBI (Static Binary Instrumentation).

The working flow is simple:

  • Dump object files (COFF) directly from one executable binary.
  • Link the object files into a new binary, almost the same as the old one.
  • During the dumping process, you can insert any data/code at any location.
    • SBI is just one of the using scenarios, especially useful for black-box fuzzing.

How To Use

  • Prepare the enviroment:
    • Set AUTOIMPORT_COMPAT_IDA695 = YES in the idapython.cfg to support the API with old IDA 6.x style.
    • Install dependency: pip install cough
  • Create a folder as the workspace.
  • Copy the target binary which you want to fuzz into the workspace.
  • Load the binary into IDA Pro, choose Load resources and manually load to load all the segments from the binary.
  • Wait for the auto-analysis done.
  • Dump object files by running the script MagicIDA/main.py.
    • The output object files will be inside ${workspace}/${module}/objs/afl.
    • If you create an empty file named TRACE_MODE inside the workspace, then the output object files will be inside ${workspace}/${module}/objs/trace.
    • By the way, it will also generate 3 files inside ${workspace}/${module} :
      • exports_afl.def (used for linking)
      • exports_trace.def (used for linking)
      • hint.txt (used for patching)
  • Generate lib files by running the script utils/LibImports.py.
    • The output lib files will be inside ${workspace}/${module}/libs, used for linking later.
  • Open a terminal and change the directory to the workspace.
  • Link all the object files and lib files by using utils/link.bat.
    • e.g. utils/link.bat GdiPlus dll afl /RELEASE
    • It will generate the new binary with the pdb file inside ${workspace}/${module}.
  • Patch the new built binary by using utils/PatchPEHeader.py.
    • e.g. utils/PatchPEHeader.py GdiPlus/GdiPlus.afl.dll
    • For the first time, you may need to run utils/register_msdia_run_as_administrator.bat as administrator.
  • Run & Fuzz.
R K

Recent Posts

Elementary OS 8 With New Secure Session Privacy Consent

Elementary OS 8 has been released with a significant focus on privacy, security, and user…

23 hours ago

Raspberry Pi Launches Compute Module 5 With Wi-Fi And Bluetooth

Today we’re happy to announce the much-anticipated launch of Raspberry Pi Compute Module 5, the…

1 day ago

Ulfberht : Advanced Techniques For Shellcode Loading And Evasion

Ulfberht is a sophisticated shellcode loader designed to enhance operational security and evasion capabilities in…

2 days ago

TrailShark : Revolutionizing AWS CloudTrail Analysis With Wireshark Integration

The TrailShark Capture Utility seamlessly integrates with Wireshark, facilitating the capture of AWS CloudTrail logs…

2 days ago

Genzai : The Ultimate IoT Security Toolkit – Setup, Features, And Usage

The tool is written in Go, so make sure to install it on your system…

2 days ago

MITRE ATT&CK Evaluations And Must-Have Intelligence For Security Leaders

In today’s dynamic threat landscape, security leaders are under constant pressure to make informed choices…

4 days ago