以下是我正在使用的C-Style演员的示例:
*(char*)(0x0FCA41E + (0x280 * i)) = 0xFF;
此代码本质上是一个使命召唤黑客,它会篡改玩家的健康状况。默认情况下,地址0x0FCA41E
的值为0x00
,但将其更改为0xFF
会启动无限运行状况。我理解这行代码的作用,但这必须是char
吗?它看起来像这样吗?
*(int*)(0x0FCA41E + (0x280 * i)) = 0xFF;
//or
*(short*)(0x0FCA41E + (0x280 * i)) = 0xFF;
我知道0xFF
是内存的一个字节,就像char
一样,但如果我使用int
或short
会发生什么?那会有用吗?
如果没有,那么在这个意义上使用int
或short
的例子是什么?
谢谢!
顺便说一下,我在这几天发了一篇类似的帖子(看起来很熟悉),但这是一个不同的问题。
答案 0 :(得分:4)
除了iharob所说的,另一个区别是分配将覆盖多少内存。在该示例中,使用char将使用0xFF覆盖单个字节。但是如果将它转换为int,那么将覆盖4或8个字节(取决于机器架构)。这将导致一些未定义的行为,因为您不知道将删除其他任何值(如果有的话)。