C风格的内存

时间:2015-11-12 02:53:47

标签: c++ c

以下是我正在使用的C-Style演员的示例:

*(char*)(0x0FCA41E + (0x280 * i)) = 0xFF;

此代码本质上是一个使命召唤黑客,它会篡改玩家的健康状况。默认情况下,地址0x0FCA41E的值为0x00,但将其更改为0xFF会启动无限运行状况。我理解这行代码的作用,但这必须是char吗?它看起来像这样吗?

*(int*)(0x0FCA41E + (0x280 * i)) = 0xFF;
//or
*(short*)(0x0FCA41E + (0x280 * i)) = 0xFF;

我知道0xFF是内存的一个字节,就像char一样,但如果我使用intshort会发生什么?那会有用吗?

如果没有,那么在这个意义上使用intshort的例子是什么?

谢谢!

顺便说一下,我在这几天发了一篇类似的帖子(看起来很熟悉),但这是一个不同的问题。

1 个答案:

答案 0 :(得分:4)

除了iharob所说的,另一个区别是分配将覆盖多少内存。在该示例中,使用char将使用0xFF覆盖单个字节。但是如果将它转换为int,那么将覆盖4或8个字节(取决于机器架构)。这将导致一些未定义的行为,因为您不知道将删除其他任何值(如果有的话)。