我经常在网上看到,当主题正在颠倒时,就是这种语法
*(_WORD *)(a1 + 6) = *(_WORD *)(a2 + 2);
我认为这段代码来自IDA插件(对吧?),但是我无法理解..有人可以解释一下,或者说明在哪里研究这段代码性质?
提前Thanxs =)
答案 0 :(得分:2)
此代码将a2 + 2
指向的地址中的2个字节复制到a1 + 6
指向的地址。
更详细地说,代码执行以下操作:
a2
提前2个字节。WORD
指针,即指向由两个字节组成的值的指针。这是右侧的(_WORD *)
部分。*
。我们现在有一个16位的值。现在我们:
a1
提前6个字节。WORD
指针。同样,这是(_WORD *)
部分。如果您以前从未见过这样的代码,您可能会认为在表达式的两边使用(_WORD*)
是多余的 - 但事实并非如此。例如,我们可以读取16位值并将其写入指向32位值的指针(例如,通过对其进行符号扩展)。
我建议您也查看汇编代码,您将在其中看到构成此分配的步骤。如果你没有它可用,那么只需自己编写一个C程序进行这样的操作,然后对其进行反编译。