Android apk反编译

工具

反编译apk要用到很多工具,其中apktoll

工具作用下载地址
ApkToolGoolge官方提供的APK反编译工具十分强大, 是以下几个工具的综合体 https://ibotpeaches.github.io/Apktool/install/
dex2jar将dex文件转为jar包及.class文件 https://github.com/pxb1988/dex2jar
baksmali.jar将Odex文件转为Dex文件https://bitbucket.org/JesusFreke/smali/downloads
smali.jar将.smali文件重新打包转为Dex文件https://bitbucket.org/JesusFreke/smali/downloads
jadx可以将dex文件转化成Java源码https://github.com/skylot/jadx

还有大神把apktool封装成了可视化界面–androidkiller,这款软件很强大可以自己添加插件。可以自己更换apktool。

开始

我们用apktool反编译apk,也可以用Androidkiller.
apktool 使用方法:

$ apktool d test.apk
I: Using Apktool 2.2.1 on test.apk
I: Loading resource table...
I: Decoding AndroidManifest.xml with resources...
I: Loading resource table from file: 1.apk
I: Regular manifest package...
I: Decoding file-resources...
I: Decoding values */* XMLs...
I: Baksmaling classes.dex...
I: Copying assets and libs...
I: Copying unknown files...
I: Copying original files...
$ apktool b test
I: Using Apktool 2.2.1 on test
I: Checking whether sources has changed...
I: Smaling smali folder into classes.dex...
I: Checking whether resources has changed...
I: Building resources...
I: Building apk file...
I: Copying unknown files/dir...

apktool d test.apk 会反编译apk。
成功后你能找到 smali 文件夹。其中都是smali文件。我们可以修改smali文件,达到我们的目的然后再打包成apk,再重新签名就可以了。
smali文件有些人可能看不懂,它使用的是smali指令。可以百度该指令的语法。
smali 文件可以直接编辑,然后重新打包,打包好后要在签名才可以使用。
smali 可以转化成java代码,在Androidkiller中可以一键转化。
其实apk文件就是一个zip压缩包,大家可以直接解压出来。先把apk后缀名修改为zip,用解压工具解压出来就可以了。解压出来之后可以看到资源文件,但是这个不是我们的目的。还有一个dex文件。smali文件就是通过这个文件得到的。这个才是重点。用jadx工具可以直接吧dex文件转化成java文件。
现在你已经知道怎么获取dex文件和smali文件了。smali文件可以直接修改。dex文件可以转化成java文件。大家对照着慢慢分析。你可能发现所有的变量名称都变成了毫无意义的名字。那是因为对方使用了混淆技术。大家将就着慢慢看吧。

加固后的apk

如果你通过上面的的方法能够得到dex文件,能都看到java代码。那么你算幸运的。一般来说现在都会使用加固软件进行加固。比如 360加固,腾讯的乐固、梆梆加固等等,这些工具就是会加密dex文件。加密了的dex文件你自然就不发转化成smali,也无法转化成java了。如果你得到的apk被加固了。那么你首先得脱壳。关于脱壳网上有很多文章,过程较为复杂。

由于加固工具比较多,而且加固工具的版本也一直在更新。所以脱壳工具不一定好用。

待续

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值