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