Android APK反编译技巧深入讲解

 更新时间:2019年05月15日 09:22:04   作者:Geeksongs   我要评论

这篇文章主要给大家介绍了关于Android APK反编译技巧的相关资料,文中通过示例代码介绍的非常详细,对各位Android开发者们具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧

导言:

在我们安卓开发当中,我们不仅需要掌握基础的开发技能,也需要掌握软件的安全技能,这样才可以让我们的软件能够成为一款能够真正可以进行发布的软件,同时也可以让自己的核心技术不会被别人所盗取。首先我们应当了解的是,对于反编译我们一共需要三个工具,它们分别是:APKTool,dex2jar,和jd-gui。APKTool:用于解析apk的res文件以及AndroidManifest.xml文件dex2jar:用于把apk解压后生成的classes.dex文件解析为后缀为jar的文件,与下面的jd-gui工具联合使用则可以得到我们的核心Java代码jd-gui:将上一步所得到的jar文件解析为Java文件,从而得到软件的核心代码

这就是反编译的核心流程,凡是没有被MD5算法加密,或者加固过的APK都可以利用这个方法来进行反编译破解。

第一步.来到官网下载APKtool

网址:https://ibotpeaches.github.io/Apktool/install/

界面如下:

我们需要把下载的两个文件都放在同一个文件夹下,这个文件夹可以自己进行选择或者新建,本人这里在E盘下创建了一个androidsafe的文件夹用于保存这个工具,点击第二个链接之后会出现如下界面:

第二步.将需要进行反编译的文件放到刚刚我们创建好的那个文件夹下

此时我们的E:/androidsafe文件夹下只有这三个文件,同时我们也需要把下载的第二个文件apktool-2.4.0.jar更改成apktool.jar,不然是无法运行这个工具的。同时把需要反编译的apk文件移动到这个文件夹下。

第三步.开始反编译

键盘输入win+r,进入cmd的windows命令行模式。

利用cd命令将命令行模式进入刚刚创建的这个文件夹下,

再输入:

apktool d 您拿到这个文件夹下的需要反编译的apk文件名.apk

如下图所示:

这样我们的反编译过程就完成了。

我们再来看看刚刚我们所创建的文件夹就会多出一个名为appdebug的文件了:

文件目录如下:


可以说是十分成功了。其中的res文件夹是程序当中的所有资源文件,smali文件夹下存放了程序所有的反汇编代码。apktool这个工具主要是用来解析资源res和资源AndroidManifest.xml的,除此之外的,我们还需要另外的工具来解析Java源码,利用下以下两个工具则可以用于解析Java源代码,它们分别是:dex2jar和jd-gui.

第四步.将apk文件解析为后缀为dex的文件

1.首先我们把刚刚用于解析的apk文件的后缀改为zip,然后随便用一个你已经安装过的压缩包软件把它解压就可以了

2.解压之后你会在解压之后的文件当中发现一个名为:classes.dex的文件,这样就把apk的dex文件得到啦!如下图所示:

第五步.利用dex2jar工具把dex文件解析成后缀为jar的文件

dex2jar的下载网址是:https://bitbucket.org/pxb1988/dex2jar/downloads/

1.下载到我们刚刚安装apktool的文件夹下,然后解压,更改解压后的文件名为dex2jar

2.将刚刚所得到的classes.dex文件剪切到dex2jar文件夹下,如下图所示:

3.打开命令行cmd模式,利用cd命令将目录切换到dex2jar的文件夹下,同时键入以下代码:

d2j-dex2jar.bat classes.dex

这个时候返回文件夹,立刻就可以看到在classes.dex文件夹下就多了个jar文件了。

第六步.将jar文件解析为Java文件

下面就来到最激动人心的一步,得到我们的Java文件啦!

首先下载jd-gui,网址如下:

https://github.com/java-decompiler/jd-gui/releases/

这里windows版本的就直接下载后解压,解压后点击后缀为exe的可执行文件打开就是了,再将jar文件拖进去就好啦!:
如下图所示:

反编译的步骤还是挺简单的,但是如果被加密后再进行反编译难度就大了。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。

相关文章

  • Android开发之禁止下拉通知栏的方法

    Android开发之禁止下拉通知栏的方法

    这篇文章主要介绍了Android开发之禁止下拉通知栏的方法,实例分析了Android权限控制与Activity相应设置技巧,需要的朋友可以参考下
    2016-01-01
  • Android ViewFlipper简单用法解析

    Android ViewFlipper简单用法解析

    这篇文章主要为大家详细介绍了Android ViewFlipper简单用法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-09-09
  • Android UI设计系列之自定义DrawView组件实现数字签名效果(5)

    Android UI设计系列之自定义DrawView组件实现数字签名效果(5)

    这篇文章主要介绍了Android UI设计系列之自定义DrawView组件实现数字签名效果,具有一定的实用性和参考价值,感兴趣的小伙伴们可以参考一下
    2016-06-06
  • Android中获取状态栏高度的两种方法分享

    Android中获取状态栏高度的两种方法分享

    在android应用中,有时需要计算个View的位置,导致需要计算状态栏高度。为以后方便,在此做个简单记录。下面这篇文章主要介绍了Android中获取状态栏高度的两种方法,两种方法分别给出了示例代码,有需要的朋友可以参考借鉴。
    2017-02-02
  • Android 自定义Button控件实现按钮点击变色

    Android 自定义Button控件实现按钮点击变色

    这篇文章给大家介绍了android 自定义Button控件实现按钮点击变色的代码,本文给大家附有注释,非常不错,代码简单易懂,对android按钮点击变色的实现感兴趣的朋友参考下吧
    2016-11-11
  • Android View教程之自定义验证码输入框效果

    Android View教程之自定义验证码输入框效果

    这篇文章主要给大家介绍了关于Android View教程之自定义验证码输入框效果的相关资料,文中通过示例代码介绍的非常详细,对各位Android开发者们具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-05-05
  • Android编程实现分页加载ListView功能示例

    Android编程实现分页加载ListView功能示例

    这篇文章主要介绍了Android编程实现分页加载ListView功能,结合实例形式分析了listview分页加载的原理、实现技巧与相关注意事项,需要的朋友可以参考下
    2017-02-02
  • 详解Android6.0运行时权限管理

    详解Android6.0运行时权限管理

    自从Android6.0发布以来,在权限上做出了很大的变动,不再是之前的只要在manifest设置就可以任意获取权限,而是更加的注重用户的隐私和体验。本文详细介绍了Android6.0运行时权限管理。需要的朋友一起来看下吧
    2016-12-12
  • Android 情景模式的设置代码

    Android 情景模式的设置代码

    Android 情景模式的设置代码,需要的朋友可以参考一下
    2013-05-05
  • Android仿人人网滑动侧边栏效果

    Android仿人人网滑动侧边栏效果

    这篇文章主要为大家详细介绍了Android仿人人网滑动侧边栏效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-09-09

最新评论