1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        Python 如何逆向抓取 APP 數(shù)據(jù)?

        共 1739字,需瀏覽 4分鐘

         ·

        2020-08-26 08:15

        作者 |?小帥b
        來(lái)源 | 學(xué)習(xí)python的正確姿勢(shì)


        今天繼續(xù)給大伙分享一下 Python 爬蟲的教程,這次主要涉及到的是關(guān)于某 APP 的逆向分析并抓取數(shù)據(jù),關(guān)于 APP 的反爬會(huì)麻煩一些,比如 Android 端的代碼寫完一般會(huì)進(jìn)行打包并混淆加密加固,所以除了抓包之外,還需要對(duì) APP 進(jìn)行查殼脫殼反編譯等操作。


        接下來(lái)由「小帥b的朋友:Houser」 給大家演示一下,如何逆向抓取 APP 數(shù)據(jù),給你參考一下思路:


        所需設(shè)備和環(huán)境:

        設(shè)備:安卓手機(jī)
        抓包:
        fiddler+xposed+JustTrustme
        查殼:ApkScan-PKID
        脫殼:frida-DEXDump
        反編譯:jadx-gui
        hook:frida

        抓包

        手機(jī)安裝app,設(shè)置好代理,打開 fiddler 先來(lái)抓個(gè)包,發(fā)現(xiàn)這個(gè) app 做了證書驗(yàn)證,fiddler 開啟之后? app提示連接不到服務(wù)器:




        那就是 app 做了 SSL pinning 證書驗(yàn)證,解決這種問(wèn)題一般都是安裝 xposed 框架,里面有一個(gè) JustTrustme 模塊,它的原理就是hook,直接繞過(guò)證書驗(yàn)證類,安裝方法大家百度吧。

        之后再打開app,可以看到成功抓到了包:






        先簡(jiǎn)單分析一下,可以看到請(qǐng)求體中 formdata 是密文,響應(yīng)內(nèi)容也是密文,這個(gè)請(qǐng)求和響應(yīng)中有用信息非常少,甚至都不知道在 jadx-gui 里怎么搜索,請(qǐng)求體中 formdata 是以兩個(gè)等號(hào)結(jié)尾的,應(yīng)該是個(gè) base64 編碼,其他一概不知。。。


        脫殼反編譯

        那先來(lái)反編譯,在這之前,通常是先用查殼工具檢查一下 app 是否加固,打開 ApkScan-PKID ,把 app 拖入:





        可以看到這個(gè) app 使用了 360 加固,真是層層設(shè)限?。?!這里使用frida-DEXDump來(lái)脫殼,可以到 github 上下載 frida-DEXDump 的源代碼,完成之后打開項(xiàng)目所在文件夾,在當(dāng)前位置打開命令行運(yùn)行以下命令:

        python main.py

        等待脫殼完成,可以看到當(dāng)前項(xiàng)目中生成了一個(gè)對(duì)應(yīng)文件夾,里面有很多dex文件:






        下面用 jadx-gui 打開 dex 文件,一般先從最大的文件開始依次搜索關(guān)鍵字,我們知道 java 中使用 base64 是有 BASE64Encoder 關(guān)鍵字的,因?yàn)樽グ玫降男畔⒎浅I?,在這里就只能搜索這個(gè)關(guān)鍵字了,搜到第四個(gè)dex中,得到了疑似加密處:






        可以看到是使用了一個(gè) aes 加密,密鑰是固定的字符串。

        Frida Hook

        Java不太熟,分析不來(lái),直接使用 frida 來(lái)寫一段 hook 代碼看一看 encrypt 函數(shù)入?yún)⒑统鰠⒌膬?nèi)容:





        同時(shí)來(lái)抓包對(duì)比:




        就得到了這里的請(qǐng)求 data 入?yún)?shù)據(jù):

        pageIndex:當(dāng)前頁(yè)碼
        pageSize:當(dāng)前頁(yè)對(duì)應(yīng)的數(shù)據(jù)條數(shù)

        typeId 和 source 是固定的, 接下來(lái)再來(lái) hook decrypt 函數(shù),對(duì)比抓包和 hook 結(jié)果:






        結(jié)果是一樣的,至此,我們逆向分析就完成了。

        總結(jié)一下請(qǐng)求和響應(yīng)過(guò)程,就是請(qǐng)求體中的 data 經(jīng)過(guò) encrypt 函數(shù)加密傳參,改變 pageIndex 就可以得到每頁(yè)數(shù)據(jù),響應(yīng)是經(jīng)過(guò) decrypt 函數(shù)加密顯示,那我們只需要在 python 中實(shí)現(xiàn)這個(gè) aes 加密解密過(guò)程就行了,從反編譯的 java 代碼中可以看出密鑰是固定的:wxtdefgabcdawn12,沒有 iv 偏移。



        請(qǐng)求


        直接上代碼:






        運(yùn)行代碼,成功拿到數(shù)據(jù):






        ok,以上就是逆向 app 爬蟲的全部?jī)?nèi)容,可以看到,現(xiàn)在數(shù)據(jù)加密已經(jīng)很普遍了,隨便一個(gè)很小的 app 都有好幾道數(shù)據(jù)保護(hù)機(jī)制,這次只涉及到 java 層的加密,下次來(lái)講講 native 層加密的 hook 方法、frida-rpc 主動(dòng)調(diào)用以及逆向神器 inspeckage 的應(yīng)用。?

        最后,以上內(nèi)容僅供學(xué)習(xí)交流,小帥b今天的分享希望能給你帶來(lái)一點(diǎn)幫助,那么我們下回見。
        瀏覽 48
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            日本黄大屁股AⅤ电影 | 无码操屄 | 国产TS精品人妖女同 | 国产插逼视频 | 老鸭窝毛片 | 无码任你躁久久久久久小说 | 亚洲色图国产乱伦校园春色 | 做爱网站视频 | 女同xcream唾液接吻舌头 | 成 人 在线偷拍视频 |