記某單機遊戲的一次內購破解

本文做者:à ō é
html

 摘要安全

最近在研究Android逆向,內購破解這一塊,發現挺有味道的,固然只限作技術研究。 下面經過對某單機遊戲的內購破解,詳細介紹一下內購的方法和原理以及防禦等。服務器

 

材料準備微信

1)APP下載,本次演示的軟件:爬山賽車至天朝歷險jsp

咱們去其官網下載便可,另外在其餘市場下載一個低版本的,ide

這裏我另外下載了一個 v1.3.1的,後面會有用。函數

http://www.mygamez.cn/col.jsp?id=105工具

1.png

1111.png

2)至於工具,一個Android Killer加個 夜神模擬器 就能夠了測試

3)放Android Killer 一看,可正常回編,這樣也省了很多事google

2.png

內購破解

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). 安裝遊戲後購買金幣,隨便填個,讓它彈出購買失敗的錯誤提示

3.png

2). 搜索關鍵字符 「短信驗證碼驗證失敗」 另,轉Unicode碼也沒搜到

4.png

3). 試着搜索它的變量名 「gc_security_sms_err

5.png

4). 果真,版本更新了,但 名稱仍是沒變的,再試着搜索它的ID 「0x7f0700a1

6.png

5). 但至此並沒搜索到其關鍵的判斷語句,So,另找它法

02×02 搜索支付的API關鍵接口

1> 看一下支付的方式,還有微信和支付寶,不過咱們這裏就看短信支付(好友代付)吧

7.png

2> 從輸入的手機號的錯誤提示可知是移動的接口,咱們將其拉入 Android Killer後

搜索移動支付 API 的關鍵字 「BillingResult」(前面已介紹第三方SDK的相關資料)

8.png

3> 另,看AndroidMainfest.xml文件發現應用原入口被改

9.png

4> 咱們來看原入口下的類(有須要能夠看反編譯後的JAVA代碼),這裏咱們直接看Smali語句

9.png

5> 跳到:pswitch_data_0處,顯然這是某API的返回代碼,先另外看看 :pswitch_1 分支

10.png

6> 由 :pswitch_1的分支可判定,:pswitch_1與購買失敗有關,相反 :pswitch_0 則與購買成功有關

11.png

7> 咱們可以讓其判斷總爲成功,即可達到內購破解的目的,改的方法有不少,

這裏咱們利用goto 指令就可簡單實現,目標就是讓其跳轉到成功購買

12.png

彙編中的跳轉指令

    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> 最後,來看看咱們修改的結果吧

13.png

14.png

15.png

02×03 修改遊戲內存

這個就很少說了,直接上工具

a. root手機,安裝目標APP和內存修改器(這裏使用了八門神器)

b. 先啓動八門神器(相似的像葫蘆俠,幸運破解器,燒餅修改器等)

16.png

c. 進入應用,開始飆車,後拿出八門神器,對金幣值進行搜索

17.png

d. 因數值較多,可繼續搜索,進一步肯定金幣的內存數據

 

18.png

e. 能夠看到,只有一條數據發生變化,直接修改,這裏改成 12345678

19.png

f. 修改爲功,同時也說明此遊戲沒有防禦

21.png

g. 至此,可退出八門神器,繼續飆車,秋名山等着你

22.png

02×04 其餘方法

其餘方法如,進程注入,Hook,修改初始數據(找到本地的相關文件直接修改)等,

反正就是改,,,爲了尊重開發者,仍是跟着遊戲規則慢慢玩就好,否則也會失去遊戲的一些樂趣。

 

擴展閱讀

Android逆向之旅—Android手機端破解神器MT的內購VIP功能破解教程 | 尼古拉斯.趙四

遊戲修改器的製做原理? – 知乎

【七少月-Android安全之軟件逆向核心分析-幾種常見內購方法】_視頻教程_i春秋

開放平臺文檔中心 – 螞蟻金服 | 開放平臺

google play測試內購流程 -CSDN博客

安卓逆向系列教程(一)Dalvik 指令集 – 飛龍

爬山賽車之天朝歷險_內購破解版  

連接:  https://pan.baidu.com/s/1ggQeGoV  密碼: 38xv

 

總結
內購破解,對於遊戲是不公平的,做爲開發者,須要增長應用的防禦機制,

如防注入,防hook,防內存修改,防二次打包,簡而言之就是加固。

做爲玩家,無規不成方圓,遊戲是用來娛樂的,

這裏咱們只作技術研究,遊戲仍是支持官方原版的好。

 

>>>>>>  黑客入門必備技能  帶你入坑和逗比表哥們一塊兒聊聊黑客的事兒,他們說高精尖的技術比農藥都好玩~

相關文章
相關標籤/搜索