製作遊戲修改器 - 植物大戰殭屍陽光修改

2021-02-16 吾愛破解論壇

製作遊戲修改器

加入52破解也有一段時間了, 今天給大家帶了一個教程. 第一是為了分享, 第二為了記錄下來, 在將來不會忘記怎麼去做.

本次教程從最基礎的內容開始, 講述如何去製作一個遊戲修改器的全部過程, 從分析內存數據開始到破解器的開發等出發做起.

0x00:

注:

VC等IDE也可以.

相關文件會在後面添加下載連結

0x01:

使用CE查詢分析遊戲內存數據

首先打開遊戲, 開始遊戲, 然後暫停遊戲.


這時候使用CE打開PlantsVsZombies.exe進程 

在CE中輸入當前陽光值的大小, 默認一開始是50, 點擊首次查詢 
會出現很多地址, 別擔心, 我們進一步繼續挖掘. 

再回到遊戲裡面, 等待收集一個陽光值. 

再到CE中輸入75點擊再次掃描, 現在的結果比較好了, 只有一個值了. 

雙擊這個地址, 添加到地址列表裡面, 驗證找的對不對, 可以修改這個地址的值, 
在遊戲中查看陽光值是否發生變化, 在這裡我就不再演示了. 

這個地址上面右擊選擇, 找出是什麼改寫了了這個地址 
 

回到遊戲中去種一顆植物, 會在列表中找到一個操作. 
 


點擊詳細信息 
 

可以看到一些彙編代碼, 和寄存器的值. 我們先記錄下來

其中有一個mov指令, 這個是寫入內存值的操作, 偏移是0x5578, 那麼其實它寫入的地址為EDI+0x5578 
這個我看一下EDI寄存器的值是: 0x20C8DCA8

我們再次回到CE中勾選hex, 輸入EDI寄存器的值, 點擊新的掃描 
這次找到的東西也不少, 也是比較麻煩的, 只能根據經驗和多次嘗試了. 
這裡有一個小技巧, 首先去找那些和別的地址不太一樣的地址, 比如我在這裡就比較輕鬆的找到了. 

好了, 到了這一步, 我們點擊手動添加地址, 勾選指針, 輸入我們找的那個地址和上面的偏移值. 
 
如果是這樣的, 說明我們找的沒錯 
 

下一步, 我們在第二個指針上面右擊, 這次選擇找出是什麼訪問了這個地址 
 

選擇第一個, 切換到遊戲裡面 
 

很快在列表裡面出現好多訪問



我們選擇其中任意一個地址, 看一下詳細信息, 找到可能值為ESI寄存器的值, 我們去查詢一下, 出現我們想要的結果了 
圖中我們看到了地址為綠色的, 第一個綠色的地址就是我們要找的地址.  
我們再次記錄一下這個 
我們找到的地址是: 0x7794F8 偏移: 0x868

下一步, 手動添加地址 
勾選指針, 輸入我們找到的地址: 0x7794F8, 偏移0x868 
再點擊添加指針, 輸入偏移0x5578, OK. 
 

最後的結果, 可以在第三個地址修改值, 看看遊戲中的陽光值變化. 

第一步完成了, 找到了我們最終要使用的地址和偏移值.

0x02:

修改器的開發, 我們這裡使用C語言

首先了解一下做修改器的關鍵API:

BOOL ReadProcessMemory(

HANDLE hProcess,

PVOID pvAddressRemote,

PVOIDpvBufferLocal,

DWORD dwSize,

PDWORDpdwNumBytesRead

);

參數:

hProcess                [in]遠程進程句柄, 被讀取者

pvAddressRemote         [in]遠程進程中內存地址, 從具體何處讀取

pvBufferLocal           [out]本地進程中內存地址, 函數將讀取的內容寫入此處

dwSize                  [in]要傳送的字節數, 要寫入多少

pdwNumBytesRead         [out]實際傳送的字節數, 函數返回時報告實際寫入多少

BOOL WriteProcessMemory(

HANDLE hProcess,

LPVOID lpBaseAddress,

LPVOID lpBuffer,

DWORD nSize,

LPDWORD lpNumberOfBytesWritten

);

參數:

hProcess            [in]遠程進程句柄, 被讀取者

lpBaseAddress       [in]要寫的內存首地址, 再寫入之前, 此函數將先檢查目標地址是否可用, 並能容納待寫入的數據.

lpBuffer            [in]指向要寫的數據的指針.

nSize               [in]要寫入的字節數.

返回值

非零值代表成功.

0x03:原理

修改器的基本原理就是讀取遊戲線程的內存數據, 根據我們之前找到的計算方式, 在最後得到地址寫入陽光值.

關鍵代碼實現

    DWORD d1, d2;

    // 得到0x7794f8地址的內存值, 其值保存到d1, d2為真實讀到數據的大小, 這裡如果不為4則讀取錯誤

    ReadProcessMemory(hProc, (void *)0x7794f8, &d1, 4, &d2);

    printf("0x%X 0x%X\n", d1, d2);

    // 得到上面地址+0x868的內存值

    ReadProcessMemory(hProc, (void *)(d1+0x868), &d1, 4, &d2);

    printf("0x%X 0x%X\n", d1, d2);

    // 要寫入陽光值的地址

    ads_ps = d1+0x5578;

    // 得到上面地址+0x5578的內存值

    ReadProcessMemory(hProc, (void *)(d1+0x5578), &d1, 4, &d2);

    // 輸出當前陽光值的大小

    printf("%d 0x%X\n", d1, d2);

    printf("ads_ps: 0x%X\n", ads_ps);

    // 在我計算出來的地址裡面寫入陽光值的大小

    WriteProcessMemory(hProc,(void *)ads_ps, &value, 4, NULL);    //寫內存

0x04:

最後來一個效果圖, 希望這個教程會幫助大家學習


0x05:

下載地址: 
PlantsVsZombies: http://pan.baidu.com/s/1kVDck5L 密碼: 7ooj 
修改器源碼: http://pan.baidu.com/s/1c1HJRu4 密碼: wa2n

解壓密碼: 52pojie


--官方論壇

www.52pojie.cn

--推薦給朋友

公眾微信號:吾愛破解論壇

或搜微信號:pojie_52

相關焦點

  • 植物大戰殭屍1原版下載 附修改器 [別讓殭屍吃掉了你的腦子]
    ,今天小編為大家帶來的就是其中之一的植物大戰殭屍原版,這是一款經典有趣的策略塔防遊戲,也是《植物大戰殭屍》最初的版本,玩家在此將會合理的利用那些植物擊敗進攻的殭屍。同時,遊戲內擁有五種不同的遊戲模式,分別為冒險、迷你、益智、生存、花園,每個模式都有對應的不同種類的殭屍,玩家必須根據殭屍的種類和屬性,種植針對性的植物有效消滅殭屍,遊戲中琳琅滿目的殭屍和植物極大增加了遊戲的可玩性,多達50個的冒險模式關卡設定,從白天到夜晚,從房頂到遊泳池,場景變化多樣,滿足了用戶多樣性玩法。
  • 【原創】植物大戰殭屍修改器DIY(二)CD詳解
    這個植物大戰殭屍系列呢,目前暫定想法就是3-4集的樣子。主要就是針對於各種不同的功能,進行一個思路的引導和分析。最後一集的時候,會介紹如果使用易語言和AA引擎,將他直接製作成一個真正的修改器,盡情期待。PS:我講的是思路,植物大戰殭屍,只是一個例子,大家可以把思路拓展到別的方面去,注重思維靈活。
  • 植物大戰殭屍·年度加強版 附帶無限陽光修改器+內置全解鎖存檔+明日方舟立繪UI替換MOD
    版本介紹:1.2.0.1073年度加強版|容量200MB|官方簡體中文|支持鍵盤.滑鼠|贈無限陽光修改器|內置全解鎖存檔|贈明日方舟立繪UI替換MOD注意事項:遇到Fatal Error報錯的,進遊戲時連點滑鼠左鍵,輸入法設置為英文美式鍵盤遊戲簡介:     《植物大戰殭屍年度版》除了加入迪斯科殭屍之外,新增了20個成就,還加入了全新的「殭屍大頭貼」模式,玩家可以在遊戲中自己創建一個殭屍形象
  • 【原創】植物大戰殭屍修改器DIY(終)易語言製作修改器
    本期我將為大家介紹如何使用易語言調用AA引擎來實現自己的修改器的方法。其實大家也不用太糾結語言,只要能調用dll的語言,都一樣,因為畢竟是通過引擎嘛。另外有些兄弟可能擔心,教程會不會助長外掛開發。其實任何東西都是雙面的,當然,學習如何去修改彙編,在某種程度上可以開發一些壞的東西。但是你能了解得更多,你就能研究更多對抗他的東西,醫學院研究病毒不也是這個意思。
  • 植物大戰殭屍:沒陽光、沒殭屍、沒植物,到現在也沒人通關!
    說到外掛都會讓人痛恨,影響了整個遊戲平衡,但也有一些遊戲的外掛得到的支持,比如植物大戰殭屍可以讓玩家玩得更爽,可以開創一種全新的玩法
  • 植物大戰殭屍2晃遊修改大師修改金幣教程
    今天17huang小編依然給大家帶來晃遊修改大師的修改攻略,本次為大家帶來的遊戲是超火爆遊戲植物大戰殭屍的系列第二作
  • 益智策略類單機遊戲《植物大戰殭屍》
    《植物大戰殭屍》是由PopCap Games(寶開遊戲)開發的一款益智策略類單機遊戲,於2009年5月5日發售。玩家通過武裝多種植物切換不同的功能,快速有效地把殭屍阻擋在入侵的道路上。不同的敵人,不同的玩法構成五種不同的遊戲模式,加之黑夜、濃霧以及泳池之類的障礙增加了遊戲挑戰性。該作在PC上同時有普通版、年度版、和無盡版。
  • 植物大戰殭屍電腦版本「大多數都在這裡了」
    (這兩個版本有5個無盡模式,別的版本都是只有一個泳池無盡模式)年度加強版 https://www.lanzous.com/i9wi97a無盡版 https://www.lanzous.com/i9wiuba漢化原版這個就是最老的植物大戰殭屍遊戲版本,想玩最老的版本可以下載這個。
  • 死亡打字員 完殺修改器下載 多功能修改器
    名稱:死亡打字員 完殺 多功能修改器   運行環境:WinXP,WinVista,Win7     修改器說明
  • 植物大戰殭屍1代那些爆難的改版,沒開過掛的都是大神
    植物大戰殭屍1是一款不錯的遊戲,但是也很少有人會日復一日地去追求同一款遊戲,所以植物大戰殭屍1的各種改版就成為了玩家們的選擇,今天小編就帶大家來盤點一下植物大戰殭屍1那些爆難的改版。95版加強後的旗子殭屍擁有更強的防禦這個並不是指在95年出的遊戲,而是指在原版的基礎上修改過95次的版本,殭屍得到了極大的加強,也讓很多玩家1大關的時候就要丟車,植物方面的加強遠遠不夠殭屍方面
  • 植物大戰殭屍年度加強版
    《植物大戰殭屍》是由PopCap Games開發的一款益智策略類單機遊戲,於2009年5月5日發售。
  • 殭屍世界大戰破解版+等級武器存檔 修改器+六項修改器
    《殭屍世界大戰(World War Z)》是一部剛剛發售的打殭屍遊戲,由Saber Interactive打造。
  • 【遊戲推薦】植物大戰殭屍2(雙版)-2.6.6
    《植物大戰殭屍2》是《植物大戰殭屍》的全新續作,於2013年夏季發布。
  • 【Android遊戲】《植物大戰殭屍2》國際版V8.2.2漢化內購版
    今天給大家分享的是《植物大戰殭屍2》V8.2.2漢化內購版後臺回復「ZWDZJS」
  • 電腦遊戲+修改器(10)
    注意:並不是所有遊戲都能玩,有的被網盤誤刪,有的遊戲不兼容系統,自己斟查!!!
  • ​植物大戰殭屍中暗藏的24個細節,超9成玩家不知道!
    植物大戰殭屍,可能現在00後都沒聽說過,要知道曾經他可是風靡一時的燒腦遊戲,是無數80後90後的記憶,雖說現在已經過氣了,不過你一定沒有發現當時玩了那麼久的植物大戰殭屍
  • 【原創】植物大戰殭屍(四)超級攻擊
    講了很多體外話,來講下這個系列的計劃吧,本來是準備這一篇就直接做修改器了。但是突然覺得,好像CE裡面還有一個數據的觀察可以講,可能也對新手朋友有一些思路上的幫助,同時再給AA腳本來一次補課,於是延長一期。下期就是最後一篇了,會講到通過易語言和AA引擎怎麼來製作一個自己的修改器,當然內容好像不少,可能也會有上下集,但是會儘量比較近的時間發出來,謝謝大家。
  • 植物大戰殭屍1廢稿大揭秘,有些你可能都沒聽說過
    隨著計算機的普及,遊戲的種類也越來越豐富,想必大家2010年左右應該都玩過植物大戰殭屍,但是,植物大戰殭屍的版本中也有許多的廢稿(有些在內測版本中出現過),今天小編就帶大家來揭秘一下植物大戰殭屍1中的廢稿。
  • 《植物大戰殭屍3》要上了?最重要的向日葵沒了?
    《植物大戰殭屍》系列新作《植物大戰殭屍3》(以下簡稱《PvZ 3》)已經悄無聲息地在部分國家和地區上線啦~
  • 植物大戰殭屍電腦版
    (這兩個版本有5個無盡模式,別的版本都是只有一個泳池無盡模式)年度加強版  https://pan.baidu.com/s/1eW_LMlhPVbdpmpHhxPtCGg 提取碼: scji無盡版         https://jingge.lanzous.com/i9wiuba漢化原版這個就是最老的植物大戰殭屍遊戲版本,想玩最老的版本可以下載這個