求助:大量浮点数运算IDA的F5操作无法解析

IDA函数窗口如下:




按Fn+F5解析出来后就只有几行:

不知道是不是因为遇到了大量的浮点数运算,然后IDA的F5操作就不解析这些计算了?还是说有解析的方法?有同样遇到过这种情况的吗 = =?

就你截图这点代码来说的话,F5出来可能就这么多伪代码

更新了图,除了函数名称,该函数的图都发上来了

你可以看到汇编代码中的浮点数常量,对比来看应该就这么点伪代码

层主看来这种逆向玩的比较少,确实IDA没有解析出这些浮点数运算。因为我用Monkey调试时,确实有进入到这些浮点数运算。而F5解析出来的函数,除了一个是否为0的判断,就没有什么其他运算了,并且如果直接hook这个函数,只复现解析的这几行,生成的数据就会出错。

样本发出来看看吧

function_reverse.txt (12.4 KB)
感谢大佬,感觉这个要是没做出来就得被公司炒了= =。函数名称我已经改过了,不过不影响分析。

单步看,或者unicorn

是指Unicorn Engine去混淆吗?不过这里应该没有用到混淆,因为在反汇编窗口看的时候,按空格切换为流程图显示,就只有2个分支,如果a3中的值都为0就直接返回,如果有一个不为0,就执行那段浮点数计算。

unicorn 就不逆向了,直接吧函数扣出来,你这个函数基本没有什么全局变量,然后开启vfp模拟执行试试。

没怎么用过unicorn,可能要花点时间熟悉下这个。不过单步看,就是指动态调试时,逐步确认这些计算吗?

你这个代码量不大啊,,要是项目时间紧来不及学unicorn或者dbg你直接手敲代码一行一行把汇编还原出来就OK了,除非中间那个分支函数有很大的混淆,不然一上午就敲完了。然后对比动态调试调一下,很快的。

嗯嗯,正有此意!后来试着用hopper解析了下,是能解析出这种运算的,虽然是在伪代码里保留了汇编运算,不过看起来已经够清晰了。

态度决定一切

:rofl: 恭喜你 饭碗保住了

:cowboy_hat_face: 看来是的