我一直在研究通過教程一兩個星期的C++遊戲黑客攻擊,而且我幾乎可以獲得這一切。 但是,有一件事一直在困擾着我。什麼是RAM中的靜態指針,它們如何存在?
要定製一個值(f.e.玩家的健康狀況),我們必須使用Cheat Engine(或類似的)搜索內存地址,並將值設置爲其他值。 這些內存地址在我們每次啓動程序時都有明顯的不同,因爲它不會總是使用RAM中的同一個地方。
爲了解決這個問題,人們會試圖找到一個靜態指針到包含該值的內存地址;指針是如何靜態的,他們如何從RAM中保留一個靜態地址?
我一直在研究通過教程一兩個星期的C++遊戲黑客攻擊,而且我幾乎可以獲得這一切。 但是,有一件事一直在困擾着我。什麼是RAM中的靜態指針,它們如何存在?
要定製一個值(f.e.玩家的健康狀況),我們必須使用Cheat Engine(或類似的)搜索內存地址,並將值設置爲其他值。 這些內存地址在我們每次啓動程序時都有明顯的不同,因爲它不會總是使用RAM中的同一個地方。
爲了解決這個問題,人們會試圖找到一個靜態指針到包含該值的內存地址;指針是如何靜態的,他們如何從RAM中保留一個靜態地址?
實際上,它不是指向遊戲變量的靜態指針,而是指向變量地址的偏移量,指向另一個數據的地址。
如果你想「劈啪作響」的遊戲總是以相同的結構存儲數據,那麼可以找到這些偏移量。當你知道偏移量時,遊戲開始時你唯一需要做的就是找到偏移量所引用的地址,而不是執行多次掃描 - 每個變量一次。
編輯:
Additionaly,節目很可能你每次運行它們時給予相同的虛擬地址空間,所以在實踐中它看起來像靜態偏移變量每次有相同的地址你運行該程序(進一步閱讀here和there)。
是的,我刪除了'C++'標籤。但我還是不太明白;作弊引擎清楚地顯示一個綠色的靜態地址,即使我重新啓動我的電腦,它永遠不會改變... –
[Here](http://www.youtube.com/watch?v=N44nk9URoG8)'有點長的教程,我在談論... –
@MarkusMeskanen:程序**非常可能**在每次運行它們時在相同的地址加載,所以這是一個正確的觀察。進一步閱讀:[這裏](http://www.cplusplus.com/forum/unices/90767/)。 – podkova
使用相同的關鍵字。如果你聲明'static Player player',那麼'&player'可能總是相同的虛擬地址。 – 2013-07-24 20:19:06
關鍵點是*虛擬*地址(與*物理*地址相反,用戶程序幾乎從不關心)。 –
@ H2CO3:或者是一個全局變量,它也具有靜態存儲時間。 – rodrigo