游戏修改器DIY(一)
每次玩都用《游俠》修改豈不是很不爽?!那就讓我們一起來做個游戲修改器吧!
我們的目標是——
《潛艇大戰》(版本:1.0)
所需工具——
《金山游俠III》(玩家們都應該知道吧?版本:III)、
SOFTICE(一款強大的程序調試工具,版本:4.0.5 Build334+IceDump)、
Microsoft Visual C++ (編程利器!版本:6.0+SP5)
預備知識——
游戲修改器的原理很簡單,就是修改內存中數據。那么就要用到下面這個API函數:WriteProcessMemory,其函數原型為:
BOOL WriteProcessMemory(
HANDLE hProcess, // handle to process whose memory is written to
LPVOID lpBaseAddress, // address to start writing to
LPVOID lpBuffer, // pointer to buffer to write data to
DWORD nSize, // number of bytes to write
LPDWORD lpNumberOfBytesWritten // actual number of bytes written
);
有了這個API函數我們就可以修改內存中的數據了,讓我們一步一步來,把這個游戲做成一個不死版的游戲——
第一部分:獲得游戲中關鍵的數據——這是制作游戲修改器的前提。
首先運行《潛艇大戰》,在游戲開始后你只有5次機會,《金山游俠》的使用方法我就不在贅述了,很簡單,相信眾玩家都會使用。通過一系列的操作并測試后,發現用于存放生命的內存地址在:“0x007B0BE8”。OK!讓我們調出SOFTICE,輸入下面的命令(其作用是:在對內存“0x007B0BE8”處有寫操作時中斷程序):
bpm 007B0BE8 w
回車返回游戲后故意使潛艇中彈使生命數減1,這時SOFTICE會自動跳出并停留在:
0167:00405686 3BCD CMP ECX,EBP(圖一)
| 往上看,大家看到了什么?對,是 |
0167:0040567D 90 NOP
也就是——即使潛艇中彈了也不會減少生命數!
?
第二部分:用VC制作游戲修改器。
我們要制作的這個游戲修改器很簡單,不需要MFC,SDK即可完全搞定!
啟動VC,依次——[File]-[New]-[Projects]-[Win32 Application]-[輸入-Project name]后[OK],選擇[An empty project]-[OK]。然后[File]-[New]-[Files]-[選擇-C++Source File],起名后[OK]。輸入以下代碼——
//
/*
--《潛艇大戰》v1.0 修改器--
作者:趙春生
制作時間:17:18 04-1-15
主頁:HTTP://TIMW.YEAH.NET
*/
#include<windows.h>
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
//OBJIP
unsigned int OBJ_ip=0x0040567D;//修改潛艇生命數代碼的偏移地址
unsigned int OBJ_patch[1]={0x89CA8B90};//其中的90則是NOP的十六進制
HWND hwndOBJ=FindWindow(NULL,"潛艇大戰");//獲得游戲的窗口句柄
DWORD PID;
HANDLE hProcess;
if (hwndOBJ!=0)
{
SetForegroundWindow(hwndOBJ);//找到句柄后將游戲設置為當前窗口
GetWindowThreadProcessId(hwndOBJ,&PID);//得到游戲的進程ID
hProcess=OpenProcess(PROCESS_ALL_ACCESS,false,PID);//打開游戲進程
WriteProcessMemory(hProcess,(void *)OBJ_ip,OBJ_patch,1,0);//寫入修改后的代碼
CloseHandle(hwndOBJ);
CloseHandle(hProcess);
}
else
MessageBox(NULL,"游戲還沒有啟動吧?","錯誤!",NULL);
return 0;
}
//
編譯后運行程序,看看效果吧?!怎么樣?游戲成為不死版了吧?
在這里我只是給大家介紹了制作游戲修改器的一種思路,本程序還可以做得更加完美,例如:直接使用游戲修改器來加載游戲進行修改,而不是像現在這樣:要先運行游戲后才能使用游戲修改器;再有,游戲還有一處修改潛艇生命數的地方,這處在:“0167:00404BEE”,大家有興趣的話可以自己嘗試……歡迎大家和我一起進行交流!附件為本游戲的修改器及其源碼。
?
總結
以上是生活随笔為你收集整理的游戏修改器DIY(一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 利用python处理dna序列_详解基于
- 下一篇: Typora 使用技巧2 -- 强制换行