如何在linux中伪造RDTSC

时间:2013-10-29 16:44:23

标签: linux assembly x86 rdtsc

我目前正致力于破解。 RDTSC在x86程序集中使用,以便在调试器或其他东西减慢时获取时间戳。crackme本身是elf32剥离的二进制文件。

我目前正在使用Macos + VirtualBox Debian32。

我的策略是先保留RDTSC来电并存储eaxedx。将其保留在其他rdtsc次调用的位置,我将之前的eaxedx值设置为当前值。我对这个策略没有运气。 Crackme仍然了解我。

我通过谷歌搜索并找到了IDAstealth的另一个Windows程序,可以让你伪造rdtsc个电话。

我在linux中寻找相同的东西。有没有办法在linux中设置rdtsc值?

1 个答案:

答案 0 :(得分:1)

用ecx = 59的WRMSR指令写TSC寄存器。这是一个特权指令,所以你只能在内核中执行。

“拦截”RDTSC调用的一种更简单的方法是在CR4中设置TSD位,禁用RDTSC指令。这也只能在内核中完成。

因此,无论如何切片,如果你想在linux上做这个,你需要编写一个内核模块来进行必要的控制寄存器操作。