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之类的类文件。说明混淆结果已经成功。

如下图所示:

 

 

 

posted @ 2021-09-03 15:12  51QA  阅读(250)  评论(0编辑  收藏  举报