如何通过 PIN 访问 TEB?

逆向工程 视窗 登录 小工具
2021-07-07 07:32:13

在 PIN 的文档中,它是这样说的PIN_SafeCopy

PIN_SafeCopy 用于将指定数量的字节从源内存区域复制到目标内存区域。即使源或目标区域不可访问(全部或部分),此函数也能保证安全返回给调用者。使用此函数还可以保证工具读取或写入应用程序使用的值。例如,在 Windows 上,Pin 在运行工具的分析代码时会替换某些 TEB 字段。如果该工具直接访问这些字段,它将看到修改后的值而不是原始值。使用 PIN_SafeCopy() 允许工具读取或写入这些字段的应用程序值。

我正在尝试获取当前线程的堆栈基础。通常我会得到它(如果直接通过FS):mov eax, FS:[0x04]因为我越来越老栈,而不是“新”一个由PIN维持(如果我比较REG_ESP来自PIN与当前ESP他们表现出不同的堆栈)我想先获得与TEB的线性地址mov eax, FS:[0x18],然后使用PIN_SafeCopy到从此地址读取 + 0x04。但是我只得到 0x00000000。知道我该怎么做吗?此外,我认为如果从这些陈旧的数据源中读取数据,那么使用 Win API 会带来风险吗?

0个回答
没有发现任何回复~