【APP逆向-入門級】某直播APP逆向過程

原文章逆向思路

重點:先向CSDN審覈客服聲明一下:本文僅僅是用於技術交流,而非傳播sexy相關的東西,文章提到的截圖已經全部打碼、也沒有提及是什麼APP,希望審覈人員可以通過本文章,謝謝。

這是一篇入門級的APP逆向教程,如有寫着不對的地方,煩請大佬們指出,互相學習,謝謝啦

前言

本文起源於:前兩天,我的一位朋友跟我說,他在QQ羣裏面,一位羣友,發了一些黑色/灰色地帶的產業鏈信息,他就僅僅是好奇,去下載了那款APP

原來發現,QQ羣友的分享,是爲那款APP做引流,一個有效的分享可以獲得多少金幣(磚石)這種(是指引導別人來註冊,纔算有效分享,才能獲取金幣)

打開之後,發現很驚人,這搞的帶顏色的直播啊!!!

而這直播APP裏面區分:免費和付費的房間,當你想要看付費的房間,那你只能看前面幾十秒鐘的時間,過了這個時間就會彈窗出來,讓你付費,才能繼續看

我朋友就讓我幫忙看看,跟我說有什麼能難倒程序員的??而且剛好最近我在學APP逆向,心裏想着,這種灰產的APP又不能大力宣傳,估計反逆向不會做很好吧?然後就開始嘗試搞搞,看看能不能逆了它

0x00、預估一下本次的逆向步驟
  • 第一步、抓包分析
  • 第二步、反編譯
  • 第三步、根據第一步的抓包關鍵詞來搜索
  • 第三步、根據抓包信息、收費彈窗,來分析這個收費的邏輯
  • 第四步、得出這個邏輯之後,對smali代碼進行篡改,保存
  • 第五步、回編譯APP,重新打包簽名

本次用到的工具:魅族手機(Flyme6)已經root的、HttpCanary抓包工具、MT管理器、xxApp(這個不公開說了)

0x01、首要就是抓包分析

由於本次使用的手機是root的,而且抓包工具的證書已經被我安裝到系統證書的目錄下,而非直接安裝到用戶個人證書(所以對於本次APP是否有檢驗抓包工具檢測這一塊,直接忽略掉)

打開HttpCanary抓包工具,然後找到【設置】
在這裏插入圖片描述
然後選擇【目標應用】,這裏爲了過濾無用的包,減少干擾,利於快速分析
在這裏插入圖片描述

在這裏插入圖片描述
返回去之後,點擊開始【抓包】,然後轉向去打開目標APP,然後打開一些room,免費的、收費的都開一下,目的就是爲了抓包,看看APP發起了哪些請求、收到哪些響應
在這裏插入圖片描述

再切換回來之後,發現已經存在一堆抓包信息了

在這裏插入圖片描述

一個一個查看包響應,看看有什麼收穫

沒想到,竟然發現如此大的突破口

在這裏插入圖片描述

看下面的兩張截圖前,再次向廣大博友們聲明:本次教程僅僅是用於技術交流,而非傳播sexy相關的,謝謝。

下面來看兩張收費的room的就截圖:一個用戶點進去看了幾十秒(應該是30s,具體是多少沒有數),然後就彈窗出來說得需要付費才能繼續,這不誘惑人進行付費嗎?

更多詳情請看這裏的原文,必看

0x02、反編譯APP
  1. 鄙人一開始是,使用 jadx-gui 來反編譯APP,發現沒有殼、沒有很強的混淆,可以直接反編譯

  2. 反編譯之後,進行相關的關鍵字來搜索,前面抓包中,有個很有用的關鍵詞:

"type": "2",
"type_val": "38",
"type_msg": "本房間爲收費房間,需支付38鑽石"

再來簡單分析一下:這三個字段中,如果你直接搜索 type 的話,根據經驗,這肯定會出現很多搜索結果,排除它;而 type_val 、type_msg 這兩個字段出現的概率不會很大,那麼分析完了,就開始搜索唄!!!

首次我搜索的是 type_val ,但是出來的結果還是不夠精準,有6/7條結果;
然後轉而去搜索 type_msg,發現出來的結果只有兩處,這不就是很精準了嗎,噢耶!!

在這裏插入圖片描述
然後選擇第二個進去看看。

你們可以思考一下爲什麼是選第二個呢?(我個人純粹是靠大膽的猜測,因爲第二個有關鍵詞 LiveRoom,就是直播房間嘛)

在這裏插入圖片描述

發現抓包中的三個參數,都在這裏取出來了,而且發現是對那個 type 字段進行判斷是否收費的,多次抓包分析得出返回的數據中:免費房間的 type=0,收費的房間 type=2,至於代碼中還有一個 type=1 的判斷,看到代碼中調用的方法名,可以猜測:

  • type=0,調用 forwardNormalRoom 方法,根據字面意思是:轉到正常(免費)房間處理邏輯
  • type=1,調用 forwardPwdRoom 方法,根據字面意思是:轉到輸入房間密碼處理邏輯
  • type=2 || type=3,調用 forwardPayRoom 方法,根據字面意思是:轉到房間收費的處理邏輯

所以,我們只需要將,type=1/2/3裏面的調用方法,改爲調用type=0的方法即可繞過這個限制,話不多說,下面就是修改的步驟,Just do IT

0x03、修改 smali 代碼,重新打包、簽名

理清當前邏輯之後,本文使用最輕量級的、入門級的、小白級的工具——MT管理器

簡單來簡述一下它的功能:

  • 其他文件夾有的基礎功能它也都有(複製、移動、重命名等等)
  • APP安裝包編輯,主要有 DEX 編輯,ARSC 編輯,XML 編輯,APK 簽名、APK 優化、APK 共存、去除簽名校驗、RES 資源混淆、RES 反資源混淆、翻譯模式等
  • 可以修改文件夾權限(系統目錄的話,需要 root 權限才能修改)
  • 自帶強大的文本編輯器,可以流暢編輯大文本文件,支持設置是否顯示行號、開關自動換行、雙指縮放字體大小、自動識別編碼、代碼語法高亮、自動縮進、正則搜索替換

其他更加強大功能,待你們去發掘,相信用過了之後,你們會覺得這是用來修改APP包/破解APP限制的一個好工具。

本次主要是使用它的第二個功能——APP安裝包編輯功能

  1. 使用MT管理器【查看】目標APP包
    在這裏插入圖片描述
    在這裏插入圖片描述

圖中我圈了紅色的三個文件是我們待會需要進行操作的

其中,第一個 META-INF 目錄中,包含了一些簽名文件等,我們將裏面的三個文件刪除掉:CERT.RSA、CERT.SF、MANIFEST.MF(其中CERT.RSA、CERT.SF這兩個命名,不同APP可能會名字不一樣,只要找到後綴格式一樣的即可)。

Tips:鄙人在這裏踩了一個坑,這個好像得需要刪掉這三個文件打包纔不會被檢測到。不然重新打包簽名之後,一聯網打開APP就會出現閃退的情況,估計是被檢測檢驗了。

文件 classes.dex、classes2.dex 就是APP編譯之後,Class轉成成.dex文件,dex是Android平臺上(Dalvik虛擬機)的可執行文件, 相當於Windows平臺中的exe文件, 每個Apk安裝包中都有dex文件, 裏面包含了該app的所有源碼, 通過反編譯工具可以獲取到相應的java源碼。

一些工程很大的話就會產生多個.dex文件,到現在有了前面的介紹,我們可以簡單的知道:dex 文件就變相等於可執行的源碼,那我們可以通過修改這個源碼來達到逆向的目的(說法如有說錯,煩請大佬們糾正,謝謝啦)。

  1. 先打開第一個dex文件,MT管理器會提示我們,要用哪個打開,選擇 【Dex編輯器++】即可
    在這裏插入圖片描述

3.選擇【搜索】 ,然後輸入剛剛那些關鍵詞【type_msg】
在這裏插入圖片描述

  1. 點擊右上角,再次進行搜索:【type_msg】
    在這裏插入圖片描述
    此處,你得需要一些smali語法,但是本文我只介紹本文使用的語法:
  • if-eqz : 意思就是 是否等於0(if equal zero)
  • if-eq:意思就是 是否相等 (if equal)
  • const/4 p2,0x1:意思就是將0x1,即0x01賦值到 p2 ,即 p2=1

所以,if-eqz p1,:cond_4b就是:如果 p1=0,那麼調用方法 cond_4b;
if-eq p1,p2,:cond_45如果 p1=p2(p1=1),那麼調用方法 cond_45 ;

這也印證了我們前面反編譯APP的源碼邏輯。
那肯定會有小夥伴會問,那個 cond_4b 是什麼方法?很好,我這裏回答一下,因爲通過我們前面反編譯的分析,我們已經知道,如果type=0的時候就是調用 forwardNormalRoom 方法,所以,可以肯定的告訴你們,這個cond_4b就是指向這個 forwardNormalRoom 方法。

  1. 將type=1/2/3的情況,調用的方法改爲調用 cond_4b 即可,然後點擊右上角的保存
    在這裏插入圖片描述

  2. 保存之後,返回上一層第一層搜索的時候,點擊右上角,選擇【編譯】
    在這裏插入圖片描述

  3. 編譯之後進行返回,返回的時候會提示你,點擊【退出】即可。此時會再次提示你,dex文件已經修改,問你是否更新到壓縮包中 ,我們選擇【確定】
    在這裏插入圖片描述
    然後你會看到壓縮在更新
    在這裏插入圖片描述

  4. 然後返回之後,你會看到一個剛剛被修改過的apk文件,顯示綠色名字的,然後點擊它,第一步選擇【功能】、第二步選擇【APK簽名】
    在這裏插入圖片描述
    選擇【確定】即可
    在這裏插入圖片描述
    然後你就可以【猥瑣欲爲】啦

0x04、最後重新簽名之後,你可以卸載原來的APP,然後裝上這個無限制的版本,哈哈哈…

本文入門級的APP逆向教程已經編寫完畢,媽呀,花了幾個小時來重新演示逆向過程,以及編寫本篇文章

最後: 真感謝每一位小夥伴,竟然看完了我的文章,謝謝你們啦,有幫助的話,點個贊呀

題外話:希望小夥伴們都別用於非法的手段,本文只是技術交流

謝謝大家

相關文獻參考:

【APP逆向-入門級】記一款直播APP逆向過程
META-INF目錄是幹啥用的?

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章