一.本文以植物大戰僵尸外掛的編寫為例,介紹單機游戲外掛的編寫和使用過程。
1.啟動單機游戲如:植物大戰僵尸如下圖
2.想明白我們寫外掛的目的:讓我們有充足的陽光數量來使用,即就是修改上圖左上角紅色標記的哪個值,目前是150,根據分析應該是個整型值,我們讓這個值一直為40000。
3.由于該程序運行已經被加載到內存,所以陽光數應該有個內存地址,只要我們找到這個地址就可以修改這個地址的值,使用工具為Cheat Engine
@1選擇進程為PlantsVsZombies.exe
@2輸入陽光數150進行第一次查詢,可以看出值為150的地址有很多
@3運行程序改變陽光數,進行第二次查詢,從圖中可以看出存儲陽光值的地址為0x146BBB50
4.既然找到了地址,我們就可以進行編寫程序了,使用VS2013,代碼如下
1 #include<stdlib.h> 2 #include<stdio.h> 3 4 /*聲明該函數可以導出dll模塊*/ 5 _declspec(dllexport) void change() 6 { 7 int *p = (int *)0x146BBB50;//將這個地址轉為int類型指針 8 while (1) 9 { 10 *p = 40000;//讓陽光數量一直為40000 11 } 12 }
5.將工程配置改為dll動態庫,然后進行編譯
6.使用dllinject工具將dll注入到植物大戰僵尸進程體內
7.查看外掛運行效果,可以看到陽光數量為40000,不會減少
8.上面就是一個單機游戲外掛,原理是通過地址修改變量值,你也可以用來對其他游戲或者其他類型變量進行操作,還有一種方法就是獲取函數地址,調用程序函數。
作者:lovejobs
原文:https://www.cnblogs.com/huipengbo/p/6887170.html