首页
社区
课程
招聘
在OD中对抗rdtsc
发表于: 2005-4-21 16:02 9442

在OD中对抗rdtsc

2005-4-21 16:02
9442

在OD中对抗rdtsc

   不少壳代码使用rdtsc来检测运行时间,找出来跳过非
常烦人。rdtsc指令的解释就不?嗦了,liuyilin有篇很详
细的文章。

   如果CR4的TSD(time stamp disabled)置位,则rdtsc在
ring3下运行会导致异常(特权指令),所以进入ring0,把这
个标记置上,然后Hook OD的WaitForDebugEvent,拦截异常
事件,当异常代码为特权指令时,把异常处的opcode读出检
查,如果是rdtsc,把eip加2,SetThreadContext,edx:eax
的返回由你玩了。

   用MSLRH v0.3测试ok。CR4的改动是全局性的,在OD调试
期间所有使用该指令的程序都会异常:-)。

   不过恶搞太多,我的OD在W2K下都不行了,现在只能在XP
下坚持革命了。


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 7
支持
分享
最新回复 (7)
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
2
我一般是在rdtsc两头拦截
中间的shift+f9碰巧有的能过
2005-4-21 16:07
0
雪    币: 598
活跃值: (282)
能力值: ( LV13,RANK:330 )
在线值:
发帖
回帖
粉丝
3
最初由 fly 发布
我一般是在rdtsc两头拦截
中间的shift+f9碰巧有的能过


如果通篇都是rdtsc
2005-4-21 16:22
0
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
4
除了你估计没其他人这样干了  
2005-4-21 16:29
0
雪    币: 161
活跃值: (231)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
以前研究ICEEXT代码的时候,曾试验性的写过这样一个SOFTICE插件。一时大意,WIN系统中毒删了WINDOW系统后,代码没保留。在单CPU上比较好处理,多CPU上写CR4标志位必须HOOK到APIC处理中断上,在DS3。0及DS3。1中断处理的方法不同,DS3。1采用CPTHOOK。SYS回调NTICE。SYS中的函数的方法来实现。其RDTSC异常处理中断为INT 0D,只须检测异常指令是否为RDTSC(0F 35)就行了。处理完后,注意堆栈恢复
2005-4-22 09:56
0
雪    币: 6075
活跃值: (2236)
能力值: (RANK:1060 )
在线值:
发帖
回帖
粉丝
6
杀花的时候rdtsc作为一个陪葬品一起去见马克思了。
2005-4-22 22:58
0
雪    币: 556
活跃值: (2303)
能力值: ( LV9,RANK:2130 )
在线值:
发帖
回帖
粉丝
7
曾经写了这么个脚本片断来跟踪mslrh,先打开open trace,然后......
var addr
var eipval

lbl1:
sti
mov eipval,eip
cmp eipval,xxxx   //判断 是否为API调用
je lblapi
  //这里加上你自己想要处理的代码片段
and eipval,ffff0000
cmp eipval,310f
jne lbl1
fill eip,2,90
sti
sti
fill eipval,1,0f
inc eipval
fill eipval,1,31
jmp lbl1
2005-4-23 01:03
0
雪    币: 303
活跃值: (466)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
最初由 forgot 发布
杀花的时候rdtsc作为一个陪葬品一起去见马克思了。

有CRC效验怎么办
2005-4-23 08:35
0
游客
登录 | 注册 方可回帖
返回
//