大家好,欢迎来到IT知识分享网。学习和开发Android应用有一段时间了,今天写一篇博客总结一下Android的apk文件反编译。我们知道,Android应用开发完成之后,我们最终都会将应用打包成一个apk文件,然后让用户通过手机或者平板电脑下载下来进行安装。正常情况下,Android应用打包成apk之后,就无法再看到开发这个应用时使用的资源文件以及代码了。但是我们通过网上提供了一些工具,还是可以将apk进行反编译的,apk反编译之后,我们就可以看到开发这个应用使用的资源文件(图片)、layout、样式、相关的实现代码等,apk反编译也算是Android开发中一个比较实用的技巧吧,当我们对别人开发好的应用感兴趣时,我们就可以通过这种技术手段将别人打包好的apk进行反编译,继而可以看到我们感兴趣的内容,
(注:反编译不是让各位开发者去对一个应用激活成功教程搞重装什么的,主要目的是为了促进开发者学习,借鉴好的代码,提升自我开发水平。)下面就来说说如何将一个apk反编译出来。
一、准备必要工具
工欲善其事,必先利其器,首先我们要下载好反编译apk时需要的相关工具
1.1、使用工具
- apktool (资源文件获取)
- dex2jar(源码文件获取)
- jd-gui (源码查看)
1.2、工具介绍
apktool
作用:资源文件获取,可以提取出图片文件和布局文件进行使用查看
dex2jar
作用:将apk反编译成java源码(classes.dex转化成jar文件)
jd-gui
作用:查看APK中classes.dex转化成出的jar文件,即源码文件
1.3工具下载
apktool下载地址:https://bitbucket.org/iBotPeaches/apktool/downloads
下载好之后得到一个如下图所示的jar文件
dex2jar下载地址:http://sourceforge.net/projects/dex2jar/files/
下载完成之后,得到一个如下图所示的压缩包
jd-gui下载地址:http://jd.benow.ca/
下载完成之后,得到一个如下图所示的压缩包:
到此,需要使用到的3个相关工具都下载好了,在这里说明一下jd-gui的下载,我从官方网站上点击![APK反编译[通俗易懂]插图15 APK反编译[通俗易懂]](https://haidsoft.com/wp-content/uploads/2022/11/2022112316405970.jpg)
但是多试几次又可以下载了,所以如果有遇到这个问题的朋友们不妨多试几次,或者从别的地方下载jd-gui,jd-gui算是做Java开发的一个必备工具了,用它来将class反编译成java源代码是非常方便的,网上搜索一下一般都可以下载到,只不过版本不一定是最新的。
二、Apk反编译流程
为了方便进行反编译,我们将上述下载好的3个工具统一放到一个文件夹中,例如:
然后将【dex2jar-2.0.zip】和【jd-gui-windows-1.3.0.zip】分别解压到当前文件夹,如下图所示:
2.1、使用apktool反编译apk得到图片、XML配置、语言资源等文件
进入CMD命令行,如下:
切换到上述的3个工具的所在目录,如:E:\AndroidDevelopTool\Android反编译工具包
接下来我们要做的就是运行apktool_2.0.1.jar这个jar文件来将apk文件进行反编译,在java中,运行可执行jar包的命令是:
java -jar jar包名.jar
IT知识分享网
使用如下的命令运行apktool_2.0.1.jar反编译MMTS-release-1.0.2.apk
IT知识分享网java -jar apktool_2.0.1.jar d -f E:\AndroidDevelopTool\Android反编译工具包\测试apk\MMTS-release-1.0.2.apk -o MMTS
这个命令是启动apktool_2.0.1.jar将位于【E:\AndroidDevelopTool\Android反编译工具包\测试apk\】目录下的”MMTS-release-1.0.2.apk”这个apk反编译,然后将反编译生成的文件存放到当前目录(apktool_2.0.1.jar所在的目录,也就是”E:\AndroidDevelopTool\Android反编译工具包”目录)下的一个【MMTS】文件夹中。这个文件夹的名字是可以随便取的,喜欢叫啥都行。
执行反编译操作:
反编译成功后,会在当前目录(E:\AndroidDevelopTool\Android反编译工具包)下生成一个MMTS文件夹,打开MMTS里面就有反编译后生成的文件,如下图所示:
打开MMTS文件夹,就可以看到反编译后的生成的文件,如下图所示:
生成的文件和文件夹当中,我们关心的是【res】文件夹中和AndroidManifest.xml文件,打开res文件夹,里面就有我们想要看到的东西了,如下图所示:
想查看哪个xml文件就使用文本编辑器打开看看吧,反正全部都可以看到了。以上就是使用apktool这个工具将一个apk反编译得到图片、XML配置、语言资源等文件的过程。
2.2、使用dex2jar反编译apk得到Java源代码
将要反编译的APK后缀名改为.rar或者 .zip,并解压,得到其中的classes.dex文件(它就是java文件编译再通过dx工具打包而成的),如下图所示:
将获取到的classes.dex放到之前解压出来的工具【dex2jar-2.0】文件夹内,如下图所示:
在命令行下定位到dex2jar.bat所在目录,输入”d2j-dex2jar classes.dex“,效果如下:
命令执行完成之后,在当前目录下就可以看到生成的Jar文件了,如下图所示:
反编译classes.dex得到classes-dex2jar.jar文件之后,就可以使用【jd-gui】工具将class文件反编译成java源代码了
使用jd-gui打开classes-dex2jar.jar就可以看到源代码了,如下图所示:
JD-GUI虽然可以将class反编译成java源代码,但是对于一些被混淆过的class,反编译的效果就不是那么理想了,被混淆过的class反编译后的效果图(类文件名称以及里面的方法名称都会以a,b,c….之类的样式命名):
以上步骤是我亲自实践过之后一步步整理出来的,对照着做应该不会有太大问题。
三、Apk反编译注意问题
3.1、apktool版本太旧导致反编译失败的问题
之前用过了apktool这个工具的一些旧版本,发现总是反编译不成功,在执行反编译时会出现如下错误:
Exception in thread “main” brut.androlib.AndrolibException: Could not decode arsc file
这个问题是因为apktool版本过低导致,而解决这个问题的办法就是使用最新版本的apktool就可以了,最新版本的下载地址:https://bitbucket.org/iBotPeaches/apktool/downloads
3.2、apktool执行反编译命令出现”Input file was not found or was not readable”的问题
这个问题是因为apktool升级到2.0以上时,使用方式已经替换,格式为:apktool d [-s] -f <apkPath> -o <folderPath>
好了,关于反编译apk的内容就这么多了。
最后,给大家分享我下载好的那三个相关工具,下载地址:http://pan.baidu.com/s/1jGKSQyU
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/7564.html
![APK反编译[通俗易懂]插图1 APK反编译[通俗易懂]](http://qn.javajgs.com/20230105/a2e04ce2-a9cd-4626-a28a-dc07d2d0cf04202301054c5ece23-c917-4253-8f64-be7db8b60e801.jpg)
![APK反编译[通俗易懂]插图3 APK反编译[通俗易懂]](http://qn.javajgs.com/20230105/869f2126-1989-452c-8281-c5b1ad679b6620230105ad860135-b962-4650-b0a8-9cd9ff9b72e81.jpg)
![APK反编译[通俗易懂]插图5 APK反编译[通俗易懂]](http://qn.javajgs.com/20230105/0f7d140c-070f-4817-8f02-d891c466051420230105ba910d13-a978-4741-8d0b-fd1312183aad1.jpg)
![APK反编译[通俗易懂]插图7 APK反编译[通俗易懂]](http://qn.javajgs.com/20230105/d9ee2971-dd8c-4b11-9685-1def6492fe93202301052018a1cc-8b70-4c22-a6f2-6b6615f332c01.jpg)
![APK反编译[通俗易懂]插图9 APK反编译[通俗易懂]](http://qn.javajgs.com/20230105/1f0c3717-5352-4769-adb5-fa42b5cb6d5320230105eb8dec1b-69e3-43d2-acd5-5c458ccda25f1.jpg)
![APK反编译[通俗易懂]插图11 APK反编译[通俗易懂]](http://qn.javajgs.com/20230105/4757e982-957c-4ccc-b176-f78fcce9ae5b202301051cc846fb-5ccb-42b5-b5d6-b046b496bfba1.jpg)
![APK反编译[通俗易懂]插图13 APK反编译[通俗易懂]](http://qn.javajgs.com/20230105/fcc4d727-3db7-4276-b392-819de4f53ab1202301050676879e-f7f1-4a6c-89de-5161176221631.jpg)
![APK反编译[通俗易懂]插图17 APK反编译[通俗易懂]](http://qn.javajgs.com/20230105/c65245ef-2333-43be-a8f0-6bee5d3e587a202301054ff27958-8d38-4feb-b998-90ea7e91c5c71.jpg)
![APK反编译[通俗易懂]插图19 APK反编译[通俗易懂]](http://qn.javajgs.com/20230105/774807f4-5d59-4831-b020-af9ba9b655c1202301056730ada7-6298-49fd-ac6d-36e0ed56fd2a1.jpg)
![APK反编译[通俗易懂]插图21 APK反编译[通俗易懂]](http://qn.javajgs.com/20230105/e88243b4-c9d8-4daf-8d9b-081c0450e7b52023010570d6f528-9f51-405b-b428-310ca4ca43cc1.jpg)
![APK反编译[通俗易懂]插图23 APK反编译[通俗易懂]](http://qn.javajgs.com/20230105/9e56bb7f-4187-4983-88c7-bdc6d453d89c202301051225b73e-900e-4444-b73d-fc0a446cacb01.jpg)
![APK反编译[通俗易懂]插图25 APK反编译[通俗易懂]](http://qn.javajgs.com/20230105/23455bd9-f091-4636-8cc0-b08c0d5ee42d20230105e456b49b-8305-48ba-81e2-5a894971b2ba1.jpg)
![APK反编译[通俗易懂]插图27 APK反编译[通俗易懂]](http://qn.javajgs.com/20230105/9e726ec3-3a46-4ced-9af2-a9cdde1c213d2023010511402b7d-3ff1-4820-8a4f-29fc8d1f1bb11.jpg)
![APK反编译[通俗易懂]插图29 APK反编译[通俗易懂]](http://qn.javajgs.com/20230105/a179c8bf-aea7-4a91-a755-df4308d79fb92023010503a44409-833c-4e61-9a3f-5c1936ee14491.jpg)
![APK反编译[通俗易懂]插图31 APK反编译[通俗易懂]](http://qn.javajgs.com/20230105/cbb1e149-283c-4602-afb2-995fa0ef83a920230105c97b6a9c-490d-40d8-a63d-f2209f58d2ec1.jpg)
![APK反编译[通俗易懂]插图33 APK反编译[通俗易懂]](http://qn.javajgs.com/20230105/6805b06d-ad07-4054-abe6-dfc2a188951e202301050c65636a-50b6-43f7-b886-5436951cb7481.jpg)
![APK反编译[通俗易懂]插图35 APK反编译[通俗易懂]](http://qn.javajgs.com/20230105/e232d4e1-8479-4057-a865-61af350eb4c620230105ef01419e-117a-4022-ad5b-58762f03aeed1.jpg)
![APK反编译[通俗易懂]插图37 APK反编译[通俗易懂]](http://qn.javajgs.com/20230105/a511cdec-f9dd-4057-a115-0ae9abbbac17202301057dee4f9f-22f6-4df6-8245-98bf6face00b1.jpg)
![APK反编译[通俗易懂]插图39 APK反编译[通俗易懂]](http://qn.javajgs.com/20230105/c5b93d61-02da-4dcd-afb2-8243ff72d6162023010561073cab-7147-4f36-b2fd-e449196c96c91.jpg)
![APK反编译[通俗易懂]插图41 APK反编译[通俗易懂]](http://qn.javajgs.com/20230105/1cf14318-62f6-4d2d-80c7-85d7e38d5583202301057cef7dd1-912b-4b64-90f1-8653fff4dad21.jpg)
![APK反编译[通俗易懂]插图43 APK反编译[通俗易懂]](http://qn.javajgs.com/20230105/c07aba59-766f-450b-9ad7-22d2da49f1072023010556026d02-efec-4d32-88fd-a03a454286051.jpg)
![APK反编译[通俗易懂]插图45 APK反编译[通俗易懂]](http://qn.javajgs.com/20230105/54f54fc6-c8da-421a-9159-390741081763202301056bc90d63-0b28-4806-a4a6-41ea901fdcaf1.jpg)
![APK反编译[通俗易懂]插图47 APK反编译[通俗易懂]](http://qn.javajgs.com/20230105/53ae888d-37fd-4e1d-b4dd-4aa0adce4a79202301051a021699-f8e4-4e5a-8251-44308e7b0ab61.jpg)
![APK反编译[通俗易懂]插图49 APK反编译[通俗易懂]](http://qn.javajgs.com/20230105/8ae3020d-6d2d-493c-9709-64269014437f202301055b5e9e71-032c-48b6-a2e3-e41643ad709d1.jpg)
![APK反编译[通俗易懂]插图51 APK反编译[通俗易懂]](http://qn.javajgs.com/20230105/47825c37-8cad-4c9b-8697-663693e5f0722023010543c442ec-d175-42de-9a89-41152dc78a581.jpg)
![APK反编译[通俗易懂]插图53 APK反编译[通俗易懂]](http://qn.javajgs.com/20230105/717f1504-a87c-477a-8be6-d8f471ffb2b020230105da7ed90f-f357-45e4-b4e6-648f7e18d5271.jpg)
![APK反编译[通俗易懂]插图55 APK反编译[通俗易懂]](http://qn.javajgs.com/20230105/c5d22655-4b83-4e25-8b69-f9f4a5fb2822202301053fe26401-8cb4-455c-ba03-844327cd01811.jpg)