首页
社区
课程
招聘
[原创]时间比较
发表于: 2007-7-10 13:49 3929

[原创]时间比较

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解题方法汇总!

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 325
活跃值: (97)
能力值: ( LV13,RANK:530 )
在线值:
发帖
回帖
粉丝
2
哦。貌似RDTSC可以被设置为特权指令。然后后面的事情交给驱动帮你完成吧。
但是只是理论。。
2007-7-10 16:39
0
雪    币: 304
活跃值: (82)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
3
关注
2007-7-10 16:49
0
雪    币: 6075
活跃值: (2236)
能力值: (RANK:1060 )
在线值:
发帖
回帖
粉丝
4
修改cr,然后缓慢增长
2007-7-10 16:49
0
雪    币: 846
活跃值: (221)
能力值: (RANK:570 )
在线值:
发帖
回帖
粉丝
5
貌似已经有人写出插件了吧
2007-7-11 09:26
0
游客
登录 | 注册 方可回帖
返回
//