码迷,mamicode.com
首页 > 移动开发 > 详细

【Android】Android如何对APK反编译

时间:2017-12-05 13:32:55      阅读:169      评论:0      收藏:0      [点我收藏+]

标签:获得   img   分享图片   图片   lan   aapt   获取   作用   dex   

本文笔者粗略的介绍如何利用一些工具,对Android进行反编译,从而得到源码,希望对你有所帮助,笔者的android环境为4.4.2。

1.准备资源.

在开始之前,需要准备三项工具:
apktool 
     作用:资源文件获取,可以提取出图片文件和布局文件进行使用查看

dex2jar
     作用:将apk反编译成java源码(classes.dex转化成jar文件)

jd-gui
     作用:查看APK中classes.dex转化成出的jar文件,即源码文件

 

2.获取资源文件

使用apktool这个工具获取资源文件,下载apktool 会获得三个文件:aapt.exe、apktool.bat、apktool.jar 、

接下来将需要反编译的APK文件放到该目录下,
打开命令行界面(运行-CMD) ,定位到apktool文件夹,输入以下命令: apktool.bat d -f test.apk test   

技术分享图片

(命令中test.apk指的是要反编译的APK文件全名,test为反编译后资源文件存放的目录名称,即为:apktool.bat   d  -f    [apk文件 ]   [输出文件夹])

技术分享图片

说明获取成功,之后发现在文件夹下多了个test文件,点击便可以查看该应用的所有资源文件了。

打开资源文件后,可以看到里面有res和smali文件夹,res文件夹中放的是图片和XML等一些文件资源,smali里面放的是代码,文件都是.smali格式的,不方便阅读。

如果你想将反编译完的文件重新打包成apk,那你可以:输入 apktool.bat b test(你编译出来文件夹) 便可,效果如下:
技术分享图片
之后在之前的test文件下便可以发现多了2个文件夹:

dist(里面存放着打包出来的APK文件)

3.获取Java源码文件

第二步获得的smali文件不方便阅读,接下来获取源码。

下载好dex2jar和jd-gui后 ,解压

将要反编译的APK后缀名改为.rar或则 .zip,并解压,得到其中的额classes.dex文件(它就是java文件编译再通过dx工具打包而成的),

将获取到的classes.dex放到之前解压出来的工具dex2jar-0.0.9.15 文件夹内,
技术分享图片


在命令行下定位到dex2jar.bat所在目录,输入 dex2jar.bat classes.dex ,效果如下:
技术分享图片

被混淆过的效果图(类文件名称以及里面的方法名称都会以a,b,c....之类的样式命名):

技术分享图片

 

这种方式可以反编译,但是经过笔者的测试,发现反编译后的源码文件,或多或少都有一些错误。

 

原文链接:Android APK反编译

 

【Android】Android如何对APK反编译

标签:获得   img   分享图片   图片   lan   aapt   获取   作用   dex   

原文地址:http://www.cnblogs.com/HDK2016/p/7986201.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!