我遇到了一个小函数,其唯一的副作用是修改了某些处理器标志的状态。当我使用Hex Rays反编译器对该函数进行反编译时,我只是得到了一个空函数,这对于弄清楚该函数的作用根本没有用。取而代之的是,我不得不在汇编语言手册中查找每条指令,并阅读伪代码以确定函数的实际效果。是否有一些我可以粘贴汇编指令的工具可以吐出包括标志在内的所有副作用?我对x86感兴趣。

评论

当您说要反编译时,是指通过Hex-Rays吗?

是的,我正在使用IDA和Hex-Rays。

@ user2142:最好的选择是先学习汇编,习惯它然后再进行反编译,而不是反过来。

我知道我只需要查阅手册就可以了,因为我并没有记住所有的标志副作用。

@ user2142:最简洁,最通用的操作码可以在此处的两个备忘页面上找到。

#1 楼

Hex-Rays进行活动性分析和消除死代码,就您的功能而言,听起来好像它决定了一切都死了。我认为不可能通过__usercall告诉Hex-Rays某个函数的返回位置在标志位置,因此在这种假设下,Hex-Rays在这种情况下无济于事。

want是一种能够为给定指令或指令块呈现中间语言翻译的工具。在这种程度上,BitBlaze,BAP和miasm等工具可以提供帮助。另请参阅此链接以获取与BAP无关的语言界面。

评论


从来没有听说过这个工具,这正是我想要的。尽管我想我要依靠他们仔细阅读英特尔手册并正确对待所有副作用的事实。

–user2142
2013年6月7日22:00

无论您使用哪种工具,都将取决于诸如此类的事实。对于动态分析,您至少可以监视调试器以验证指定位置是否发生了更改。

–滚轴
13年6月7日在22:35

@ user2142:对我来说,有些人宁愿阅读IR而不是原始汇编代码,这听起来有些奇怪。请问你为什么要那样?

– NirIzr
2013年6月7日23:21

我不确定我是否想要那个。刚刚问了一个倒车时突然出现的问题!

–user2142
2013年6月9日23:00