簡體   English   中英

具有記憶的C樣式轉換

[英]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 ,但是如果我使用intshort會發生什么呢? 那行得通嗎?

如果不是,那么在這種意義上使用intshort的例子將是什么?

謝謝!


順便說一句,我幾天前也發表了類似的帖子(以防萬一,它看起來很熟悉),但這總體上是一個不同的問題。

除了iharob所說的以外,另一個區別是分配將覆蓋多少內存。 在示例中,使用char將用0xFF覆蓋單個字節。 但是,如果將其強制轉換為int,則將覆蓋4或8個字節(取決於計算機體系結構)。 這將導致一些未定義的行為,因為您不知道會擦除其他哪些值(如果有)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM