Home

Awesome

<div align="center"> <img src="assets/iat-tracer.ico"> </div>

IAT-Tracer V2 is a plugin for Tiny-Tracer framework (by @hasherezade) for automatically detecting and resolving functions' parameters out of the IAT or trace logs (.tag files) of PE files. The plugin has a GUI that allows the user to choose what imported or called functions to trace and watch and then automatically fills the parameters (library, function's name, and the number of parameters) into the "params.txt" file used by Tiny-Tracer. Using this tool, the user can log all the dynamically called API functions and their arguments for each call.

Changelog (V2)

Usage (IAT Tracing)

Example: tracing and watching interesting API functions from the Vipasana ransomware binary.

<div align="center"> <img src="assets/iat-tracer-v1.gif"> </div>

Usage (.tag File Tracing)

Example: tracing and watching all the dynamically called functions from the SameCoin Wiper binary.

YouTube video:

.tag File Tracing

Potential uses: malware analysis, reverse engineering, and debugging.

Motivation

Currently, to trace and watch a program with the Tiny-Tracer framework one needs to perform several steps manually:

  1. Finding which interesting functions are imported/called by the program.
  2. Finding the library and the number of parameters required by those functions (this step usually requires online access to MSDN).
  3. Manually writing each function's library, name, and number of parameters to the params.txt file.

The plugin is intended to automate this process, enabling the user to complete steps 1-3 offline in a matter of seconds.

Installation

The plugin is intended to be used after the installation of Tiny-Tracer.

git clone https://github.com/YoavLevi/IAT-Tracer.git
cd IAT-Tracer\
pip install -r requirements.txt
python .\IAT-Tracer.py

A more straightforward way to run the application is using the one-file executable:

image

Compatibility

Python 3

How It Works

The plugin parses the PE header and then resolves each function (upon selection) and its parameters to the params.txt file required by Tiny-Tracer.
The plugin contains an offline dictionary (apidb.pickle) of all documented Windows API functions the author was able to reach. The plugin was tested successfully against many executables. Upon a PE file with imports or called functions that are not part of the Windows API headers, the plugin would alert the user that some functions couldn't be resolved.
The offline database was created automatically using a different Python script (not included in this directory but can be published upon request), a scrapper of Windows API headers files. Hence, there could be some bugs or inconsistencies. Whenever you encounter a bug, please report it to the issues tab of this repository.
The GUI is built using CustomTkinter Python UI-library.

To-Do

Issues

Use GitHub Issues for posting bugs and feature requests.