Upgrade to Pro — share decks privately, control downloads, hide ads and more …

社課-HowToHackAGame_final.pdf

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest. →
Avatar for Fox Fox
July 25, 2026
6

 社課-HowToHackAGame_final.pdf

Avatar for Fox

Fox

July 25, 2026

Transcript

  1. $preface • Download Lab and Tools: • Cookie Clicker •

    Picaball.exe • Python, pip install pyautogui pynput pillow thinker pymem • CheatEngine • dnSpy
  2. $whoami • 陳柄佑 NyanFox(Fox) • 逢甲大學黑客社現任社長 • CTFer, study on

    Reverse Engineering and Malware Analysis • DC:nyanfox87 • 做社團評鑑做得要死不活的
  3. $Warning • 妨害電腦使用罪 (刑法 358-363) • 無故入侵電腦罪(第358條): 未經允許輸入他人帳號密碼、破解保護、利用漏洞進入他人 電腦或相關設備(如手機)。 •

    無故取得、刪除或變更電磁紀錄罪(第359條): 未經授權變動他人電腦內的資料(如:刪 除檔案、偷取遊戲寶物)致生損害。 • 無故干擾電腦罪(第360條): 使用程式等方式干擾他人電腦系統,致生損害(如:用電子 郵件灌爆信箱、發動DoS攻擊)。
  4. $PyAutoGui • 模擬人類的滑鼠移動、點擊和鍵盤輸入 (Python 版按鍵精靈) • 截圖 screenshot(‘myshot.png‘) • 移動到指定座標

    moveTo(x, y, duration) • 相對移動 movRel(xOffset, yOffset) • 點擊 click(x, y, button=‘left‘) • 拖曳鼠標 dragTo, dragRel(x, y) • 滾動滾輪 scroll(amount) • 按下按鍵 keyDown(‘shift‘) • 按住/放開按鍵 keyDown/keyUp(‘esc‘)
  5. $lab 1. 當你點擊太快(CPS 大於等於 10)時,餅乾會變成紅色,並開始倒數 5 秒的警 告時間。 2. 在這

    5 秒內,如果玩家發覺自己被警告了,只要在最後的 2 秒鐘內「完全忍住不 點擊」,警告一結束,餅乾就會自動變回原來的白色,當作什麼事都沒發生過! 3. 但反過來,如果玩家真的很皮,在倒數的最後 2 秒內竟然還有點擊餅乾,那 5 秒 一到它就會毫不留情地直接消失 10 秒鐘。
  6. $solve • 變色後會發現除了黑色的地方外,R 會在 100 以上,GB都會是 0 • • (以上條件不精確驗證,有錯跟我說:))

    Link: https://github.com/nyanfox87/G4meH4ck1ng/blob/main/pyautogui_script/lab- clickcookie2.py • (請各位 AI 工程師自行尋找效率最佳解)
  7. $solve • Prompt 請寫一個 Python 高速自動繪圖程式。要求執行後進入待命狀態並使用 pynput 監聽鍵盤,當 按下 s

    鍵時以當前鼠標位置為圓心,設定半徑為 200、圓形細分邊數為 400,並透過 threading 開啟異步線程繪製;過程中按下 q 鍵需立即中斷,按下 x 鍵則關閉程式。繪圖邏輯 需將 pyautogui 的 PAUSE 設為 0,先將鼠標移至起點,接著使用 math 三角函數計算座標, 並以 dragTo 函數搭配 0.01 秒持續時間進行拖曳,每點間隔延遲 0.05 秒,繪製完成後自動執 行一次 click 操作。 • Link: https://github.com/nyanfox87/G4meH4ck1ng/blob/main/pyautogui_script/labicing.py
  8. $Mono • Unity 在編譯遊戲時,先將 C# 轉成 CIL 存在檔案中 • 執行時才將

    CIL 轉成電腦可執行的機器碼 • JIT(Just in Time):在執行的時候才編譯
  9. $how to see logic • 打開 IDA > GameAssembly.dll •

    File/script file -> ida_with_struct_py3.py -> script.json -> il2cpp.h • 這樣就可以看到遊戲邏輯
  10. $ASLR • ASLR (Address Space Layout Randomization) • 簡單講:你看到的記憶體位置,並非真實記憶體位置 •

    每次開啟遊戲會隨機給你位置 • 每次遊戲 base address 都不一樣,但相對位置會一樣
  11. $find base addr • 假設金錢在兩次重開遊戲後掃描的記憶體位置分別為 0x6114 和 0x5114。 • 且

    base address 分別為 0x6000 和 0x5000,請問他距離 base address 多遠。 0x0114 0x6000 0x6114 0x0114 0x5000 0x5114
  12. $some asm • Cheat Engine 中的 Assembler 採 Intel Syntax

    • mov rax, 8:將 8 賦值給 rax • add rax, 1:將 rax 加上 1 • sub rax, 2:將 rax 減去 1 • inc rax:將 rax 遞增 1 • dec rax:將 rax 遞減 1 • [] 解引用,mov rax, [rcx] • rcx 中存 0x400,0x400 位置存 5,則將 5 賦值給 rax
  13. $find base addr • 3. 這裡可以看到那些指令修改了值 點進去 Find out what

    writes to this address 2. click 1. right click 4. 去找是誰又修改了他,一路套娃
  14. $code injection alloc(newmem,2048) label(returnhere) label(originalcode) label(exit) newmem: // 在這裡編寫你的新邏輯 //

    原本是 inc [esi+eax*4+3C],現在改為加 2 add dword ptr [esi+eax*4+3C], 2 jmp exitoriginalcode: // 將原本這行註釋掉或刪除,否則會執行兩次 // inc [esi+eax*4+3C] exit: jmp returnhere "picaball.exe"+3CAE: jmp newmem nop 2 // 因為 add 指令比 inc 長,CE 會自動處理剩餘空間 returnhere: