前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何使用TinyTracer跟踪API调用

如何使用TinyTracer跟踪API调用

作者头像
FB客服
发布2023-12-06 15:55:24
1030
发布2023-12-06 15:55:24
举报
文章被收录于专栏:FreeBufFreeBuf
关于TinyTracer

TinyTracer是一款功能强大的API调用跟踪工具,在该工具的帮助下,广大研究人员能够轻松实现API的调用跟踪。

功能介绍

1、支持跟踪API调用,其中包括参数和选择的目标函数; 2、选择的指令,包括RDTSCCPUIDINT; 3、内联系统调用,包括参数和选择的syscall; 4、支持在被跟踪模块的各个部分之间切换(可以帮助找到封装模块的OEP); 5、支持基于RDTSC绕过反跟踪机制;

工具要求

Intel PIN Visual Studio(Windows) g++、make(Linux)

工具下载

广大研究人员可以使用下列命令将该项目源码克隆至本地:

代码语言:javascript
复制
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脚本来完成工具的构建:

代码语言:javascript
复制
ln -s $HOME/pin/source/tools/tiny_tracer/install32_64/tiny_runner.sh ~/bin/tiny_runner.sh
(向右滑动,查看更多)
或
代码语言:javascript
复制
ln -s $HOME/pin/source/tools/tiny_tracer/install32_64/ $HOME/Desktop/install32_64

(向右滑动,查看更多)

注意事项

1、为了保证工具能够正常运行,内核调试功能必须被禁用; 2、在项目的install32_64目录中,提供了用于检测内核调试功能是否已禁用的脚本,该脚本可能会被Windows Defender检测为恶意软件; 3、请在Windows 8+环境使用该工具;

工具使用

下面给出的是一个跟踪调用的演示样例:

代码语言:javascript
复制
代码语言:javascript
复制
~/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!
代码语言:javascript
复制
(向右滑动,查看更多)

以.tag格式生成一份跟踪报告,之后可将其加载到其他分析工具中进行进一步分析:

代码语言:javascript
复制
RVA;traced event

生成结果如下:

代码语言:javascript
复制
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:https://github.com/hasherezade/tiny_tracer

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-12-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FreeBuf 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 功能介绍
  • 工具要求
  • 工具下载
  • (向右滑动,查看更多)
  • 工具构建
    • Windows
      • Linux
      • 注意事项
      • 工具使用
      • 项目地址
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档