# 遊戲分析入門 --- ### 廣告時間 ---- ### 國雲網路 我們很多機器都是透過他們的vps架設的 ![image](https://ncse.tw/assets/img/logo.png) ---- ### 七維思資安 社團dc裡面那位熱心的飛飛老師的資安教育公司 ![image](https://image-cdn-flare.qdm.cloud/q6e57c8785320c/image/data/2024/01/18/c29a7baf9e8a9b2f3b24223107db9e48.png) --- ### 免責聲明 :::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 ``` ---- 正常畫面 ![image](https://hackmd.io/_uploads/HyYG802XA.png) --- ### lab 架設 ---- 環境:linux ---- 下載`libsfml-dev` ```bash sudo apt-get install libsfml-dev ``` ---- 依照剛剛的結果選擇下載 2.5 or 2.6 ![image](https://hackmd.io/_uploads/HyFcz03Q0.png =40%x) (複製檔案連結後用 `wget url -O snake.zip`的指令) (如果兩個都下載過還是不行再告訴我) ---- 解壓縮 ```bash unzip snake.zip cd bin ``` ---- 開啟遊戲 ```bash ./main ``` ![image](https://hackmd.io/_uploads/Hy2vLA2Q0.png =50%x) (按叉叉後,crtl+c可以停止它) --- ### 招數 1. 檔案抽換 ---- 嘗試把開機logo換成其他圖片ㄅ ---- 簡單觀察,檔案就放在`gfx`的資料夾: ![image](https://hackmd.io/_uploads/HkioDC3Q0.png) 隨便換掉就好w --- ### 招數 2. 修改引擎 ---- step 1. 點左上角,搜尋 ![image](https://hackmd.io/_uploads/S1GBYC3QA.png =50%x) 選擇以後戳下面 Open ---- step 2. ![image](https://hackmd.io/_uploads/B1l-cRhQA.png =50%x) 第一次搜尋點 First Scan,選擇Scan Type (這邊是找分數所以是精確值) ---- step 3. 第二次搜尋後請都用 Next Scan描述 ![image](https://hackmd.io/_uploads/SkAP50370.png =50%x) ---- step 4. 在確定變數是誰後點兩下,出現在下方 對下方的變數按右鍵選擇Edit就能改值 ![image](https://hackmd.io/_uploads/Hk6TcR2QR.png =50%x) 這邊分數改成100000000應該就夠大了(?) ---- 如果有其他需要或者要重來就調整Scan Type的選項就好 像是變大,變小,不變之類的 然後變數型態如果不確定,一開始可以使用 Any選項 重複 step 1. ~ step 4.就能改ㄌ > < --- ### 招數 3. patch file ---- 不會分析,找不到檔案怎麼辦? # 改 ---- 工具:IDA 記得在linux虛擬主機裝喔~ ---- 前面 IDA 搜索的部分跟之前REVERSE課一樣 但是這次要慢慢找 = = ---- 翻找結果 ![image](https://hackmd.io/_uploads/rkw4RR3mA.png) 勝利條件:大於 1337120 把它改掉?! ---- 切去 IDA VIEW,再點兩次那個function 按右鍵切去 text view ---- 技巧:可以推測在程式流程結尾 ![image](https://hackmd.io/_uploads/S1N3ykamA.png) 橘色:cmp(判斷),紅色(呼叫) ---- 點一下 cmp 那行程式碼 左上角 Edit -> Patch Program 選 Assemble ![image](https://hackmd.io/_uploads/Skkexyam0.png) 改成 cmp eax, 3 判定就變成3分ㄌ ---- 再次去Patch program的部分 選擇patched bytes可以看改過哪些東西 Apply patches to output file可以輸出改過執行檔 ![image](https://hackmd.io/_uploads/r1HHlJam0.png) 如果要備份就勾選 Create Backup ---- 最後,~~flag就自己噴出來了~~ --- ### 招數 4. 脫殼 ---- 所謂的殼,就是為了保護執行檔不被逆向/壓縮執行檔大小而對執行檔加的措施 ---- 用途: - 一般軟體:防止被逆/破解 - 病毒:防止被偵測 ---- OEP:程式載入點 IAT:導入地址表 一般修復過程為:重新定位原始 OEP -> 把資料炸出來 -> 修復IAT表(ESP定律) ---- LAB ![image](https://hackmd.io/_uploads/rJdyTyAQ0.png) ---- 觀察: 丟進IDA之後出來的並不是常見的段落(data, bss) 而是load ![image](https://hackmd.io/_uploads/S1nW01AmA.png) ---- 簡單觀察: ``` strings shell-clicker | less ``` 發現關鍵字UPX ![image](https://hackmd.io/_uploads/S1y3Jl07R.png) ---- 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}]"}
    462 views