zoukankan      html  css  js  c++  java
  • 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:FBYAPKapktool1.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:FBYAPKdex2jar-2.0)建议:路径中不要出现中文,避免出现未知问题。

     

    ④、在CMD中输入命令:d2j-dex2jar.bat   classes.dex

     

    ⑤、在该目录(D:FBYAPKdex2jar-2.0)下生成文件:classes-dex2jar.jar

    ⑥、使用工具jd-gui打开文件:classes-dex2jar.jar就可以看到源码了,如下图所示。

    四、安全测试修复建议:

    1、需要进行代码混淆,对该APK进行反编译,打开产生的jar包可以看到,多了好多a、b、c之类的类文件。说明混淆结果已经成功。

    如下图所示:

     

  • 相关阅读:
    c#处理3种json数据的实例
    Json to JObject转换的使用方法
    js 中对象属性特性的描述
    js 中对象属性的特性
    js 中对象--对象结构(原型链基础解析)
    js 中对象--属性相关操作
    js 的对象--如何定义一个对象
    js 中特殊形势的函数-匿名函数的应用
    js 默认的参数、可变的参数、变量作用域
    js 通过function来定义函数
  • 原文地址:https://www.cnblogs.com/51QA/p/15223188.html
Copyright © 2011-2022 走看看