我目前正致力于破解。 RDTSC
在x86程序集中使用,以便在调试器或其他东西减慢时获取时间戳。crackme本身是elf32剥离的二进制文件。
我目前正在使用Macos + VirtualBox Debian32。
我的策略是先保留RDTSC
来电并存储eax
和edx
。将其保留在其他rdtsc
次调用的位置,我将之前的eax
和edx
值设置为当前值。我对这个策略没有运气。 Crackme仍然了解我。
我通过谷歌搜索并找到了IDAstealth的另一个Windows程序,可以让你伪造rdtsc
个电话。
我在linux中寻找相同的东西。有没有办法在linux中设置rdtsc
值?
答案 0 :(得分:1)
用ecx = 59的WRMSR
指令写TSC寄存器。这是一个特权指令,所以你只能在内核中执行。
“拦截”RDTSC调用的一种更简单的方法是在CR4中设置TSD位,禁用RDTSC指令。这也只能在内核中完成。
因此,无论如何切片,如果你想在linux上做这个,你需要编写一个内核模块来进行必要的控制寄存器操作。