[英]C-Style Cast With Memory
這是我正在使用的C風格演員表的示例:
*(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
的例子將是什么?
謝謝!
順便說一句,我幾天前也發表了類似的帖子(以防萬一,它看起來很熟悉),但這總體上是一個不同的問題。
除了iharob所說的以外,另一個區別是分配將覆蓋多少內存。 在示例中,使用char將用0xFF覆蓋單個字節。 但是,如果將其強制轉換為int,則將覆蓋4或8個字節(取決於計算機體系結構)。 這將導致一些未定義的行為,因為您不知道會擦除其他哪些值(如果有)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.