内容简介:Android Apk的反编译和加密
忙里偷闲学习了一下Apk的反编译 工具 的基本使用。下面就简单介绍一下如何将我们从网上下载的Apk文件进行反编译得到我们想要获得的资源文件和源码。
一、Apk文件组成
Android的应用程序APK文件说到底也是一个压缩文件,那么可以通过解压缩得打里面的文件内容,不过很显然,当你去解压完去查看的时候,发现里面的很多东西和你想象中的不太一样。资源文件等xml文件基本打不开,即使打开了也都是乱码(而这正是Android进行加密过),有些应用会将图片资源等的也加密(如qq音乐)。
而既然直接解压无法看到正常的应用程序,那么就需要借助反编译软件来实现APK的反编译。
二、反编译必备工具及使用
Android工程文件主要有资源文件和源代码组成。而为了查看资源文件需要借助一个工具,本文使用的是apktool工具进行反编译,经过编译后能够正确查看XML文件和其他的非XML的资源文件,这对于汉化而言有着巨大的意义。而为了查看源码,则需要借助于dex2jar和jd-gui这两个工具,其中dex2jar工具负责将dex文件转化为jar文件,而jd-gui则用于查看jar文件。
1)apktool
一次失败的经历-----使用apktool时报错
原因:apktool的版本过低,无法解析当前版本的apk。
修正:
更新最新的apktool版本后正常,本文使用的最新apktool版本为2.2.2.
然后就可以发现资源文件等xml文件可以正常打开。
2)Dex2jar
接下来就需要对source code进行反编译。
需要借助工具Dex2jar和jd-gui。其中Dex2jar,顾名思义就是将dex文件反编译为jar文件。而jd-gui则用于直接查看jar包中的源代码。
具体步骤就是将apk文件解压,得到其中的classes.dex,它就是 java 文件经过编译而后通过dx工具打包而成的,而后解压下载的dex2jar,将classes.dex复制到dex2jar根目录下,在命令行下定位到该目录下,运行d2j-dex2jar.bat classes.dex classes.dex
可以发现得到一个classes-dex2jar.jar文件。这个文件就是我们需要得到的source code。
3)jd-gui
接下来需要在jd-gui中浏览该文件,这个就是最终的结果
当然,你也发现了这些源码都是被混淆了的,即用无意义的字母来重命名类、成员变量、方法和属性以及删除没用的注释。
三、Apk的加密过程
既然都提到了这里了,我们也顺便了解一下Android Apk的加密过程。
由于Java字节码的特殊性,使得它非常容易被反编译,(正如刚才我们进行的那些操作,借助一下工具就反编译了一个QQ音乐的Apk),因此,显然我们会有一些保护措施,对编译好的Class文件进行一些保护。通常我们都会使用ProGuard来对Apk进行混淆处理,用无意义的字母俩重命名类、成员变量、方法和属性。(当然它能删除一些无用的类、成员变量、方法和属性以及删除没用的注释,最大程度优化字节码文件)
而现在我们一般都采用Android Studio作为开发平台,在该平台下可以很方便的使用ProGuard,在Gradle Script文件夹下,打开build.gradle(Module:app)文件,显示如下:
这里的minifyEnable即为控制是否启动ProGuard的开关,设置为true则开启ProGuard进行混淆和优化。
而proguardFiles分为两部分,前半部分是一个系统默认的混淆文件,位于SDK目录下的tools/proguard/proguard-android.txt,一般情况下使用这个默认的文件即可,另一部分是项目中自定义的混淆文件,可以在项目中的App文件夹中找到这个文件,在这个文件夹中可以定义引入的第三方依赖包的混淆规则。配置好ProGuard后,只要使用AS导出Apk,即可生成混淆后的字节码文件。
更多Android相关信息见 Android 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=11
本文永久更新链接地址 : http://www.linuxidc.com/Linux/2017-06/144697.htm
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
The Master Switch
Tim Wu / Knopf / 2010-11-2 / USD 27.95
In this age of an open Internet, it is easy to forget that every American information industry, beginning with the telephone, has eventually been taken captive by some ruthless monopoly or cartel. Wit......一起来看看 《The Master Switch》 这本书的介绍吧!