dex內存提取


轉 http://blog.csdn.net/asmcvc/article/details/18216531

智能手機的普及將移動互聯網的發展推到了一個讓所有人都為之興奮的高度,我想即使是以商業眼光見長的“蘋果教父”喬布斯也不會料想到短短幾年時間,智能手機就已經成為了所有人離不開的商業產品,各種商業應用層出不窮,人們越來越習慣在手機上選購商品,越來越習慣用手機來購買火車票、電影票,越來越習慣用手機來完成支付。

       但隨着而來的是日趨凸顯的移動安全問題,據多家安全機構調查顯示,智能手機病毒特別是在Android平台上最近幾年呈爆發式增長,套餐竊賊、支付寶大盜等手機病毒則表明手機病毒已經越發智能、越發難以控制,並且危害巨大,竊取隱私、盜號、交易劫持等案例屢見不鮮……;這是一個技術貼,這些套話咱們到此為止,下面咱們說說移動安全怎么做。

       安全出了問題總要有人跳出來解決問題,但是我們希望跳出來的是“真衛士”而不是自身存在問題的“偽衛士”。筆者長期從事移動安全研究,對移動安全的各家解決方案都做過一些研究,有的很有價值但有的卻不那么讓人滿意,下面就讓筆者來揭秘多家移動應用加固的安全保護效果到底怎么樣。

       國內某知名移動應用安全加固企業(針對Android平台)使用dex(android可執行文件)隱藏的技術,提供安全加固解決方案。但加殼/加密只是移動安全的第一步,也是最脆弱的一步。只能對抗靜態分析和簡單的逆向工程。

然而, 不管如何隱藏dex, 最終在運行時都必須釋放到內存, 所以本文的思路是從內存中找到解密后的dex文件, 進而得到加固前的apk,由於dalvik的執行機制要求dex在內存中是連續的,所以想辦法拿到內存的coredump就很可能完成破解。

       破解的過程,已有Bob Pan(一名匿名安全研究人員)發表在其他安全論壇上但卻未引起重視,筆者也於早些時候考慮到這種方案並予以驗證,在此感謝Bob Pan,文章地址:http://blog.csdn.net/pxb1988/article/details/17167795

 

筆者的破解過程如下:

1:安裝加固后的apk並運行

2:將前面編譯好的gdbserver復制到android模擬器里面,修改其權限

adb push gdbserver/data/local/tmp/

adb shell chmod 755/data/local/tmp/gdbserver

2、查看所裝apk的進程

adb shell

ps

可以看出,共有三個進程,且相互ptrace,所以不能直接用gdb連接其主進程,但是可以gc線程、binder線程。

3:進入線程的tid目錄下

ls /proc/345/task

可以看到:

 

這么多的線程,任意鏈接上一個即可。

4:鏈接一個線程

adb shell

cd /data/local/tmp

./gdbserver :1234 --attach346

 

5:另開一個終端

adb forward tcp:1234 tcp:1234

6:啟動上面生成的gdb

./gdb

 

7:鏈接本地:1234端口

target remote :1234

8:然后輸入gcore 拷貝

gcore

出現一下結果則表示已完成:

 

9:用vim打開core.346文件

vim命令行下輸入:

:%!xxd

等待一段時間后就會出現:

 

10:搜索與程序相關的類名,記下大概位置

 

如上面的行號:34672

11:然后通過查找dex.035找到離它最近的dex文件頭

 

搜索發現在3569346行的dex.035最近,應該是我們所需的dex文件。

12、從中讀取dex文件開始位置和大小

從中可以讀出,dex文件開始位置為:3676c10  十進制為:57109520

dex文件大小為:3508e0(起始位置偏移32位)十進制位:3475680

13:摳出dex文件

dd if=core.346 bs=1count=3475680(十進制的dex文件大小數值) skip=57109520(dex文件頭的

起始位置的十進制數值) of=x.dex

x.dex即為提取出來的dex文件

 

總結:成功逆向出dex文件,我們就可以使用常見的apktool等逆向攻擊繼續完成到smali甚至java語言的逆向,在此就不累述了。整個過程不超過10分鍾的時間,筆者就完成了對該Android應用的破解。該安全公司的安全加固似乎不能讓人滿意。此外,在筆者的研究下,該安全公司的安全加固還存在以下問題:

A:對Android系統的不同版本兼容性不完美,Android 3.x系統上不能運行經過該安全公司加固的應用。

B:dex(Android)可執行文件的本地化問題,據筆者研究發現,安全加固只是將dex文件解密並釋放在本地的隱藏文件夾下存儲(/data/data/應用名/.cache),即使不在內存中還原也可以使用自動化腳本將該dex文件本地還原,破解更加簡單。

 

對於移動安全的擔心,筆者在游走於各大安全論壇時發現在近期即將舉行的OWSAP安全沙龍蘇州站的議題就是針對移動應用安全。活動網址:http://www.owasp.org.cn/OWASP_Events/20140121

據筆者的了解,該沙龍是由通付盾安全團隊協調舉辦的屬於OWSAP體系的移動安全沙龍,當中就有對業內各家移動安全加固方案的比較。

據悉,通付盾也有自己的安全加固解決方案,並為幾家金融機構和銀行提供了安全加固,經筆者實際下載其加固后的應用安裝測試,通付盾對一些加固中出現的問題做了處理。例如加固后的應用也可以在Android 3.x上運行,采用內存加載dex的加固方式,本地不存有解密后的dex文件,極大的提高了程序的兼容性、穩定性和破解的難度。此外,據了解,該公司提供的安全服務有較高的門檻,為了防止被黑客利用,通付盾有較嚴格的安全審核機制,一般只為第三方企業和金融機構提供安全加固方案,並對其要加固的應用進行全面的安全評估,確保其沒有安全隱患。

此外,其公司創始人Dr.Wang從硅谷帶回了移動安全的全新解決方案——“移動安全三戰法:加固、密信、風控”,對移動應用實現從發布到使用、從客戶端到會話再到安全風控的全程安全保護,或許能構建移動安全領域真正的SafeZone,讓安全成為應用的DNA,增強自身的防護能力。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM