【逆向】解鎖一款Android應用VIP功能詳細思路

點擊上方 Android掃地僧 ,選擇 星標 公衆號html

重磅資源、乾貨,快上車!
java

LivedForward 算法

來源:https://www.52pojie.cn/thread-1022003-1-1.html服務器


寫在前面:發完這篇文章,我就去撿廢品了,記得點在看
微信



軟件名稱:音樂剪輯
app


這款軟件UI作的特別漂亮,功能也很強大,能夠做爲一個音樂編輯的工具.

練手分析該軟件內購受權思路,並解鎖VIP所有功能.


軟件受權機制作的很簡單,但願大佬哥哥們批評指正.
.
軟件沒有訂閱VIP以前底部有廣告,啓動界面也會有廣告,並且天天功能使用會有次數限制
直接入正題:軟件沒有加殼,只是對Java層的方法名和變量名進行了混淆,,能夠說是很是簡單了.

先將dex轉化爲jar,而後拖入jd-jui查看源碼輔助分析.

這款軟件直接修改支付結果是不行的,由於軟件會後臺異步獲取訂閱結果和訂閱日期,這裏就選擇對用戶管理類做爲入口點.由於通常訂閱軟件都有一個專門管理用戶信息的類,裏面就包含VIP訂等相關信息.

以微信支付爲例:
在支付回調時會有Toast結果信息,咱們根據這個信息定位到com.lixiangdong.songcutter.pro.activity.DingyueActivity
能夠看到支付成功的函數調用了a(),跟進 繼續跟進ViewUtils裏的重載a方法: 能夠看到程序確實後臺異步會從服務器獲取訂閱信息,大致思路就是匿名內部類實現了一個http通信回調接口,回調執行各類通信結果,咱們看到重寫的a(LoginBean param1LoginBean)方法裏,很明顯 SPUtils這個類就是負責管理用戶信息的類.
異步

再日後面看:
看到一個b()方法,應該可能就是初始化用戶的相關信息,timeExpire,isVIP等等,看到這裏就好辦了,咱們能夠手動將timeExpire和isVIP等字段賦值,可是timeExpire格式咱們還須要
進一步查找.
編輯器

在以前的一個類DingyueActivity 裏看到這個函數:函數

在用戶下訂單以前會先對用戶信息進行一系列判斷,其中就有一個過時時間是否爲2099-01-01
工具


看到這裏,個人思路就是將timeExpire和isVIP等字段進行修改,而後將用戶初始化信息的代碼放到程序入口的位置,這樣程序啓動
就已是VIP用戶了.


如今咱們來修改程序對應的smali代碼


這裏是對應的初始化用戶信息的smali代碼,能夠看到const/4 v3,0x0
這條指令意思是把0x0賦值給佔4個字節的v3寄存器,猜測確定是int型,0x0就是0.
在以前咱們就已經知道程序初始化用戶信息是將用戶isVIP等boolean字段賦值爲false
因此在這裏咱們確定0x0就是false,因此咱們將0x0改成0x1即true,而後將timeExpire賦值
爲2099-01-01,將此段smali代碼複製到程序入口便可啦!


效果圖:登錄就是VIP,沒有廣告和功能次數限制了,即便不登錄也無廣告和功能次數限制.

總的來講分析這個軟件的訂閱受權仍是挺簡單的.



關於【逆向】,字面意思,就是反着來,正常開發是寫java代碼打包成apk,那麼逆向就是由apk到java / c。在逆向這個小衆的行業內,其實出路不只僅只有一條破解別人的代碼,實質上它還能夠作到保護。正所謂一攻一防。存在即合理,如今去各大招聘網站搜索【Android逆向工程師】,也仍是有一大堆的招聘需求。



關於逆向開發,若是有更多的興趣,能夠回覆關鍵字【逆向】,獲取如下資料包



1. Android彈窗騷操做——無需權限顯示懸浮窗,兼談逆向分析app

2. 反編譯實戰——某淘客APP加密算法

















點「在看」的都漲工資了


本文分享自微信公衆號 - Android掃地僧(Android-Mas)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索