-
-
[求助]ODbgScript插件BUG?
-
发表于:
2011-9-28 23:53
4071
-
写了一个当CPU读取到指定浮点数就发生中断的脚本,但是发现貌似ODbgScript貌似有BUG啊,每次当ST0中就是我需要的浮点数时,当执行fucompp比较后,(两数其实已经相等,在OD中手工运行,结果就是正确的,fst =4000),实际结果常常FST为7800,也就是说插件运行貌似影响了浮点的状态寄存器,这下怎么搞啊,俺可要用到那东东呢,ODbgScript有不能直接访问浮点的状态寄存器.高手们有没有办法呢指点下小弟啊
脚本很简单,单步运行程序,每个指令执行完后,检测st0是不是我想要的那个浮点数,如果跟我指定的浮点数相等就中断并弹出消息.
问题就在浮点比较指令总是返回异常的结果,真是郁闷啊.
脚本代码如下:
var dw_800
var status
mov dw_800, 42F60000 //浮点数的HEX值
begin:
sti //单步过
exec
pushad
fstenv [esp] //保存浮点处理器的状态
push eax //保存eax
ende
mov eax,dw_800 //要比较的数
exec
fld st
push eax
fld dword ptr [esp]
ende
exec
fucompp
fstsw ax //就这里很郁闷,就算st0和st(1)是同一个数,结果也是错得
ende
mov status,ah
exec
sahf
ende
exec //恢复状态
pop eax
pop eax
fldenv [esp]
add esp,20
ende
cmp status,40
je Find_OK
jmp begin
Find_OK:
bp eip
MSG "Int"
[培训]传播安全知识、拓宽行业人脉——看雪讲师团队等你加入!