我经常在网上看到的,当话题被逆转,就是这个语法逆向工程暧昧语法
*(_WORD *)(a1 + 6) = *(_WORD *)(a2 + 2);
我觉得这个代码是从IDA插件(右?),但我不明白..有人可以解释我一点点,或指示某些地方研究这种代码性质?
Thanxs预先=)
我经常在网上看到的,当话题被逆转,就是这个语法逆向工程暧昧语法
*(_WORD *)(a1 + 6) = *(_WORD *)(a2 + 2);
我觉得这个代码是从IDA插件(右?),但我不明白..有人可以解释我一点点,或指示某些地方研究这种代码性质?
Thanxs预先=)
此代码副本的地址2个字节指向a2 + 2
到地址由a1 + 6
指向。
更详细地,所述代码执行以下操作:
a2
2个字节。WORD
指针,即指向由两个字节组成的值的指针。这是右边的(_WORD *)
部分。*
。我们现在有一个16位的值。现在我们:
a1
前进6个字节。WORD
指针。再次,这是(_WORD *)
部分。如果你以前从未见过这样的代码,你可能会认为在表达式的两边都使用(_WORD*)
是多余的 - 但事实并非如此。例如,我们可以读取一个16位的值并将其写入一个指向32位值的指针(例如通过对其进行符号扩展)。
我建议你也看看汇编代码,你将看到构成这个任务的步骤。如果你没有它,那么只需自己编写一个C程序来完成这种操作,然后对其进行反编译。
你对这段代码不了解么?你懂C吗?你熟悉指针吗? – YSK
是的,我的意思是我看不到指针和铸造..但是,例如,[a1 + 6]是什么意思? a1 + 6职位?成数组? – Kiks777