导读 大家好,我是小夏,我来为大家解答以上问题。花指令怎么识别汇编和数据,花指令很多人还不知道,现在让我们一起来看看吧!1、什么是花指令...
大家好,我是小夏,我来为大家解答以上问题。花指令怎么识别汇编和数据,花指令很多人还不知道,现在让我们一起来看看吧!
1、什么是花指令?当然不是"flower code",呵呵,实际上,把它按照“乱指令”来理解可能更贴切一些,它的真正英文名应该叫"thunkcode"吧(不确定,呵呵)。
2、我们知道,汇编语言其实就是机器指令的符号化,从某种程度上看,它只是更容易理解一点的机器指令而已。
3、每一条汇编语句,在汇编时,都会根据cpu特定的指令符号表将汇编指令翻译成二进制代码。
4、而日常应用中,我们通过VC的IDE或其它如OD等反汇编、反编译软件也可以将一个二进制程序反汇编成汇编代码。
5、机器的一般格式为:指令+数据。
6、而反汇编的大致过程是:首先会确定指令开始的首地址,然后根据这个指令字判断是哪个汇编语句,然后再将后面的数据反汇编出来。
7、由此,我们可以看到,在这一步的反汇编过程中存在漏洞:如果有人故意将错误的机器指令放在了错误的位置,那反汇编时,就有可能连同后面的数据一起错误地反汇编出来,这样,我们看到的就可能是一个错误的反汇编代码。
8、这就是“花指令”,简而言之,花指令是利用了反汇编时单纯根据机器指令字来决定反汇编结果的漏洞。
本文到此讲解完毕了,希望对大家有帮助。