android之apk反编译

摘要:
今天就来详细的讲一讲apk的反编译过程,之前自己一直没彻底搞清楚。这三个工具是有各自作用的:apktool工具用来反编译apk中的res下的文件,即所有的xml文件。dex2jar工具用来反编译apk中的.class文件,即android项目的所有java代码。例如,我准备对一个名为Mycode.apk的文件反编译,对其解压缩后,整体如下:这个文件我是放在“E:apk文件”这个目录下的,“apk文件”是文件夹的名字。而下面的那个classes.dex文件包含了Mycode这个项目的所有java代码,是我们主要反编译的对象之一。

今天就来详细的讲一讲apk的反编译过程,之前自己一直没彻底搞清楚。

一、准备工作

反编译首先要准备三个工具。这三个工具都是可以百度下载的。就是下图所示的三个工具。

android之apk反编译第1张

这三个工具是有各自作用的:

(1)apktool工具用来反编译apk中的res下的文件,即所有的xml文件(包括Manifest.xml)。

(2)dex2jar工具用来反编译apk中的.class文件,即android项目的所有java代码。

(3)jd-gui-0.3.3工具不是用来反编译的,是用来查看使用dex2jar反编译得到的文件的。这样子就可以愉快的

查看你想看的java代码了。

+++++++++++++++++++++我是分割线+++++++++++++++++++++++++++++++++++

当然了,上面有两个工具是个压缩包,是需要解压缩的。然后将所有的工具都放在一个地方。比如我放的是

“E:APK反编译工具”这个文件夹下的。这个文件夹下的内容如下:

android之apk反编译第2张

+++++++++++++++++++++++我是分割线+++++++++++++++++++++++++++++++++

好了基本的工具都准备完毕了。然后再将你需要反编译的apk也准备好,然后将其用360解压缩。例如,

我准备对一个名为Mycode.apk的文件反编译,对其解压缩后,整体如下:

android之apk反编译第3张

这个文件我是放在“E:apk文件”这个目录下的,“apk文件”是文件夹的名字。

下面我们来看看解压后的“Mycode”文件夹下都有什么东西。如下:

android之apk反编译第4张

发现一个熟悉的“res”文件夹,这个文件可以查看Mycode这个android项目的资源文件,但是不幸的是

除了几张图片你可以看见,其他的xml文件都是乱码(有的甚至连图片都看不到)。而下面的那个classes.dex文件

包含了Mycode这个项目的所有java代码,是我们主要反编译的对象之一。

好了,这个文件夹也没有什么好了解的。看看就可以了,下面我们就开始反编译吧!!

二、反编译之旅

我用的是windows系统。所以打开windows下的cmd窗口。先讲解一下怎么使用cmd进入某个目录吧。

熟悉两个命令就够了:

(1)直接输入“盘符:”就会直接进入某个磁盘。比如进入E盘,直接输入“E:”即可。

(2)再即可cd命令,可以进入当前盘的某个目录。比如我想进入E盘下的“APK反编译工具”这么文件夹下,

就可以这么输入“cd APK反编译工具”。其中“cd "表示进入当前盘符的根目录。

知道了这两个基本命令就够了。下面真正的进行反编译吧!

++++++++++++++++++++++华丽分割线++++++++++++++++++++++++++++++++

首先进入反编译工具目录,在cmd中如下输入:

android之apk反编译第5张

然后使用下面的命令进行反编译,如下:

android之apk反编译第6张

这样子就完成了第一次的反编译,反编译的结果再哪里呢?在apktool所在的文件夹下会有一个名为”Mycode“的

文件夹,这个就是反编译得到的成果!

我们先来看看反编译的语法,一会再来看反编译的成果。上图中的语句我用不同的线条括起来了,红色线括起来的

没什么好说的,看你的apktool全名是什么,照着输入即可,而黄色线的d表示decode,即解析的命令。最重要的是

蓝色线中的内容,就是你要反编译的apk对象,此时一定要将它的完整路径名写清楚了!这条语句正确执行,就编译

成功了。

好了,我们来来看反编译的成果吧,apktool所在的文件夹为”E:APK反编译工具“(我的是这样子的)。如下:

android之apk反编译第7张

发现多了一个Mycode文件夹。这就是反编译的结果,看看里面的内容,如下:

android之apk反编译第8张

original文件夹是存放源码的,里面的东西还是一堆乱码。我们需要的是res这个文件夹,里面包括了所有的

xml文件和资源图片,此时都不是乱码了,随便用记事本代开都可以查看。而且下面的那个Manifest文件也可以用

记事本打开看看,此时也不是乱码了。这样子,我们就完成了Mycode.apk这个文件的资源文件的反编译。

++++++++++++++++++++++华丽分割++++++++++++++++++++++++++++++++

我们继续编译,光看资源文件不够,也想看一看java代码。这事就要用到另外两种工具了,即dex2jar和

jd-gui。使用这两个工具,跟apktool的使用一样,同样要在cmd中切换到他们所在的目录!因为我把他们

与apktool放在了一个目录下,因此这里救你不需要切换了。继续反编译。

还记得我们前面对Mycode.apk解压的文件夹下有一个classes.dex文件吗?对!就是它,为了方便,将它拷贝到

dex2jar所在的文件夹下面,如下:

android之apk反编译第9张

紧接着上面,在cmd中输入下面的命令:

android之apk反编译第10张

这样子就轻而易举的反编译成功了。反编译的结果就是在dex2jar所在的文件下生成一个classes-dex2jar文件

如下:

android之apk反编译第11张

这个classes-dex2jar就包括了所有我们想要的java代码了。怎么查看那呢?用jd-gui工具啊!如下图:

android之apk反编译第12张

运行jd-gui工具后,选择打开文件,打开classes-dex2jar文件即可。如下:

android之apk反编译第13张

具体的查看代码我就不贴了,保护人家的代码嘛!总之走到这一步,Mycode.apk里面所有的东西,xml资源

文件以及java代码都可以查看学习了!

免责声明:文章转载自《android之apk反编译》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇网页的摘要信息让Win10字体变得像苹果电脑那样细腻下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

【最新】Android使用jenkins全自动构建打包-Windows版本(Android,Jenkins,360加固,Email,QRcode,参数构建,蒲公英)

 Android打包喝咖啡系列(Windows版) 这篇博客主要讲述的内容:   1、windows上部署Jenkins https://jenkins.io   2、基于SVN或Git https://github.com/Codetroupe/JenKinsTestAPP   3、Android项目参数化自动构建   4、自动将APK上传至蒲公英 ht...

抓apk中的https包(​含破解https的SSL Pinning)

一般来说,http请求的包都可以通过fiddler来抓包(http2.0不支持)。 https抓包的原理是利用中间人攻击,向客户端伪装成服务端,向服务端伪装成客户端,从而可以抓包,但是有部分https的包是抓取不了的。 其中可能用到了SSL Pinning(证书绑定或SSL证书绑定)技术。 然而道高一尺魔高一丈,下面通过一种简单的办法来修改apk的配置,允...

Android如何快速卸载apk

       在Adnroid中,直接运行ADB UNInstall无法卸载APK。害得哥每次进Settings去手工去卸载。        今天哥终于受不了,直接在DDMS里删除APK。然后再运行ADB UNINSTALL,居然成功!        所以哥马上写了三个脚本,一个是删除APK包括它下面的sqlite,share pref等,还有一个是卸载这...

Android热修复之微信Tinker使用初探

  文章地址:Android热修复之微信Tinker使用初探 前几天,万众期待的微信团队的Android热修复框架tinker终于在GitHub上开源了。 地址:https://github.com/Tencent/tinker 官方介绍:https://my.oschina.net/shwenzhang/blog/751618 接入指南:https:/...

android studio多渠道多包名多apk打包

转自 利用 Android Studio 和 Gradle 打包多版本APK 搬砖的道路上,经常会有各种不同的需求,比如今天就碰到过一个打包版本的apk的要求, 比如一个apk给多个客户使用,如张三公司 ,李四集团,而我们的服务端的api域名以及处理方式也不一样, 苦逼的方式是一个一个修改包名,代码,但如果我们使用了Android Studio 和 Gra...

Android Studio修改Apk打包生成名称

版权声明:本文为xing_star原创文章,转载请注明出处! 本文同步自http://javaexception.com/archives/201 Android Studio修改Apk打包生成名称 Android studio默认生成的apk的名字实在是太没有辨识度了,一般默认是app-debug.apk,app-release.apk这样的命名,自己有...