1. 程式人生 > >記某單機遊戲的一次內購破解

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

通過 入口 找到 返回 class 官方 聯通 使用 進一步

本文作者:à ō é

摘要

最近在研究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,防內存修改,防二次打包,簡而言之就是加固。

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

這裏我們只做技術研究,遊戲還是支持官方原版的好。

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

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