-
-
[原创]解决IDA的F5(hexray 1.5)不能用于FPU栈用满的情况
-
发表于:
2014-10-19 13:55
5122
-
[原创]解决IDA的F5(hexray 1.5)不能用于FPU栈用满的情况
尝试分析一段fpu指令,测试了让fpu stack占用到7个(st0~st6)都没问题,一旦使用到st7,hexray插件就会打一个inconsistent fpu stack然后直接给汇编。
比如这样的代码:
fld1
fld1
fld1
fld1
fld1
fld1
fld1
faddp st(1), st
faddp st(1), st
faddp st(1), st
faddp st(1), st
faddp st(1), st
faddp st(1), st
F5可以正确反编译:
return 1.0 + 1.0 + 1.0 + 1.0 + 1.0 + 1.0 + 1.0;
可只要用到ST7:
fld1
fld1
fld1
fld1
fld1
fld1
fld1
fld1
faddp st(1), st
faddp st(1), st
faddp st(1), st
faddp st(1), st
faddp st(1), st
faddp st(1), st
faddp st(1), st
就报告inconsistent fpu stack并给出这样的结果:
__asm
{
fld1
fld1
fld1
fld1
fld1
fld1
fld1
fld1
faddp st(1), st
faddp st(1), st
faddp st(1), st
faddp st(1), st
faddp st(1), st
faddp st(1), st
faddp st(1), st
}
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课