Android反编译&Android安全测试
目的:
1、借鉴别的应用是怎么开发的,为了促进开发者学习,提升自我开发水平。
2、测试用来验证自己公司应用是否安全,被反编译存在安全隐患。
备注:前置对应Apk没有代码混淆才可以反编译成功,如果代码混淆后,查看不到源码,代码混淆,对该APK进行反编译,打开产生的jar包可以看到,多了好多a、b、c之类的类文件,说明混淆结果已经成功。
一、测试环境:
Wind10
二、使用工具:
1、apktool
①、下载地址:
链接:https://pan.baidu.com/s/1N0P6yEtu2jwLTlem-OZnlQ
提取码:51QA
②、apktool工具说明:资源文件获取,可以提取出图片文件和布局文件进行使用查看
2、dex2jar
①、下载地址:
链接:https://pan.baidu.com/s/1-qKkqMDJvBZogDQms5_GBA
提取码:51QA
②、dex2jar工具说明:将apk反编译成java源码(classes.dex转化成jar文件)
3、jd-gui
①、下载地址:
链接:https://pan.baidu.com/s/1lOn1uD_uKf-BarvUMgM0rA
提取码:51QA
②、jd-gui工具说明:查看APK中classes.dex转化成出的jar文件,即源码文件
三、反编译流程
1、资源文件获取,可以提取出图片文件和布局文件进行使用查看
①、使用工具apktool,下载apktool工具后,解压后:apktool1.5.2
得到文件
②、进入文件得到把要编译包(Apk)放到该文件夹下。
如下图所示:
③、打开命令行页面(运行-CMD-回车或Win键+R调出运行-CMD-回车),定位到apktool文件夹,我的工具放在D盘(D:\FBYAPK\apktool1.5.2)建议:路径中不要出现中文,避免出现未知问题。
然后输入命令:apktool.bat d -f Ahpj.apk Ahpjtest
说明:命令中Ahpj.apk指的是要反编译的APK文件全名,Ahpjtest为反编译后资源文件存放的目录名称,即为:apktool.bat d -f [apk文件 ] [输出文件夹]
④、反编译成功,apktool文件中会多出文件:Ahpjtest
⑤、如果你想将反编译完的文件重新打包成apk,那你可以:输入apktool.bat b Ahpjtest(你编译出来文件夹)即可【经测试没有成功,如果有兴趣可以研究下】
2、将apk反编译成java源码
①、解压工具中的dex2jar和jd-gui
将要反编译的APK后缀名改为.rar或则 .zip,并解压(建议单独创建一个文件夹解压,解压出来的文件比较多),得到其中的额classes.dex文件(它就是java文件编译再通过dx工具打包而成的),将获取到的classes.dex放到之前解压出来的工具dex2jar-0.0.9.15 文件夹内。
②、把classes.dex文件放到工具dex2jar-2.0下面
③、打开命令行页面(运行-CMD-回车或Win键+R调出运行-CMD-回车),定位到dex2jar-2.0文件夹,我的工具放在D盘(D:\FBYAPK\dex2jar-2.0)建议:路径中不要出现中文,避免出现未知问题。
④、在CMD中输入命令:d2j-dex2jar.bat classes.dex
⑤、在该目录(D:\FBYAPK\dex2jar-2.0)下生成文件:classes-dex2jar.jar
⑥、使用工具jd-gui打开文件:classes-dex2jar.jar就可以看到源码了,如下图所示。
四、安全测试修复建议:
1、需要进行代码混淆,对该APK进行反编译,打开产生的jar包可以看到,多了好多a、b、c之类的类文件。说明混淆结果已经成功。
如下图所示: