# Game Hacking! 破解植物大戰殭屍 日期:2024/10/01 (二) 時間:19:00 ~ 21:00 地點:Discord 直播區 上課資源:https://365mail-my.sharepoint.com/:u:/g/personal/b123040054_o365_student_nsysu_edu_tw/EVBzoUBB4xFCir3yWntU-wIBcMdwzwTXS1upBECUb_P8EQ?e=Qsucfn ---- # 外掛定義 - ~~小黃遊增加好感度~~ - 不會對其他人造成影響 - 輔助資訊 - 會對他人造成影響 - ~~槍戰射地丄會射到對手壞壞~~ # Cheat Engine - 簡介 ![image](https://hackmd.io/_uploads/S19MtUFCR.png) 1. Cheat Engine可以針對其他process的記憶體數值進行更改 2. Cheat Engine可以針對其他process的程式進行修改,甚至作為debugg 3. dll injection(插入程式碼,~~壞透了~~) - 功能簡介 ![image](https://hackmd.io/_uploads/ByY89LtAR.png) - 第一次搜尋都用 first scan - undo scan 只能逆回去上一個,要再上上一個的話沒有辦法 <!--嗨 嗨,我不會逆向 那你乖乖共筆 嗨徐聖凱好醜 --> - 搜尋功能 ![image](https://hackmd.io/_uploads/BJKa5UFAC.png) # 程式碼 - Asm - 程式碼編譯後會有中間語言,就是組合語言,特質介於組合語言與機器語言之間 ![image](https://hackmd.io/_uploads/rkQFNvY0R.png) - 有了這些可以透過分析組合語言獲取遊戲過程 # LAB - 改陽光數值 - `Ctrl + E` - 更改植物數量 - 更改了植物數量可能是link list的len - ![image](https://hackmd.io/_uploads/ryFoAUYRC.png) - 更改陽光生成時間 - case 1 ![image](https://hackmd.io/_uploads/B1yq-DtRC.png) - case 2 ![image](https://hackmd.io/_uploads/Hk-3WwtR0.png) - 陽光收集器 - 陽光生成 - call sun_gen() - 撿陽光 - call sun_pick() - 確定撿陽光位置 - 首先檢陽光後應該有add - 所以應該是 ``` sun_pick(); sun_add(); ``` - 那這樣add的addres應該就會知道 # 好玩的東東 - interal - 內部的process影響 - 比較難抓 - eg. DLL injection - external - 其他process影響 ## Lab - 1:讓植物鎖血 - 方法 - 讓血量無限大 - 看一下 CE 裡面有什麼功能來實現此功能 - 讓血量無限大 - ![image](https://hackmd.io/_uploads/S1hxlPFR0.png) - New scan用unchange - Next scan用decrase - Scan Type : Decreased value - CE - Active 變成 X : 代表鎖住,不會讓數值做改變 - ![image](https://hackmd.io/_uploads/HyDxZPtCC.png) ## Lab - 2:修改卡片冷卻 - 像太陽冷卻就好 ## Cheat Engine 原理 - 透過 `OpenProcess` 拿到 `Process Handle` - `Process Handle` 很像是管理權限 - `ReadMemory` - `WriteMemory` <!--謝謝社長大正咩 不客氣--> ![image](https://hackmd.io/_uploads/H1Le5PYAR.png) ## - 重新打開遊戲,memory address 都會做改變 - 保護區:偵測特定位置是否有做更動 - 修改程式碼(Assembly Code):容易被發現 - 修改技能數值:不容易被發現 - Offset - base address + offset = 目的 address <!--我拿向日葵......你在歧視薯餅嗎--> ![image](https://hackmd.io/_uploads/SkQxIDtA0.png) <!-- 閒聊 嗨,明天放假 嗨 徐聖凱好醜 ............... 真假 水喔 -->