記某單機遊戲的一次內購破解
本文作者:à ō é
摘要
最近在研究Android逆向,內購破解這一塊,發現挺有味道的,當然只限做技術研究。 下面通過對某單機遊戲的內購破解,詳細介紹一下內購的方法和原理以及防護等。
材料準備
1)APP下載,本次演示的軟件:登山賽車至天朝歷險
我們去其官網下載即可,另外在其他市場下載一個低版本的,
這裏我另外下載了一個 v1.3.1的,後面會有用。
http://www.mygamez.cn/col.jsp?id=105
2)至於工具,一個Android Killer加個 夜神模擬器 就可以了
3)放Android Killer 一看,可正常回編,這樣也省了不少事
內購破解
01. 內購流程
內購即應用中付費購買道具或其他東西。其加入了第三方SDK(支付SDK)。
支付SDK提供商(如移動、聯通、支付寶等)先開發一個支付SDK,
並進行加固等保護,再為開發者提供支付接口的使用指南,
開發者在APP中添加了支付SDK後,通過相關配置使用SDK即可完成收費功能。
而從國內安卓的單機應用來看,其內購流程可簡括為:APP–支付SDK–支付SDK服務器–APP。
Google Play內購流程較國內安卓的會更復雜一點
在國內主流的內購SDK開發主要分為兩類,
即短信運營商類(三大運營商)和第三方支付平臺類(微信、支付寶等)
02. 搜索關鍵字符
內購的關鍵函數
paysuccess onsuccess buysuccess threadSuccess orderBombsuccess payonbilling dobilling PayResult onBillingFinish BillingResult inresult paycallback resultStatus 9000 0×2328
從字面上就可知道,都是判斷支付結果用的(其中0×2328是9000的十六進制)
02×01
直接搜索購買失敗的Toast
1). 安裝遊戲後購買金幣,隨便填個,讓它彈出購買失敗的錯誤提示
2). 搜索關鍵字符 “短信驗證碼驗證失敗” 另,轉Unicode碼也沒搜到
3). 試著搜索它的變量名 “gc_security_sms_err”
4). 果然,版本更新了,但 名稱還是沒變的,再試著搜索它的ID “0x7f0700a1”
5). 但至此並沒搜索到其關鍵的判斷語句,So,另找它法
02×02 搜索支付的API關鍵接口
1> 看一下支付的方式,還有微信和支付寶,不過我們這裏就看短信支付(好友代付)吧
2> 從輸入的手機號的錯誤提示可知是移動的接口,我們將其拉入 Android Killer後
搜索移動支付 API 的關鍵字 “BillingResult”(前面已介紹第三方SDK的相關資料)
3> 另,看AndroidMainfest.xml文件發現應用原入口被改
4> 我們來看原入口下的類(有需要可以看反編譯後的JAVA代碼),這裏我們直接看Smali語句
5> 跳到:pswitch_data_0處,顯然這是某API的返回代碼,先另外看看 :pswitch_1 分支
6> 由 :pswitch_1的分支可斷定,:pswitch_1與購買失敗有關,相反 :pswitch_0 則與購買成功有關
7> 我們可讓其判斷總為成功,便可達到內購破解的目的,改的方法有很多,
這裏我們利用goto 指令就可簡單實現,目標就是讓其跳轉到成功購買
匯編中的跳轉指令
1, goto :goto_0 偏移量goto_0不能為0,通過短偏移量無條件跳轉到目標;
2, If語句;
3, switch
packed-switch v0, :pswitch_data_0 v0是switch需要判斷的值;
:pswitch_data_0 偏移表,表中值是有規律遞增的;
sparse-switch v0, :pswitch_data_0 偏移表中值是無規律的。
8> 最後,來看看我們修改的結果吧
02×03 修改遊戲內存
這個就不多說了,直接上工具
a. root手機,安裝目標APP和內存修改器(這裏使用了八門神器)
b. 先啟動八門神器(類似的像葫蘆俠,幸運破解器,燒餅修改器等)
c. 進入應用,開始飆車,後拿出八門神器,對金幣值進行搜索
d. 因數值較多,可繼續搜索,進一步確定金幣的內存數據
e. 可以看到,只有一條數據發生變化,直接修改,這裏改為 12345678
f. 修改成功,同時也說明此遊戲沒有防護
g. 至此,可退出八門神器,繼續飆車,秋名山等著你
02×04 其他方法
其他方法如,進程註入,Hook,修改初始數據(找到本地的相關文件直接修改)等,
反正就是改,,,為了尊重開發者,還是跟著遊戲規則慢慢玩就好,不然也會失去遊戲的一些樂趣。
擴展閱讀
Android逆向之旅—Android手機端破解神器MT的內購VIP功能破解教程 | 尼古拉斯.趙四
遊戲修改器的制作原理? – 知乎
【七少月-Android安全之軟件逆向核心分析-幾種常見內購方法】_視頻教程_i春秋
開放平臺文檔中心 – 螞蟻金服 | 開放平臺
google play測試內購流程 -CSDN博客
安卓逆向系列教程(一)Dalvik 指令集 – 飛龍
登山賽車之天朝歷險_內購破解版
鏈接: https://pan.baidu.com/s/1ggQeGoV 密碼: 38xv
總結
內購破解,對於遊戲是不公平的,作為開發者,需要增加應用的防護機制,
如防註入,防hook,防內存修改,防二次打包,簡而言之就是加固。
作為玩家,無規不成方圓,遊戲是用來娛樂的,
這裏我們只做技術研究,遊戲還是支持官方原版的好。
>>>>>> 黑客入門必備技能 帶你入坑和逗比表哥們一起聊聊黑客的事兒,他們說高精尖的技術比農藥都好玩~
記某單機遊戲的一次內購破解