# 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
- 簡介

1. Cheat Engine可以針對其他process的記憶體數值進行更改
2. Cheat Engine可以針對其他process的程式進行修改,甚至作為debugg
3. dll injection(插入程式碼,~~壞透了~~)
- 功能簡介

- 第一次搜尋都用 first scan
- undo scan 只能逆回去上一個,要再上上一個的話沒有辦法
<!--嗨 嗨,我不會逆向 那你乖乖共筆 嗨徐聖凱好醜 -->
- 搜尋功能

# 程式碼
- Asm
- 程式碼編譯後會有中間語言,就是組合語言,特質介於組合語言與機器語言之間

- 有了這些可以透過分析組合語言獲取遊戲過程
# LAB
- 改陽光數值
- `Ctrl + E`
- 更改植物數量
- 更改了植物數量可能是link list的len
- 
- 更改陽光生成時間
- case 1

- case 2

- 陽光收集器
- 陽光生成
- call sun_gen()
- 撿陽光
- call sun_pick()
- 確定撿陽光位置
- 首先檢陽光後應該有add
- 所以應該是
```
sun_pick();
sun_add();
```
- 那這樣add的addres應該就會知道
# 好玩的東東
- interal
- 內部的process影響
- 比較難抓
- eg. DLL injection
- external
- 其他process影響
## Lab - 1:讓植物鎖血
- 方法
- 讓血量無限大
- 看一下 CE 裡面有什麼功能來實現此功能
- 讓血量無限大
- 
- New scan用unchange
- Next scan用decrase
- Scan Type : Decreased value
- CE
- Active 變成 X : 代表鎖住,不會讓數值做改變
- 
## Lab - 2:修改卡片冷卻
- 像太陽冷卻就好
## Cheat Engine 原理
- 透過 `OpenProcess` 拿到 `Process Handle`
- `Process Handle` 很像是管理權限
- `ReadMemory`
- `WriteMemory`
<!--謝謝社長大正咩 不客氣-->

##
- 重新打開遊戲,memory address 都會做改變
- 保護區:偵測特定位置是否有做更動
- 修改程式碼(Assembly Code):容易被發現
- 修改技能數值:不容易被發現
- Offset
- base address + offset = 目的 address
<!--我拿向日葵......你在歧視薯餅嗎-->

<!--
閒聊
嗨,明天放假
嗨 徐聖凱好醜
...............
真假 水喔
-->