# 遊戲分析入門
---
### 廣告時間
----
### 國雲網路
我們很多機器都是透過他們的vps架設的

----
### 七維思資安
社團dc裡面那位熱心的飛飛老師的資安教育公司

---
### 免責聲明
:::info
自本社團活動中所學習的工具、弱點、攻擊手法等僅供資安知識的學習,若在課程後想做相關練習,請在合法的CTF平台上進行測試。
如對外有相關攻擊行為,皆與授課講師以及實驗中學資訊研究社無關。
:::
不要去犯法喔><
---
### 修改工具
----
Windows:[Cheat Engine(link)](https://www.cheatengine.org/)
Linux:[PINCE(link)](https://alternativeto.net/software/pince/about/)
~~盡管PINCE一直聲明他們不是 CE,但功能和用法一模一樣~~
---
### 下載教學
----
Cheat Engine:點開剛剛的 [link](https://www.cheatengine.org/) download
(網路上很多教學><)
----
PINCE:
```bash
# 下載
git clone --recursive https://github.com/korcankaraokcu/PINCE
sh PINCE/install.sh
# 開啟
cd PINCE
./PINCE.sh
```
----
正常畫面

---
### lab 架設
----
環境:linux
----
下載`libsfml-dev`
```bash
sudo apt-get install libsfml-dev
```
----
依照剛剛的結果選擇下載 2.5 or 2.6

(複製檔案連結後用 `wget url -O snake.zip`的指令)
(如果兩個都下載過還是不行再告訴我)
----
解壓縮
```bash
unzip snake.zip
cd bin
```
----
開啟遊戲
```bash
./main
```

(按叉叉後,crtl+c可以停止它)
---
### 招數 1.
檔案抽換
----
嘗試把開機logo換成其他圖片ㄅ
----
簡單觀察,檔案就放在`gfx`的資料夾:

隨便換掉就好w
---
### 招數 2.
修改引擎
----
step 1.
點左上角,搜尋

選擇以後戳下面 Open
----
step 2.

第一次搜尋點 First Scan,選擇Scan Type
(這邊是找分數所以是精確值)
----
step 3.
第二次搜尋後請都用 Next Scan描述

----
step 4.
在確定變數是誰後點兩下,出現在下方
對下方的變數按右鍵選擇Edit就能改值

這邊分數改成100000000應該就夠大了(?)
----
如果有其他需要或者要重來就調整Scan Type的選項就好
像是變大,變小,不變之類的
然後變數型態如果不確定,一開始可以使用 Any選項
重複 step 1. ~ step 4.就能改ㄌ > <
---
### 招數 3.
patch file
----
不會分析,找不到檔案怎麼辦?
# 改
----
工具:IDA
記得在linux虛擬主機裝喔~
----
前面 IDA 搜索的部分跟之前REVERSE課一樣
但是這次要慢慢找 = =
----
翻找結果

勝利條件:大於 1337120
把它改掉?!
----
切去 IDA VIEW,再點兩次那個function
按右鍵切去 text view
----
技巧:可以推測在程式流程結尾

橘色:cmp(判斷),紅色(呼叫)
----
點一下 cmp 那行程式碼
左上角 Edit -> Patch Program
選 Assemble

改成 cmp eax, 3
判定就變成3分ㄌ
----
再次去Patch program的部分
選擇patched bytes可以看改過哪些東西
Apply patches to output file可以輸出改過執行檔

如果要備份就勾選 Create Backup
----
最後,~~flag就自己噴出來了~~
---
### 招數 4.
脫殼
----
所謂的殼,就是為了保護執行檔不被逆向/壓縮執行檔大小而對執行檔加的措施
----
用途:
- 一般軟體:防止被逆/破解
- 病毒:防止被偵測
----
OEP:程式載入點
IAT:導入地址表
一般修復過程為:重新定位原始 OEP -> 把資料炸出來 -> 修復IAT表(ESP定律)
----
LAB

----
觀察:
丟進IDA之後出來的並不是常見的段落(data, bss)
而是load

----
簡單觀察:
```
strings shell-clicker | less
```
發現關鍵字UPX

----
UPX是一個開源的殼
(只要是開源的殼幾乎都有完善的脫殼措施)
----
下載 UPX
```bash
sudo apt install upx
```
脫殼
```bash
upx -d shell-clicker
```
----
脫殼完就有一個正常的檔案逆啦~
想學更深入的脫殼術可以多google找找看資料
(像是 ESP 定律就是常見技巧)
{"title":"遊戲分析入門","contributors":"[{\"id\":\"4aa04276-c8ec-490d-a620-ec3b4e8e3d7c\",\"add\":3434,\"del\":31}]"}