-
-
[原创]时间比较
-
发表于:
2007-7-10 13:49
3929
-
几天前受了点刺激,本文是一点都不刺激。现在虽然已经不生气了,但是,为了肯定自己的才能,^_^,表演一个
本文是时间比较(rdtsc)的高级版。
//---------------------------------------------------------------------------
DWORD findteb()
{ __asm mov eax,fs:[0x18]
}
void gettime(unsigned int time[2])
{
DWORD ADDR;
ADDR=findteb()+0xc08;
__asm
{
mov eax,ADDR
mov word ptr [eax],0x310f //rdtsc
mov byte ptr[eax+2],0XC3 //retn
call eax
mov ebx,time[0]
mov [ebx],edx
mov [ebx+4],eax
}
}
一个小小的anti,因为teb处的代码可以读可以写,还可以运行,而且teb中还有一个ascii to unicode的缓冲区供我们写代码。没有其它地方的那种windows通用保护异常。也省得我们用virtualprotect等函数。
不过这里的要走的路还很长,也是我以前不愿意贴出来的原因。上面的代码还有几点必须做的就是
1、如何防止硬件断点找到了时间比较
2、如何防爆破
现在对这些问题已经有了一点思路了。
解决方案
1、在得到time的时候,copy出100份,硬件断点毕竟只有四个,再加上随机的话,那么,跟找这个时间比较肯定需要运气了。
2、防爆破只能说仁者见仁,智者见智,我的方案已经在实现中了,能不能成功又是另外一回事情了。
[课程]Android-CTF解题方法汇总!