2009-02-28 54 views
3

我嘗試學習修改用C遊戲++而不是遊戲只是它的使用得到彈藥諸如此類的東西,以便能有人指出我的書內存修改C++

+0

有一個程序調用作弊-O-Matic的,這是否給你:) – Malfist 2009-02-28 20:08:11

+0

我相信這是不道德的,除非你自己寫遊戲。 – dirkgently 2009-02-28 20:08:26

回答

12

操縱遠程進程內存最方便的方法是在該程序的上下文中創建一個線程。這通常是通過將dll強制注入目標進程來完成的。一旦在目標應用程序中執行代碼,就可以自由使用標準內存例程。例如(memcpy,malloc,memset)。

我現在可以告訴你,最方便和最容易實現的方法是CreateRemoteThread/LoadLibrary技巧。

正如其他人所說的,簡單的黑客可以通過掃描內存已知的值來執行。但是如果您想要執行更高級的任何操作,則需要查看調試和死表分析。 (工具:分別爲ollydbg和IDA pro)。

你劃了非常廣闊的黑客題目的表面,有豐富的知識在那裏的..

一是一些網絡資源:

gamedeception.net - 獻給遊戲RE一個社區(逆向工程)和黑客攻擊。

http://www.edgeofnowhere.cc/viewtopic.php?p=2483118 - 一個關於各種DLL注入方法的優秀教程。

Openrce.org - 反向代碼工程社區。

我也可以推薦一本書給你 - http://www.exploitingonlinegames.com/

的Windows API例程你應該研究(msdn.com):

CreateRemoteThread 
LoadLibraryA 
VirtualAllocEx 
VirtualProtectEx 
WriteProcessMemory 
ReadProcessMemory 
CreateToolhelp32Snapshot 
Process32First 
Process32Next 
0

有足夠的程序的可用內存,讓你修改的記憶運行程序。他們經常被用作作弊。但請小心使用在線遊戲上的遊戲,因爲大多數作弊行爲都會被發現,而且您在沒有警告的情況下被禁止使用。

如果您想自己創建它們,只需查看描述Windows API的書籍即可。你會在那裏找到足夠的信息。

-1

它可以使用窗口掛鉤來訪問進程的內存空間。

4

注射編碼:

我認爲最好的方法是修改的exe將代碼注入的加載模塊中的一個。 Check this tutorial

短相關故事:

10多年前,雖然,我記得成功地與一個簡單的C++程序修改我的分數在紙牌的窗口。我通過在某個基地址處啓動一個int *指針並遍歷內存地址(用try/catch來捕獲異常)來做到這一點。

我會查找我當前的分數是在其中一個指針變量中,並用新的整數值替換它。我只是確保我目前的分數是一些晦澀的值,不會包含在許多內存地址中。

一旦我找到一組匹配我的分數的內存地址,我會在單人紙上手動更改分數,並只查看上次迭代中找到的內存地址。通常這會縮小到包含分數的單個內存地址。在這一點上,我有神奇的簡單的代碼* pCode = MY_DESIRED_SCORE;

儘管使用新的內存安全模型,這可能不再可行。但是這個方法在10-20行的C++程序中運行得非常好,只需要大約一分鐘就可以修改我的分數。