日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

360加固一键脱壳工具2020_如何脱壳加固过的Apk并利用其API“走近数据库”

發布時間:2023/12/15 数据库 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 360加固一键脱壳工具2020_如何脱壳加固过的Apk并利用其API“走近数据库” 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

0x00 尋找突破口

打開首頁,emm
就一個登錄頁面,沒了
隨便寫點東西提交看看

天生手欠的我一不小心就多輸了一個單引號

WDNMD,除了數字和字母其他都不行?
這叫我怎么測?
剛剛要放棄,就在這時,首頁的一個二維碼吸引了我
正是安卓端的軟件,眼前一亮,仿佛找到了打開新世界的大門

開開心心地把軟件下載過來,想反編譯找找看有什么可利用的接口

360加固?
fa?!

我以為上帝關上了我的門,還會留個窗給我,結果還是無情地把窗給我鎖上了

0x01 zjDroid脫殼

刀不鋒利馬太瘦,你拿什么工具和我斗。
我們已經知道不論是利用什么方法加固apk
若要讓軟件要正常運行,就必須讓程序最終加載原dex文件,這樣的話,如果我能dump出內存中已經加載的dex
就可以無視在加載dex前的一大堆解殼操作
而ZjDroid就可以做到這一點,ZjDroid是一款基于Xposed開發的插件,它可以輕松地hook住所有的activity,并且將軟件當前加載的dex寫出

在github上fork其源碼,進行分析
有進行過Xposed插件開發的大佬們都知道,想讓Xposed加載你編寫的插件的核心代碼
就必須在assest/xposed_init文件內寫入你想要加載的核心代碼的所在包

進入ReverseXposedModule類

可以看到圖中兩處紅線標記處因為我們的目的是Dump處dex文件,所以先對第二處紅線標記處進行分析跟進DexFileInfoCollecter的start方法

通過觀察代碼可知,第一處紅線標記處程序利用反射找到了系統DexFile類的openDexFileNative方法
這個方法和系統加載dex文件有關,這里不深入分析
接著看第二處標記處,程序調用Xposed模塊的hookMethod方法hook住了openDexFileNative方法
繼續看第三處,在hook完成之后,只要系統調用到了openDexFileNative方法,紅線處的代碼就會執行
第三處紅線處的代碼用于獲取加載的dex的信息,這里不深入分析
也就是說,只要用戶打開某個app,系統調用dex文件的方法就會被執行,那么ZjDroid只需要hook住系統調用dex文件的方法,就可以在軟件加載原dex后做任何事情了!
hook加載dex方法的代碼已經執行完畢

我們回到ReverseXposedModule類中的第一處紅線標記處,進行分析
跟進其調用的initModuleContext方法

查看第一處標記,程序同樣的找到了Application類的onCreate方法
開發過app的大佬們都很熟悉這個onCreate方法吧,這是每個軟件在啟動時默認最先執行的方法
這里ZjDroid同樣對系統的Application類的onCreate方法進行了hook,換句話說,只要用戶點開任何一個軟件,都能被程序hook住
同樣的,程序也是利用hookMethod進行的hook操作,hook后的操作在ApplicationOnCreateHook類中,跟進代碼

可以看到程序給每個被hook的app注冊了一個廣播,跟進代碼

分析代碼可知,當被hook的app接收到含有com.zjdroid.invoke字符的廣播時就會進入判斷
程序將提取出廣播中鍵為"target"和"cmd"的值
通過圖中第二處紅線下方的代碼可知target就是app的pid號
在獲取cmd的值后,cmd的值將被傳入CommandHandlerParser類中
跟進代碼

觀察代碼可知cmd的值就是一個json格式的字符串
程序將根據json中的值對應地執行操作
我們需要dump出dex文件,假設我發送的廣播進入了ACTION_DUMP_DEXFILE分支
程序將向DumpDexFileCommandHandler類傳入指定值,跟進代碼

其中紅線標記處就是dump dex文件的核心代碼了
跟進

查看其中紅線處,data成員調用的方法就是dump出內存中dex文件的代碼,接著程序將data寫出到指定目錄
遺憾的是,紅線出的代碼為native層的代碼,而native層的代碼作者并沒有開源
編譯,運行
踩坑注意:這個工具的so文件似乎在5.0以上的安卓系統不起作用,所以我特意刷了一個4.4的安卓再去安裝ZjDroid
在手機的Xposed中啟用此插件,然后打開需要脫殼的app
adb shell dumpsys activity top查看最頂層活動的PID號
接著發送廣播dump出dex

dex被成功dump、

0x02 尋找接口

查看軟件的入口
打開指定類
未加殼的dex成功被加載了!
我現在看到的是原dex的代碼,而不是殼dex的代碼!

可以看到onCreate方法為native層方法,但是接著往下看
getInfo方法中有一個利用post請求調用的登錄接口
請求一下看看什么情況

WTF?返回的實體中告訴我無權調用此接口?!
難怪把onCreate方法放在native層里!一定是在onCreate方法中需要進行什么操作才能正常調用此接口
可native層的代碼實在是無能為力
本打算就這么放棄了,最后一次在代碼中搜索可能存在的接口

其中一處接口讓我眼前一亮

WTF?!WTF?!居然可以請求!還沒有過濾特殊符號?!
管理員還真是粗心

丟到sqlmap里

收工!

ps:具體細節不做演示,本文僅限圈內技術交流禁止用于非法用途!

總結

以上是生活随笔為你收集整理的360加固一键脱壳工具2020_如何脱壳加固过的Apk并利用其API“走近数据库”的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。