Apktool反编译

一直以来打包apk都是使用第三方的加固工具,最近比较闲,想折腾一下怎么混淆apk,在这之前需要对apk怎么反编译有一定的了解,这篇文章就是介绍关于如何反编译apk。笔者文采能力有限,如有错误请见谅。反编译有以下两方面的内容:

第一:利用apktool查看apk的xml文件、AndroidManifest.xml和图片等。

第二:如何查看java(dex)源码,如果混淆了,看到的源码就是a、b之类的。

首先我们先来看第一条,其实apktool官网就有介绍了(官网链接:https://ibotpeaches.github.io/Apktool/install/),

这里我只讲解window平台下的(没空去折腾那么多哈),如下如:

从官网上截下来

首先我在本地F盘的Android文件夹下新建了个apktool文件夹(下面有用到)。

第一步,就是要让我们下载apktool.bat,把鼠标移至wrapper script上,然后右击,链接另存为…,把下载来的文件放到F:\Android\apktools,记得名字要改成apktool.bat;

第二步,下载apktool.jar文件,点击find newest here,跳到下载页,我们能尽量下载最新版本,旧版本可能不能用(目前百度出来的反编译博文很多都提供apktool.jar下载,但是由于版本太旧,无法反编译),我这里下载最新版本apktool_2.3.1.jar,也把该文件刚到apktool文件夹下。

第三步:把你下载来的jar文件(笔者下载的最新版本apktool_2.3.1.jar)重新命名为:apktool.jar。

第四步:官网建议你把apktool.bat、apktool.jar放到C盘的Windows下,但是我没有,我是放在F盘的apktool文件夹下,为什么不能按着官网的步骤来呢,请看第5步。

第五步:按官网的意思是如果你没把apktool.bat、apktool.jar放到C盘的Windows下,就需要我们自行配置环境变量,因为如此,所以我需要自己配置环境变量,我是win10系统,如下图:

环境变量

经过上面5步,我们环境就搭建好了,下面就是如何使用了,win+R,输入cmd调出命令行窗口,切换到apktool文件夹目录下:

cmd窗口

接下来你把apk拷贝到F:\Android\apktools下面,我这里是app-release.apk,如图:

效果图

然后你在cmd窗口输入命令,如图:

效果图

按回车,如下图:

效果图

这样就表示成功了,我们就可以在F:\Android\apktools发现一个新的文件夹app-release(这个文件夹的文字跟你的apk名字一样),里面我们就可以看到xml文件、AndroidManifest.xml和图片等资源文件了。

现在我们来说说如何查看dex里面的java代码,经过上面的步骤,我们可以在文件夹app-release中发现一个文件夹smali,这里面其实就java代码,只不过不是jar形式的,关于如何查看java源码,其实很简单的,如下:

第一步:把你的apk后缀名改为zip,然后解压后,就会发现有个classes.dex,这里面就是java源码了。

第二步:我们需要吧dex文件转为jar格式的文件,用到了一个工具叫dex2jar(下载链接),我们把它下载来后解压(下载来后是zip文件)。

第三步:我解压后是放在F:\Android\apktools\dex2jar-2.0目录下,现在把dex文件拷贝到该目录下。

第四步:cmd窗口进入F:\Android\apktools\dex2jar-2.0,然后输入命令:d2j-dex2jar.bat classes.dex回车,如下图:

效果图

完成后我们在F:\Android\apktools\dex2jar-2.0目录下就会多了个classes-dex2jar.jar文件,这个就是我们需要的jar文件,接下来就是如何查看java代码了,这里笔者借用一个工具jd-gui(下载链接),下载完解压(这里选择window平台),然后用它打开classes-dex2jar.jar就可以了,如果你的apk经过混淆,那么看到的都是a、b之类的。

以上就是个人反编译apk的过程了。

转载原文

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值