我目前正在研究一个crackme。RDTSC在x86程序集中使用,用于在被调试器减慢或something.The crackme本身是elf32剥离的二进制文件时获得匹配的时间戳。
我目前正在开发Macos + VirtualBox Debian32。
我的策略是保留第一个RDTSC调用,并存储它的eax和edx。将它保存在其他rdtsc调用的某个地方,我将以前的eax和edx值设置为当前值。我对这个策略一无所知。Crackme还了解我。
我在谷歌上搜索,找到了IDAstealth,这是另一个可以让你伪造rdtsc调用的windows程序。
我正在寻找linux中的等价物。在linux中有什么方法可以设置rdtsc的值吗?
发布于 2013-10-30 03:07:52
使用ecx = 59的WRMSR指令写入TSC寄存器。这是一条特权指令,所以只能在内核中执行。
“拦截”RDTSC调用的一种更简单的方法是在CR4中设置TSD位,禁用RDTSC指令。这也只能在内核中完成。
因此,无论如何,如果您想在linux上执行此操作,则需要编写一个内核模块来执行必要的控制寄存器操作。
https://stackoverflow.com/questions/19664276
复制相似问题