Alpha_h4ck
- 关注
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9

关于TinyTracer
TinyTracer是一款功能强大的API调用跟踪工具,在该工具的帮助下,广大研究人员能够轻松实现API的调用跟踪。
功能介绍
1、支持跟踪API调用,其中包括参数和选择的目标函数;
3、内联系统调用,包括参数和选择的syscall;
4、支持在被跟踪模块的各个部分之间切换(可以帮助找到封装模块的OEP);
5、支持基于RDTSC绕过反跟踪机制;
工具要求
Visual Studio(Windows)
g++、make(Linux)
工具下载
广大研究人员可以使用下列命令将该项目源码克隆至本地:
git clone https://github.com/hasherezade/tiny_tracer.git
工具构建
Windows
在Windows平台上,我们需要使用Visual Studio( >= 2012)来编译和构建工具代码,当前版本的TinyTracer已在Intel Pin 3.28上进行过测试。
接下来,将克隆下来的代码拷贝到Pin根目录的\source\tools路径下,然后在Visual Studio中导入项目,并进行代码构建即可。
Linux
在Linux平台下,我们可以直接运行tiny_runner.sh脚本来完成工具的构建:
ln -s $HOME/pin/source/tools/tiny_tracer/install32_64/tiny_runner.sh ~/bin/tiny_runner.sh
或
ln -s $HOME/pin/source/tools/tiny_tracer/install32_64/ $HOME/Desktop/install32_64
注意事项
1、为了保证工具能够正常运行,内核调试功能必须被禁用;
2、在项目的install32_64目录中,提供了用于检测内核调试功能是否已禁用的脚本,该脚本可能会被Windows Defender检测为恶意软件;
3、请在Windows 8+环境使用该工具;
工具使用
下面给出的是一个跟踪调用的演示样例:
~/Desktop/pin_tests$ tiny_runner.sh ./demo
Linux runner for Tiny Tracer Usage: <target_app> [target_module*] *-optional; default: target app's main module Traced App: ./demo Traced Module Name: demo The app is 64 bit. Watch 5 functions Watch 0 syscalls =============================================== This application is instrumented by TinyTracer v.2.2 Tracing module: demo See file ./demo.tag for analysis results =============================================== Hello World!
以.tag格式生成一份跟踪报告,之后可将其加载到其他分析工具中进行进一步分析:
RVA;traced event
生成结果如下:
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 ...
我们也可以通过修改install32_64目录中的TinyTracer.ini和parameters.txt来启用或禁用某些功能。
项目地址
TinyTracer:【GitHub传送门】
参考资料
https://c9x.me/x86/html/file_module_x86_id_278.html
https://c9x.me/x86/html/file_module_x86_id_45.html
https://c9x.me/x86/html/file_module_x86_id_142.html
https://visualstudio.microsoft.com/downloads/
https://software.intel.com/en-us/articles/pin-a-binary-instrumentation-tool-downloads
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)