編輯:關於Android編程
這是看別人的文章學習的,當然還有加點自己的思考,截圖用自己的,這樣的學習才有效果啊
學習附件及文檔:(這是別人的)http://pan.baidu.com/s/1nuyxc9N 密碼:d29f
這裡分別對三種不同類型的文件做不同的處理,傳進去的參數是--dex就走中間那一步了,我們跟進去
根據log信息,我們知道,顯示初始化VM虛擬機(應該是dalvik虛擬機吧)
跟著就執行優化,我們看看那個優化
可以看到上面的英文注釋:重寫文件,字節重排,結構重排,類驗證,字節優化都在那個rewriteDex函數中,優化成功下面才去調用我們的dvmDexFileOpenPartial
可以看到第三個參數為NULL
既然這樣,我們繼續跟進
可以看到裡面調用了dexFileParse,就是解析dex文件的了,既然都開始解析dex文件了,那麼殼肯定已經對dex解密完成了,不然也無法解析啊
順手簡單看看是如何解析的,不懂啊 ,只看這兩個看著有點眼熟的,因為學過PE文件的格式

可以看到這裡也有一些可選頭,通過可選頭可以讀取一些信息,什麼長度啊,偏移什麼的, 中間有個解析Data的函數,這裡是學習脫殼啊,不是看安卓源碼,都跑哪去了
接下來還會作一些校驗和的檢測
好了,我們開始學習脫殼吧
轉化成jar(這個軟件還是比較好用的,支持文件拖拽)
跟著自動就幫你打開JD-GUI了
全部函數都放到so文件中了,load了一個庫mobisec
看到這,就是要脫殼了,就像我們平時win逆向的時候,打開ida,發現只有一個函數
那我們接下來就開始吧
ida的動態調試可以百度哦 ,或者很多安卓安全的書都有了,想得起的話我去寫個記錄
首先安裝,看看,熟悉一下整個應用,應該是輸入正確的url,跟著出flag,key啊什麼的
對了,還沒知道包名,上apktool,解包
看看包名
在手機上運行server
作一下端口轉發(應該是本地的端口,轉發到adb那邊的23946端口吧),當然如果利用局域網調試就不用這一步了
跟著一條是調試模式打開應用的首頁
那接著就上ida咯
ok後可以看到我們那個進程了,附加上去
跟著看看模塊吧
跟著查找libdvm,這個看名字就知道跟Dalvik虛擬機有個,dvm嘛,優化dex的應該也在裡面,我對自己是這麼想的
雙擊點過去,繼續查找dvmDexFileOpenPartial
再點過去
F9運行!!!!!
接下來jdb命令動態調試Apk
先打開ddms,可以看到調試端口,還有哪個紅蟲
JDB是基於文本和命令行的調試工具(例如Sun JDB);雖然現在有一些很好的調試工具,然而 Java 調試器 (JDB) 提供了一些優點。最重要的是 JDB 可以免費獲取並且是平台獨立的。其缺點是它只有命令行格式,一些開發人員認為這很原始,而且難以使用。一些 IDE 已經將 GUI 界面構建到 JDB 調試 API(如 Jikes)。JDB 是 JDK 安裝的一部分。它在 Java 2 平台中得到了增強。
使用jdb命令進行調試時,一般選擇8700端口,因為8700是默認的調試端口 都一樣的了,沒什麼特殊,我們可以看到使用的包中有個jdi,這也滿足我們的預想
跟著ida就出現這個,取消就好
繼續
跟著程序就斷下來了
R0是傳過來的第一個參數,R1是第二個參數,根據這個函數的原型,所以如下
跟著就用腳本把它dump出來吧
一開始應該就是相當於我們C語言的聲明變量,看來那些寄存器我們直接寫名字就可以訪問了
算了,直接給代碼吧
auto fp, dex_addr, end_addr;
fp = fopen("C:\\dump.dex", "wb");
end_addr = r0 + r1;
for(dex_addr = r0; dex_addr < end_addr; dex_addr++)
fputc(Byte(dex_addr), fp);
點擊run
稍等片刻,馬上就好
結果發現只有安卓的庫(不要急,我就入坑了,這個dex2jar不能用於dump出來的應該,我把上面的步驟至少重復了5遍)
再看看那個地址,確實是個dex文件啊
直接上JEB神器,終於看到了
跟Google 學代碼 : Building Apps with Connectivity & the Cloud【Webapp Usage】
本文介紹本文是翻譯自Google 官方課程 Building Apps with Connectivity & the Cloud 第二節 Performing
安卓最簡單的aidl用兩個程序模擬進程通信
最近要面試了 沒 時間玩了.看了下安卓icp ,說實話一直沒過aidl這東東 發現網上帖子好多 下載的卻好少 .好吧自己玩了一個 留下做個備注吧. 服務端輸入文
Android View繪制和顯示原理簡介
現在越來越多的應用開始重視流暢度方面的測試,了解Android應用程序是如何在屏幕上顯示的則是基礎中的基礎,就讓我們一起看看小小屏幕中大大的學問。這也是我下篇文章&mda
Android apk動態加載機制的研究(二):資源加載和activity生命周期管理
前言 為了更好地閱讀本文,你需要先閱讀Android apk動態加載機制的研究這篇文章,在此文中,博主分析了Android中apk的動態加載機制,並在文章的