IAT-Tracer: Effortless Parameter Tracing for PE Files

IAT-Tracer

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.

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.

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.

Download & Use