反向工程模棱两可的语法



我经常在网上看到主题逆转的内容是该语法

  *(_WORD *)(a1 + 6) = *(_WORD *)(a2 + 2);

我认为此代码来自IDA插件(对吗?),但是我听不懂。.有人可以向我解释一下,或者指出在哪里可以研究此代码性质的东西?

thanxs提前=)

此代码从 a2 + 2指向的地址复制2个字节到 a1 + 6指向的地址。

更详细地说,代码执行以下操作:

  • 提前2个字节来自a2
  • 将结果视为WORD指针,即由两个字节组成的值。这是右侧的(_WORD *)部分。
  • 阅读上述指针引用的两个字节。这是右侧表达式左侧的*

我们现在有一个16位值。现在我们:

  • a1的提前6个字节。
  • 将结果视为WORD指针。同样,这是(_WORD *)部分。
  • 将我们在第一部分中读取的两个字节写入我们拥有的指针指向的地址。

如果您以前从未见过这样的代码,您可能会认为在表达式两侧使用(_WORD*)是多余的 - 但事实并非如此。例如,我们可以读取16位值并将其写入指向32位值的指针(例如,通过登录扩展)。

我建议您还查看构成此作业的步骤。如果您没有可用

最新更新