單機(jī)游戲:瘟疫公司 Plague Inc:Evolved
開發(fā)工具:VisualStudio 2017
其他工具:Cheat Engine 6.4
項(xiàng)目目標(biāo):
? ? ? ? 通過(guò)修改DNA點(diǎn)數(shù),讓瘟疫更快進(jìn)化,從而贏得游戲侦讨。
關(guān)鍵技術(shù):
1.找到代表“DNA點(diǎn)數(shù)”這個(gè)變量的內(nèi)存地址
? ? ? ? 使用工具Cheat Engine掃描到 DNA點(diǎn)數(shù)的內(nèi)存地址欺旧,具體怎么使用這里就不贅述了。
????????工具的大概原理是:比如游戲剛開始時(shí)祷愉,DNA點(diǎn)數(shù)是8芳誓,那么掃描一遍內(nèi)存值是8的所有地址堰怨,進(jìn)行保留侣签。過(guò)一段時(shí)間后增長(zhǎng)至10,那么從剛才保留的內(nèi)存地址列表急迂,掃描一遍當(dāng)前內(nèi)存值是10的地址影所。如此循環(huán),直到無(wú)法再過(guò)濾僚碎。
????????有時(shí)猴娩,過(guò)濾后只剩一個(gè)內(nèi)存地址,那么這個(gè)地址即是代表DNA點(diǎn)數(shù)的內(nèi)存勺阐。有時(shí)會(huì)剩2-4個(gè)或更多卷中,這時(shí)有可能是游戲UI或其他模塊定義了一套該模塊獨(dú)立使用的變量,同時(shí)使用訂閱者模式訂閱了該變量渊抽,這樣每次此變量發(fā)生變化時(shí)蟆豫,會(huì)通知其他模塊同時(shí)更新。這時(shí)可以依次修改這些內(nèi)存的值懒闷,并在游戲中操作十减,看下到底是哪個(gè)變量在起作用栈幸。
? ? ? ? 此時(shí),亦可直接通過(guò)CE來(lái)修改內(nèi)存數(shù)值帮辟。在掃描時(shí)速址,讀取內(nèi)存數(shù)值,亦可通過(guò)編程來(lái)實(shí)現(xiàn)由驹。
2.編程修改內(nèi)存
? ? ? ? 1)獲取游戲窗口句柄
????????????HWND hwnd_Game = FindWindow(NULL, L"Plague Inc: Evolved");
? ? ? ? 2)獲取游戲進(jìn)程ID
? ??????????DWORD ProcessID;
????????????GetWindowThreadProcessId(hwnd_Game, &ProcessID);
? ? ? ? 3)獲取游戲進(jìn)程
? ??????????HANDLE h_process = OpenProcess(PROCESS_ALL_ACCESS, false, ProcessID);
? ? ? ? 4)修改內(nèi)存
? ??????????int ret = WriteProcessMemory(h_process, (LPVOID)0x4F2E000C, &num, 4, NULL);
? ? ? ? ? ? 當(dāng)ret為0時(shí)芍锚,修改失敗,為1時(shí)蔓榄,修改成功并炮。
????至此,項(xiàng)目目標(biāo)已實(shí)現(xiàn)润樱。為了更方便的游戲渣触,可以寫一個(gè)循環(huán),把DNA點(diǎn)數(shù)鎖定在200壹若,類似打怪游戲的鎖血嗅钻。
????完整代碼如下: