Android

关注公众号 jb51net

关闭
首页 > 软件编程 > Android > Android应用安全防护和逆向分析之apk反编译

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

作者: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反编译的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:
阅读全文