簡單也分享一下一路走來的心得
大概從大一開始接觸 C / C++ 後, 就想說來練練手
剛好當時跟著大家一起玩當時蠻有名的 Warcraft III (war3)
大概用了一年內的時間學會 x86 Assembly / Debugger / Inject & Hook 等知識
然後趁勢邊玩遊戲邊學習 Hacking 以及 Programming, 開發了不少 war3 相關的程式
例如當初都是用 Garena 平台在玩, 他們有不少阻擋開圖的系統與反作弊的方案
最後甚至通過 ring 0 的機制去偵測各種作弊, 不過通通都在熱情努力鑽研之下一一解掉
當時甚至因為破解 war3 而認識了一些同好, 參加了一些聚會等等
https://www.ptt.cc/bbs/WarCraft/M.1316537298.A.7D3.html
一切就從那時候開始, 一路走來憑著經驗的累積不停地嘗試 hacking 所有想玩的遊戲
例如之前火紅的天堂M, 從一開始到現在最大的轉變就是 Mobile 的比較多了
不過並不影響之前所學的各種相關技術, 一切原理都一樣
拿最近黑的一款台款手機遊戲來說好了, 底層就是 Unity 寫的, 通常他們最大的保護通常是 il2cpp 之類的方案
再搭配個 Anti-Cheat Toolkit (ACTk), 破解方式也很簡單
想辦法把 armeabi/***.so 拉到一些有名的工具如 ida pro 之類的去分析
搭配 symbol 把一些關鍵地方的 logic 該怎麼用 arm 的語法去 patch 都考慮好
最後再寫一個打 patch 的 app (搭配 root) 幫忙把 patch 過的 so 替換掉
這些步驟跟流程其實都是都跟以前 hack windows 上的遊戲沒太大差別, 只是換到手機上而已
而且手機上已經有不少方便的工具, 例如 frida
不過我想說的是, 這些技能其實對實際上的 99% IT / RD 工作都沒有太大幫助
頂多能當一個能支持你對程式繼續保持一點熱情的理由與興趣, 以及多一些思考問題的切入點
這技能幾乎是完全無法賺錢的, 我自己是有賺過, 大概半年內賺了約 50w (寫了一個外掛, 不停收月費), 不過那是極少數
要賺錢還是靠本業好好發揮才是王道, 你或許會羨慕部分已經掌握這些技術的同儕
但是這些說實在並沒有很難, 你只是缺一個門路或者切入點, 不過這種東西通常台灣比較少公開交流 (對岸就比較不同)
所以你常會發現對岸怎麼常常在破解東破解西的, 還一堆技術文章
※ 引述《ghchen (Seele-作弊型玩家)》之銘言:
: 順勢分享一下自己的*遊戲*心得
: 我去年主要在玩的是手機遊戲碧藍航線
: 但日子久了就想找點刺激的來玩
: 但是想修改,沒有一點了解是很浪費時間的
: 所以必須先知道這款遊戲是怎麼運作的
: 開發語言、環境架構之類的東西
: 盡可能的去挖掘
: 畢竟遊戲在客戶端執行,想辦法拆開來看
: 調查了一下近代許多手機遊戲
: 都有Unity3D的影子
: 順勢發現dnSpy這類.net反編譯工具
: 看了看卻沒找到遊戲邏輯或裝備數據之類的
: 又發現Unity的dll大概是不能熱更新的
: 所以猜測有用到其他框架來做遊戲邏輯
: 剛好包裡面有用到Lua的東西
: 就繼續朝這個方向下去挖掘
: 當然也會需要一些基本工具例如
: AssetBundleExtractor, lua-jit decompiler
: 剛好某個包裡面有整個遊戲的邏輯與數據
: 而且沒有加密,可以直接反編譯成Lua script
: 之後就開始瘋狂亂改,包回手機運行
: 像是修改裝備的攻擊力之類的都算小兒科
: 初期沒有分寸改的誇張了,被封了幾個號
: 之後就在危險的邊緣瘋狂試探
: 也過了一段歡樂的時光XD
: 可惜某天更新之後開始加密了
: 第一層是對asset bundle檔做加鹽
: 剛好dll裡面有提供想對應的方法來解
: 第二層是對 lua byte code 加密
: 這個就麻煩了點
: 為了找到解密點還要用到IDA去看
: 但是找到解密方法了,但卻又被加密
: 無法直接看到反編譯的c程式碼
: 後來是用真機運行然後下中斷點的方式
: 看到該段加解密的程式
: 接下來就照著裡面邏輯用自己熟係的語言實做
: 整個改包的流程也變得相當繁瑣
: 後來就比較不愛改包了
: 開始發展測試用的私服
: 為了了解遊戲內訊息的傳遞
: 找到他們用的是protobuf
: 搭配wireshark,整理出正式服的格式
: 再用自己會的語言開發mockup server
: 總結過程是滿有趣的,搜集線索
: 大膽假設自己的想法,小心求證
: 開心的看著自己開發出來的工具能夠運作
: 順便學習到一些平常不會用到的技能
: 也會認識一些志同道合的朋友
: 大概是這樣
: