极速赛车APP下载

APK反编译得工具总结(转载)

电脑杂谈  发布时间:2019-08-31 12:03:27  来源:网络整理

apk反编译后闪退_apk反编译后闪退_c 编译闪退

极速赛车APP下载转自UncleChen's Blog,作者:UncleChen

学习反编译之前,建议先学习一下Apk打包的过程,明白打包完成后的Apk里面都有哪些文件,各种文件都是怎么生成的。

这里有两篇AndroidWeekly中推荐过的好文章:

Apk技术也是比较多的技术可以学习,主要都是围绕着怎么增加重量,如何提升打包速度展开,这里先不多说了。下面是一张基本的Apk文件。

APK文件结构

Apk文件本质上虽然是一个zip包。直接拿解压软件解压就可以看见其中包括了哪些。下面简单介绍一下Apk文件的结构。

上面的图片中每个文件都是一个最基本的Apk 文件需要包括在内的。但是直接把Apk当做zip解压后的这种文件是无法直接阅读的,毕竟她们都是经过了build-tools打包软件处理过的。我们直接用文本编辑器打开这上面的Manifest文件看看。

反编译前的Manifest文件

反编译Apk的目的就是Apk拆成我们可以阅读的文件。通过反编译,我们通常想要受到上面的AndroidManifest。xml文件、res文件和java代码。

工具下载地址:

c 编译闪退_apk反编译后闪退_apk反编译后闪退

功能:拆解Apk文件,反编译其中的资源文件,将他们反编译为可阅读的AndroidManifest.xml文件和res文件。前面讲过,直接把Apk文件当作zip解压,得到的xml资源文件,都是无法直接用文本编辑器打开阅读的,因为他们在打包时经过了build-tools的处理。

用法:官网有介绍,最新版本是2.2.0,运行环境应该jre1.7。

这里,我演示一下用apktool来拆解Apk文件的基本原则,只应该在终端上面执行以下的命令。

java -jar apktool.jar d yourApkFile.apk
// 注意`apktool.jar`是刚才下载后的jar的名称,`d`参数表示decode
// 在这个命令后面还可以添加像`-o -s`之类的参数,例如
// java -jar apktool.jar d yourApkFile.apk -o destiantionDir -s
// 几个主要的参数设置方法及其含义:
-f 如果目标文件夹已存在,强制删除现有文件夹
-o 指定反编译的目标文件夹的名称(默认会将文件输出到以Apk文件名命名的文件夹中)
-s 保留classes.dex文件(默认会将dex文件解码成smali文件)
-r 保留resources.arsc文件(默认会将resources.arsc解码成具体的资源文件)

下面我们看一下java -jar apktool.jar d yourApkFile.apk拆解后的结果:

Apk拆包结果

我们终于得到一个可以用文本编辑器打开的阅读的AndroidManifest。xml文件、assets文件夹、res文件夹、smali文件夹等等。original文件夹是原始的AndroidManifest。xml文件,res文件夹是反编译出来的所有资源,smali文件夹是反编译进去的代码。注意,smali文件夹下面,结构和我们的源代码的package一模一样,只不过换成了smali语言。它有点类似于汇编的词汇,是Android虚拟机所使用的解释器语言。

这时,我们终于可以文本编辑器打开AndroidManifest。xml文件和res以下的layout文件了。这样,我们就可以查看到这个Apk文件的package包名、Activity组件、程序所必须的权限、xml布局、图标之类信息。其实我们把Apk上传到应用行业时,应用市场也会借助类似的方法解读我们的apk。

note1:其实也有一种方法,可以省去每次解包时,都要输入java -jar apktool.jar xxx这行命令,官网还有说明,就是将这个命令包装成shell脚本,方法见:

极速赛车APP下载note2:如果你在编译的之后,发现终端上面提醒出现了brut.android.UndefinedResObject错误,说明你的apktool.jar版本太低了,需要去下载新版软件了。

apk反编译后闪退_c 编译闪退_apk反编译后闪退

极速赛车APP下载note3:如果想要自己实现一个解析Apk文件,提取版本、权限信息的java服务时,可以引用apktool。jar中的ApkDecoder,调用decode方法来实现。可以看图示中,apktool。jar后面有解析Apk文件的实现。

apktool.jar

上一步中,我们受到了反编译后的资源文件,这一步我们还想看java源代码。这里要用的工具就是dex2jar。

工具下载地址:

功能:将dex格式的文件,转换成jar文件。dex文件时Android虚拟机上面可以执行的文件,jar文件你们都是知道,其实就是java的class文件。在官方有具体介绍。

用法:打开下载的dex2jar-2.0文件夹,里面有shell和bat脚本,进入终端,就可以在命令行使用了。

d2j-dex2jar classes.dex
// 获取classes.dex文件在最前面说过,只要把Apk当做zip解压出来,里面就有dex文件了
// 或者用apktool反编译时带上 `-s` 参数

运行后,可以发现classes。dex已经成为了classes-dex2jar。jar。

进入dex2jar文件夹

极速赛车APP下载note1:第一次下载出来后,在mac里运行的之后可能会提示必须管理员的权限,这里我给那些sh脚本chmod 777后,即可运行它。

c 编译闪退_apk反编译后闪退_apk反编译后闪退

root执行dex2jar

note2:写完这一节的之后,我看到把dex转换成jar已经有了更好的软件enjarify,这个工具是微软官网开源的用于反编译dex文件的。使用方式和dex2jar差不多,也是简洁的命令行操作。这个软件的主页中也看到dex2jar已经是一个比较老的工具,在遭遇混淆等等复杂的状况时,可能难以正常工作。所以此处推荐你们使用enjarify这个软件。

工具下载地址:官网上选取自己所必须的版本。

功能:这个软件不用多说,写java的人都明白。有时候我们自己开发一个jar包给对方用,也会用它来查看class是不是都被正确的打入到了jar内,我当时介绍的gradle自定义打包jar的博客中也看到过它。

用法:下载后双击既可以运行这个软件,直接把上一步得到的classes-dex2jar.jar拖到jd-gui程序的图标上就能开启了,效果如下图右图。

classes-dex2jar.jar

反编译一个Apk,查看它的资源文件和java代码apk反编译后闪退,我们应该用到3个工具。

极速赛车APP下载反编译就是用这3个工具得到AndroidManifest.xml、res、java代码等。但是我们可以看见,如果你要对一个Apk做尽可能彻底的反编译,把它扒得干干净净,这一步一步的基本操作还是稍显麻烦。另外加固过Apk的状况或许更复杂,需要我们勤动手尝试。为了能提升强度,下面我把自己见到的一些集成软件介绍给你们,尽可能实现可以一键反编译Apk。

下载地址:apk反编译后闪退极速赛车APP下载,下载出来以后是一个可执行的jar文件,win下或者mac下都即使双击就能运行。

功能:带有图标,一键反编译Apk工具,直接开启Apk文件,就可以看见Apk中所有的文件结构,甚至还集成了dex文件查看,java代码查看,方法数预测、导入混淆mapping文件等一系列工具。谷歌打造这个软件的目的是为了让我们开发者更明白的认识自己的Apk中都有哪些文件、混淆前后有哪些差异,并便于我们进一步改进自己的Apk打包实现。下面带上几张截图,真是帅气的一笔的好工具啊!

c 编译闪退_apk反编译后闪退_apk反编译后闪退

dex文件查看

方法数分析

即将到来的Android Studio 2.2中集成了一个叫做APK Analyzer的功能,这个用途不知道是不是和这个工具有关系呢,本人还没有尝试过2.2版本,有兴趣的朋友可以感受一下preview版本。

下载地址:

功能:集成了反编译资源、代码等诸多文件的工具包。需要调试Python环境来运行这个软件,这个工具根据不同的反编译需求,分别写成了不同的py功能组件,还有静态分析的功能。所以即使想要用Python开发一个解析Apk文件并进行静态扫描分析的服务,可以引用这个软件来实现。

用法:具体用法非常多,这里也不再展开了。可以借助软件内置的-h帮助指令查看各个组件的功能。

unclechendeiMac:androguard-2.0 unclechen$ python androaxml.py -h
Usage: androaxml.py [options]
Options:
  -h, --help            show this help message and exit
  -i INPUT, --input=INPUT
                        filename input (APK or android's binary xml)
  -o OUTPUT, --output=OUTPUT
                        filename output of the xml
  -v, --version         version of the API
// androaxml.py这个模块是用来解析AndroidManifest文件的,`-i` 表示输入的apk文件,`-o` 表示输出xml文件。

功能:这是网上一位名为Jermic的大神开发的、在Mac环境下使用的App,集成了Android开发中常用的一些编译/反编译软件,方便用户对Apk进行逆向分析,提供Apk信息查看功能。工具的图片如下所示,非常强大。

Android-Crack-Tool.app

功能:在手机上早已有了这么多的软件,在电脑上的还有很方便的软件。APKParser是一款在查看电脑上即将安装的Apk的信息的工具,他可以查看硬件的AndroidManifest.xml文件、方法数、res资源文件,并在电脑上直接展现出去。个人认为这是一个非常实用的软件,作为开发者,手机上面应该要有它。

ApkParser

以上几款工具都是我感受过、感觉不错的集成软件,推荐给你们。临近本文结束前,又看到了这样一个福利网站-,其中有一章专门总结了诸多Apk反编译的软件。相信有了这么多的利器,大家需要有100种方法将一个App扒得干干净净了。


本文来自电脑杂谈,转载请注明本文网址:
http://www.0531mai.com/a/jisuanjixue/article-121204-1.html

    相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    极速赛车手机官网 极速赛车手机官网 极速赛车手机版下载 极速赛车APP下载 极速赛车APP下载 极速赛车APP下载 极速赛车APP下载 极速赛车APP 极速赛车APP 极速赛车APP