“Tiny Tracer” is a flexible Pin Tool made for complex code analysis and tracking. Users can keep an eye on system calls, API calls, directions, and code transitions.
Notably, it can get around RDTSC-based anti-tracking checks. Because it makes thorough reports in.tag format, this tool is very useful for security experts and software analysts.
This piece will talk about its features and how it can be used on both Windows and Linux, focusing on how important it is for understanding and analyzing code.
A Pin Tool for tracing:
- API calls, including parameters of selected functions
- selected instructions: RDTSC, CPUID, INT
- inline system calls, including parameters of selected syscalls
- transition between sections of the traced module (helpful in finding OEP of the packed module)
Bypasses the anti-tracing check based on RDTSC.
Generates a report in a .tag
format (which can be loaded into other analysis tools):
RVA;traced event
i.e.
345c2;section: .text
58069;called: C:\Windows\SysWOW64\kernel32.dll.IsProcessorFeaturePresent
3976d;called: C:\Windows\SysWOW64\kernel32.dll.LoadLibraryExW
3983c;called: C:\Windows\SysWOW64\kernel32.dll.GetProcAddress
3999d;called: C:\Windows\SysWOW64\KernelBase.dll.InitializeCriticalSectionEx
398ac;called: C:\Windows\SysWOW64\KernelBase.dll.FlsAlloc
3995d;called: C:\Windows\SysWOW64\KernelBase.dll.FlsSetValue
49275;called: C:\Windows\SysWOW64\kernel32.dll.LoadLibraryExW
4934b;called: C:\Windows\SysWOW64\kernel32.dll.GetProcAddress
...
How to build
On Windows
To compile the prepared project you need to use Visual Studio >= 2012. It was tested with Intel Pin 3.28.
Clone this repo into \source\tools
that is inside your Pin root directory. Open the project in Visual Studio and build. Detailed description available here.
To build with Intel Pin < 3.26 on Windows, use the appropriate legacy Visual Studio project.
On Linux
For now the support for Linux is experimental. Yet it is possible to build and use Tiny Tracer on Linux as well. Please refer tiny_runner.sh for more information. Detailed description available here.
Usage
Details about the usage you will find on the project’s Wiki.