→ twn65w65: 先拆包~再看達成條件比較快~ 04/02 07:18
推 ClawRage: 查程式最完整啦04/02 07:27
→ ClawRage: 一個禮拜被摸透又不是大事04/02 07:28
→ a25785885: 翻程式碼04/02 07:32
推 Lex4193: 程式碼拆包其實也有看不出來的東西04/02 07:42
推 zxcmoney: 拆程式碼容易看出來通常是秘密,但特定操作方式就不容04/02 07:50
→ zxcmoney: 易看出來。04/02 07:50
→ zxcmoney: 錯字,秘密(X) 密碼(O)04/02 07:51
推 Lex4193: 程式碼要看是監控記憶體還是看原始碼,這裡面就有差別04/02 07:52
哇,想不到是雲端工程師
我先講程式碼好了,商業Game要拿到程式碼有兩種狀況:
1. 你要外洩
2. 是用腳本控制遊戲邏輯
所以,不是1你就是要作拆包,拆包從哪裡作?
先來作反組譯,你有錢一點也許可以用反編譯器(hex-rays一套2XXXUSD起跳),不過
大部分專家都還是習慣反組譯啦。
反組譯以後接著找api call,比方說windows的讀檔,阿遊戲不是windows平台上的
喔?看你有沒有平台的SDK資訊或從字串解讀,在那邊下斷點你才知道遊戲在哪裡
"讀取資料"。
讀取資料只是讀取資料,有遊戲會蠢到沒加密的嗎?(還真的有幾款)
開始看遊戲到底是哪個加密演算法跟找Key,最後才是拿到腳本,恭喜你
欸? 阿如果遊戲不是用腳本語言咧
那...你就慢慢看組語吧
至於監控記憶體,是傳統作弊修改器的作法,首先用遊戲數值過濾出符合的記憶體位
址,接著才是修改記憶體。但你只能透過這個看出資料的變動,對反組譯的人來說優
勢是可以透過資料變動下斷點,你才能從超大量的組語程式碼中找出遊戲邏輯
這種好找,是基於你確認過的機制,你就是你看到:
我發現當我買東西,我的錢包會被扣款,所以我鎖定我錢包記憶體的位址當他變動時
我中斷,看這段邏輯的進入點在哪
你根據你明白的邏輯去推敲組合語言片段,跟你讀一堆組合語言知道這片段在幹嘛,是
概念完全不同的事。
總之 資料是資料,控制流程的還是邏輯。
就算你的遊戲引擎是爛大街的unreal跟unity,好拆也頂多是美術資源好拆,拆出貼圖
跟模組來作羞羞的事情很常見。其他東西都cooked過了
老實講,業界有些工程師連讀明碼都有障礙了(可能是寫也可能是讀的人的問題)
遊戲邏輯被編譯器O2、O3過的東西,你一個禮拜就能摸透
那真ㄉ是神,沒話可說