NO.4 Android反編譯傻瓜三件套

本來以為會是個透明小專欄,然而現在居然已經有5個關注者了。滿足,繼續寫下去。

在會用了AppScan,能寫漏洞掃描報告之後。導師跟我說讓我看看安卓App反編譯的東西。扔給了我三個工具:Apktool,dex2jar,JD-GUI. 要我說就是安卓反編譯傻瓜三件套,為什麼呢?因為就跟AppScan一樣,你幾乎不需要懂任何一點反編譯的原理,你只要按照說明去進行操作。如果一個安卓Apk沒有做任何防止反編譯的措施的話,那它的源碼就會毫無保留的暴露在你面前了,嚇人不,不過這都是後話了。

拿到這三個工具之後先去查了一下這仨都是什麼。

Apktool是谷歌提供的反編譯工具,使用這個工具可以將apk文件處理成人類可以閱讀的模式。就跟解壓縮了一樣,會在目標位置生成這個apk的文件夾。可以通過文件夾內部的文件查看這個app的設計布局之類的信息,因為我不懂安卓開發所以對我來說並沒有什麼卵用。但是對於圖謀不軌的人,如果只用這種傻瓜版工具就進行能反編譯的話,那這個app肯定稱不上是安全的吧,開發者要注意了。

下面兩個工具結合在一起可以查看程序的源碼,把Apk文件改成壓縮文件的格式之後直接解壓,找到文件夾內部的classes.dex文件,這應該就是存放源碼的文件吧?不懂安卓開發所以不確定。把這個文件用dex2jar進行一步處理,將其變成一個classes.dex2jar文件。然後打開JD-GUI這個工具用其打開剛剛生成的jar文件,源碼就赤裸裸的呈現在你面前了。

當然防止反編譯的手段有很多很多,只要做了一點些許的安全工作,都不至於會被傻瓜三件套直接反編譯成功。但是!我安裝好這三個工具之後想要找個app試試,導師本意是讓我去測公司內部的app,但是當時還沒給我apk文件。我就打開了某個安卓應用市場隨便下了個排名第一的一個,什麼菜譜的App然後試了一下。然後,嗯,很不錯的練手app,非常順暢的看到了它的所有源碼。。。現在大家的安全意識還是不夠啊。。。

之後拿到公司產品的apk就比較束手無策了,用了某三個數字安全公司提供的App加密服務,apktool反編譯直接提示失敗。用dex2jar生成的jar文件在JD-GUI里打開發現大部分代碼都被隱藏了,露出來的少部分代碼也都做了代碼混淆。

正常編程的時候我們可能會把函數變數設置成人類可以看懂的語言,什麼login啊,usrname之類的。代碼混淆的意思就是把這些有意義的字元串全部替換成無意義的字元串,1、2、3、4、abcd之類的。就算拿到源碼,也不知道每個函數是什麼意思。當然只做代碼混淆肯定hi不夠的因為邏輯關係沒有改變,如果有足夠大的動力去驅使,其實反編譯也不是特別困難。代碼隱藏貌似術語稱之為「加殼」

我後來的大部分時間都在跟這個殼做鬥爭。。。如何將apk脫殼。拖這個的福讓我知道了很多不錯的論壇。吾愛破解,看雪等等,花了大量的時間在上面看如何脫殼,雖然技術並不全懂,但也試著一點一點去弄,廢了九牛二虎之力,知道了什麼叫動態脫殼,學用IDA,嘗試把想要的東西從內存里dump出來,還順便回顧了一下彙編語言。。。感覺頭髮都要掉了。然而最後還是,失敗啦~主要是因為我沒有合適的測試機所以就沒繼續往下試了。。。然後跟導師說我覺得這個加殼應該已經夠安全了除非破解之後給我十萬塊錢不然我是不會費這個勁去破解的。。。當然如果願意冒法律風險的話說不定破解之後加入黑色產業鏈能賺的多得多呢。。。我就不想了,反正我暫時也破解不了。

第一次用三件套去嘗試加殼的apk失敗了之後我跟導師說,失敗了。導師說你嘗試找找有沒有什麼方法能夠破解這個加殼,然後你知道如何破解之後,再去想如何把漏洞修補上,進行進一步加密,之後再去嘗試破解。雖然我連脫殼這步都沒做到。。。不過這兩天的工作還是有收穫的。

在研究加殼與脫殼相對抗的過程中很直觀的讓我認識到根本沒有絕對的安全。很多公司在做apk加密的安全產品,在剛面世的時候能抵禦大部分攻擊,然而在我尋找脫殼方法的時候,總能看到他們的加殼被各種大神用各種奇淫巧技將其破解,之後安全公司的人員再去修復進行進一步加密,推出新版本,然後再被破解。作為安全人員我們在其中所能追求的只是一個攻與防的動態平衡而已,讓風險值處在一個可控範圍之內,就是最好的了。

嗯,這篇就寫到這裡吧。最近在學nmap跟metaspoilt framework的使用,這倆現在給我的感覺功能很強大,使用起來也挺複雜的。。。反正我現在,也就剛摸個門兒吧還沒進去呢。。。下一篇寫一下接觸學習kali Linux的心得好了。(好像真的在腳本小子的道路上越走越遠了,Oh No)

Engineering For The Win.

推薦閱讀:

高清視頻中的手部特寫豈不是會暴露名人的指紋?
能否從根本上建立一個高度安全的網路安全體系而不是在攻擊發生後對網路犯罪進行追蹤?
使用LuaQEMU對BCM WiFi框架進行模擬和利用
如何從物理隔離設備里偷出數據?研究人員再次花式秀技
PHP應用程序在MVC模式中構建安全API

TAG:信息安全 | 反编译 |