浅谈Android应用安全防护和逆向分析之apk反编译

 更新时间:2021年06月08日 14:12:57   作者:handsome黄  
我们有时候在某个app上见到某个功能,某个效果蛮不错的,我们想看看对方的思路怎么走的,这时候,我们就可以通过反编译来编译该apk,拿到代码,进行分析。

概述

这里是Mac环境,如果是window环境的同学,在环境搭建和工具上可以选择Window环境的。先看看需要到的工具;

1、apktool:https://ibotpeaches.github.io/Apktool/install/

2、dex2jar:https://github.com/pxb1988/dex2jar

3、jd-gui:http://jd.benow.ca

注意:工具一定要是当前最新版本的,否则很容易出现一些莫名其妙的错误。

先看一下项目的包结构

然后在简单看MainActivity中的内容。(这里给出该类的内容,只是为了后期和反编译出来的内容做个对比)

好了,下面开始我们的反编译之路了 。我们一个一个工具来说。

安装apktool

当我们下载好apktool.jar以后,可能有的人会有后缀名,都改为apktool.jar,然后终端输入命令open /usr/local/bin,然后将apktool和apktool.jar移到/usr/local/bin文件夹下,就OK了,判断apktool是否安装成功,可以通过命令:apktool 来判断

如果出现红色圈的这一大片,则说明安装成功。

注意:dex2jar和jd-gui不需要安装,直接解压即可。

使用apktool反编译

1、首先使用命令:cd xxx/xxx/xxx (xxx/xxx/xxx代表apk的存放路径)

2、使用命令:apktool d app-debug.apk (app-debug.apk是你的apk名称)

到这一步以后,会在你存放apk包的路径下生成一个文件夹

进入文件夹,你会发现,有我们项目的资源文件和xml文件。那么代码呢???没有看到,别急

在执行一个命令:apktool b xxx (xxx代表刚刚我们生成的文件夹的名称)

执行完上面的命令以后,可以看到文件夹中多了一个build文件夹,而这个build文件夹下的classes.dex文件就是我们最终需要的。

好了,apktool的工作到这里就结束了,下面我们需要另外两个工具dex2jar,jd-gui。

dex2jar

1、使用命令:cd xxx/xxx/xxx (xxx/xxx/xxx代表dex2jar的路径)

2、使用命令:sh d2j-dex2jar.sh -f xxx/xxx/xxx (xxx/xxx/xxx代表classes.dex的路径)

然后在dex2jar文件夹下会生成classes-dex2jar.jar的架包,这个包,就是我们的Java文件代码。

那么怎么看代码呢?jd-gui上场了。打开jd-gui,直接将classes-dex2jar.jar拖进来,就可以可以看到了。

对比一下最前面的MainActivity代码全部被反编译出来了。

很多人就会说,你这个项目是demo,并没有做混淆,所以可以反编译出来??但是,需要知道的是,如果做了混淆,一样可以反编译出来,只不过说里面的很多类名,方法名,变量名等等都是以a,b,c这样的形式存在,但是这种并不影响能过看出你的代码逻辑,只是给阅读增加了一丝的难度而已。所以,项目做混淆,只是最基础的一种方式,还有很多很多我们需要考虑的。

以上就是浅谈Android应用安全防护和逆向分析之apk反编译的详细内容,更多关于Android应用安全防护和逆向分析之apk反编译的资料请关注脚本之家其它相关文章!

相关文章

  • Android实现EditText中添加和删除bitmap的方法

    Android实现EditText中添加和删除bitmap的方法

    这篇文章主要介绍了Android实现EditText中添加和删除bitmap的方法,实例分析了Android中EditText控件的bitmap操作技巧,需要的朋友可以参考下
    2016-01-01
  • 深入Android开发FAQ的详解

    深入Android开发FAQ的详解

    本篇文章是对Android开发FAQ进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • Android中的Adapter简单介绍

    Android中的Adapter简单介绍

    Android中的Adapter简单介绍,需要的朋友可以参考一下
    2013-06-06
  • Android多点触控技术实战 针对图片自由缩放和移动

    Android多点触控技术实战 针对图片自由缩放和移动

    这篇文章主要为大家详细介绍了Android多点触控技术实战,自由地对图片进行缩放和移动,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-10-10
  • Android巧用Fragment解耦onActivityResult详解

    Android巧用Fragment解耦onActivityResult详解

    这篇文章主要给大家介绍了关于Android巧用Fragment解耦onActivityResult的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-08-08
  • Android实现仪表盘控件开发

    Android实现仪表盘控件开发

    这篇文章主要为大家详细介绍了Android实现仪表盘控件开发,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-05-05
  • Android屏幕旋转之横屏竖屏切换的实现

    Android屏幕旋转之横屏竖屏切换的实现

    这篇文章主要介绍了Android屏幕旋转之横屏竖屏切换的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-10-10
  • Android仿开心消消乐大树星星无限循环效果

    Android仿开心消消乐大树星星无限循环效果

    这篇文章主要为大家详细介绍了Android仿开心消消乐大树星星无限循环效果,自定义view实现效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-07-07
  • Android中检查、设置默认程序详解

    Android中检查、设置默认程序详解

    这篇文章主要介绍了Android中检查、设置默认程序详解,本文讲解了检测是否有默认的程序、如果有默认程序、没有默认的程序的情况等内容,需要的朋友可以参考下
    2015-01-01
  • Android实现可点击的幸运大转盘

    Android实现可点击的幸运大转盘

    这篇文章主要为大家详细介绍了Android实现可点击的幸运大转盘,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-02-02

最新评论