| 前段時間,老板讓我開發(fā)一個TV的安全類的APP,本人比較懶,如果全部手敲一個APP太費勁,周期時間又長,正好最近在學習關于逆向方面的知識,正好拿來練練手!
好了那么現(xiàn)在開始我們的快速開發(fā)之旅!
首先,準備工具:1.Androidkiller
2.jadx0.6.1
按照需求找類似的APP,用AndroidKiller查殼工具看下APP有沒有加殼,如果有殼可以使用脫殼神器drizzleDumper工具辨嗽,這個工具是開源的,大家想看源碼可以去下載:https://github.com/DrizzleRisk/drizzleDumper扁位;當然這個工具網(wǎng)上有人已經(jīng)分析了原理卡啰,這里就大致在說一下,他的原理就是一點:root設備之后脚作,通過ptrace附加需要脫殼的apk進程葫哗,然后在脫殼的apk進程的內(nèi)存中進行dex文件的特征搜索缔刹,當搜索到dex文件時,進行dex文件的內(nèi)存dump劣针。
其實這個思路和之前介紹的ZjDroid校镐,DexExtractor等工具原理還不太一樣,之前的脫殼工具都是基于hook攔截系統(tǒng)的加載dex函數(shù)進行dump出dex的捺典。但是這個工具是基于附加目標程序鸟廓,尋找內(nèi)存段具備dex文件頭部信息進行dump的操作。這個思路也是非常好的襟己。我們也知道dex的長度是保存在頭部信息中的引谜,所以只要在內(nèi)存段中找到dex的頭部信息,然后解析長度擎浴,有了起始地址和長度员咽,那么就可以獲取內(nèi)存中的完整dex文件了。(對脫殼是否成功贮预,這個估計有一定的概率性)
drizzleDumper工具使用:(以com.qihoo.freewifi為例)
在cmd控制臺的條件下贝室,執(zhí)行cd命令進入到存放drizzleDumper的文件夾,然后將drizzleDumper文件推送到android手機的/data/local/tmp文件夾下并賦予可執(zhí)行權限仿吞,然后根據(jù)每種android加固的特點档玻,選擇需要脫殼的apk和drizzleDumper運行的先后順序,調(diào)整能夠脫殼成功的過程茫藏。這里使用的com.qihoo.freewifi為例误趴,先運行com.qihoo.freewifi程序,然后adb shell條件下su提權务傲,****執(zhí)行drizzleDumper的脫殼操作凉当,等待2秒。
cd xxxxx/drizzleDumper
adb push drizzleDumper /data/local/tmp
adb shell chmod 0777 /data/local/tmp/drizzleDumper
adb shell #進入androd系統(tǒng)的shell
su #獲取root權限
-
./data/local/tmp/drizzleDumper com.qihoo.freewifi 2 #執(zhí)行脫殼操作
最好不要找經(jīng)過混淆的APP,這樣增大閱讀代碼難度!一般 Apk 在發(fā)布出去之前售葡,都是會被混淆的看杭,這基本上國內(nèi) App 的標配。這樣一個類挟伙,最終會被混淆成 a.b.c 楼雹,方法也會變成 a.b.c.a() ,這樣其實非常不利于我們閱讀尖阔。我們很難看到一個 a.java 的文件贮缅,就確定它是哪一個,還需要根據(jù)包名來區(qū)分介却。
而 deobfusation 功能谴供,可以為它們其一個特殊的名字,這樣它在這個項目中齿坷,名字就唯一了桂肌,方便我們識別和搜索数焊。
這個功能可以在 Tools -> deobfusation 中激活。接下來來看看它的效果崎场。deo-beforedeo-before開啟 deobfusation 之后的效果如下:deo-afterdeo-after可以看到佩耳,a 變成了 p003a。
按照步驟一步步來,要有耐心,不要一心急把整個都COPY到時候一大片爆紅,瞬間就沒了心情!
1.先新建一個項目.
2.用AndroidKiller編譯找到的APP,找到res資源文件,在Window Explorer外找到文件,整個COPY.
3.在工程信息里面找到程序路口,copy下名字.
4.用jadx打開APP,Ctrl+N快速搜索找到程序入口!
5.將整個類copy到自己的項目,記得在AndroidMainFest.xml注冊!這是會有一大片紅,不要急,耐心!跟著我一步步來!
6.首先看看第一個BaseActivity,這個很明顯是缺少父類class,來到jadx ,Ctrl+N搜索baseActivity,找到該類整個copy,好了問題解決!,按照類似的方法,哪里錯誤點那里,!大部分原因是因為缺少類或則包沒有導入.一天時間整個框架就搭好了,差不多一周時間就把整個項目完整的COPY出來了.然后就可以坐在那里抖腿看看論壇啥的!
AS里有些比較實用的快捷鍵Alt+j批量修改,ctrl+f查找,F2找到錯誤的信息,shift+shift全局搜索!
7.copy也是有技巧的,按步驟來,首先先把布局主界面做出來,先不要實現(xiàn)邏輯,做出一個大概的框架,然后具體功能一個模塊一個模塊去實現(xiàn),千萬不要急,要不然很容易出錯!把自己搞得暈頭轉向,還有一些找不到類的情況,一般是用了第三方的框架,去官網(wǎng)上下框架就好了!
因為項目已經(jīng)做好,有些問題一是半會想不出來,自己也懶得截圖,所以寫的有亂,打字好累,本人比較懶!后期有時間我會慢慢修改!
|
<ignore_js_op style="word-wrap: break-word;"><dl class="tattl attm" style="word-wrap: break-word; margin: 0px; padding: 10px 10px 10px 0px; float: none; overflow: visible; width: 1191px; height: auto;">
<dd style="word-wrap: break-word; margin: 0px; padding: 0px; color: rgb(153, 153, 153);">
3.png (76.7 KB, 下載次數(shù): 0)
</dd>
</dl></ignore_js_op> <ignore_js_op style="word-wrap: break-word;"><dl class="tattl attm" style="word-wrap: break-word; margin: 0px; padding: 10px 10px 10px 0px; float: none; overflow: visible; width: 1191px; height: auto;">
<dd style="word-wrap: break-word; margin: 0px; padding: 0px; color: rgb(153, 153, 153);">
2.png (21.99 KB, 下載次數(shù): 0)
</dd>
</dl></ignore_js_op> <ignore_js_op style="word-wrap: break-word;"><dl class="tattl attm" style="word-wrap: break-word; margin: 0px; padding: 10px 10px 10px 0px; float: none; overflow: visible; width: 1191px; height: auto;">
<dd style="word-wrap: break-word; margin: 0px; padding: 0px; color: rgb(153, 153, 153);">
1.png (116.63 KB, 下載次數(shù): 0)
</dd>
</dl></ignore_js_op>