實踐APP安全性檢測(一):APK反編譯


1、概述

APP安全性一般可以從以下幾方面進行考量:

 

 以及其他一些雜項(或者通用並不局限於APP的安全項):

 

 本文討論反編譯問題。

2、APK反編譯

安卓開發的APP,如果不做任何處理是很容易被反編譯的。也就是說,一個APP的源代碼可以輕易的被泄露。

對於商業軟件而言,這當然是不可接受的。而作為測試團隊,應該確保自己的產品能夠妥善抵御反編譯。

測試可以可以自己嘗試反編譯來進行驗證,這是一種滲透性測試思維。

 

2.1 反編譯工具

  • apktool

  作用:用於提取APK中的資源文件,比如圖片文件和布局文件等。

  下載:https://bitbucket.org/iBotPeaches/apktool/downloads/

 

  • dex2jar

  作用:將apk反編譯成jar文件

  下載:https://sourceforge.net/projects/dex2jar/files/

 

  • jd-gui

  作用:查看dex2jar反編譯得到的jar包中的源碼

  下載:http://java-decompiler.github.io/

 

 將以上工具包下載並放置到同一文件夾,解壓其中的ZIP包。將待反編譯的APK也放置進同一文件夾(方便起見)。

 

若官網下載有困難,以下是工具的網盤地址:

鏈接:https://pan.baidu.com/s/18YGxwVX9KNnRU3rm3qvOUg
提取碼:zskt

2.2 apktool提取資源文件

打開windows命令行,CD進入上一步中的目錄。

第一步使用apktool進行資源文件提取,命令語法:

java -jar [apktool_2.3.4.jar] d -f [apk地址] -o [輸出目錄]

執行效果:

C:\Users\Administrator\Desktop\APKrecompile>java -jar apktool_2.3.4.jar d -f 檢測包09111134.apk -o 09111134
I: Using Apktool 2.3.4 on 檢測包09111134.apk
I: Loading resource table...
I: Decoding AndroidManifest.xml with resources...
I: Loading resource table from file: C:\Users\ADMINI~1\AppData\Local\Temp\1.apk
I: Regular manifest package...
I: Decoding file-resources...
I: Decoding values */* XMLs...
I: Baksmaling classes.dex...
I: Copying assets and libs...
I: Copying unknown files...
I: Copying original files...

執行完畢后,得到APK反編譯提取的資源文件:

 

 

2.3 dex2jar反編譯得到Jar包

 將APK后綴名改寫為ZIP,打開此ZIP文件,提取出其中的class.dex:

 

這個文件實際上就是java源文件使用dx工具打包而來的,而dex2jar(dex to jar)顧名思義就是將dex文件轉換回jar

將classes.dex放置進第一步准備好的dex2jar文件夾中。

命令行中,進入該文件夾,輸入命令:

d2j-dex2jar classes.dex

執行效果:

d2j-dex2jar classes.dex
dex2jar classes.dex -> .\classes-dex2jar.jar

執行完畢后,得到反編譯而來的classes-dex2jar.jar文件:

 

 

2.4 jd-gui查看jar文件

打開第一步准備的jd-gui.exe(無需安裝)。

將第三步中得到的classes-dex2jar.jar拖拽進打開的界面中,即可查看jar包中源代碼了。

 

 

3、防御和檢測

現今對於APK反編譯的應對手段主要有以下幾種:

  • 代碼混淆技術 
  • 簽名比對技術 
  • 動態庫技術 
  • 動態加載技術
  • 第三方加固

作為審計和測試方,應該結合滲透性測試和代碼審計,確定被測的產品已經加入了妥善的防御措施。


免責聲明!

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



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