实践APP安全性检测(⼀):APK反编译1、概述
APP安全性⼀般可以从以下⼏⽅⾯进⾏考量:
以及其他⼀些杂项(或者通⽤并不局限于APP的安全项):
本⽂讨论反编译问题。
2、APK反编译
安卓开发的APP,如果不做任何处理是很容易被反编译的。也就是说,⼀个APP的源代码可以轻易的被泄露。
对于商业软件⽽⾔,这当然是不可接受的。⽽作为测试团队,应该确保⾃⼰的产品能够妥善抵御反编译。
测试可以可以⾃⼰尝试反编译来进⾏验证,这是⼀种渗透性测试思维。
2.1 反编译⼯具
apktool
  作⽤:⽤于提取APK中的资源⽂件,⽐如图⽚⽂件和布局⽂件等。
dex2jar
  作⽤:将apk反编译成jar⽂件
jd-gui
  作⽤:查看dex2jar反编译得到的jar包中的源码
将以上⼯具包下载并放置到同⼀⽂件夹,解压其中的ZIP包。将待反编译的APK也放置进同⼀⽂件夹(⽅便起见)。
若官⽹下载有困难,以下是⼯具的⽹盘地址:
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
I: l
I: Loading resource table from file: C:\Users\ADMINI~1\AppData\Local\Temp\1.apk
I: Regular
I:
I: Decoding values */*
I: Baksmaling
I: Copying assets
I: Copying
I: Copying
执⾏完毕后,得到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⽂件
打开第⼀步准备的(⽆需安装)。
将第三步中得到的classes-dex2jar.jar拖拽进打开的界⾯中,即可查看jar包中源代码了。
3、防御和检测
现今对于APK反编译的应对⼿段主要有以下⼏种:安卓软件签名工具
代码混淆技术
签名⽐对技术
动态库技术
动态加载技术
第三⽅加固
作为审计和测试⽅,应该结合渗透性测试和代码审计,确定被测的产品已经加⼊了妥善的防御措施。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。