apktool简单介绍

APKTool是GOOGLE提供的APK编译工具,能够反编译及回编译apk,同时安装反编译系统apk所需要的framework-res框架,清理上次反编译文件夹等功能。需要java支持.

一:必备JDK

  1. 安装

点击去官网下载

下载后解压,运行exe程序 ,一直狂点下一步即可.

  1. 环境变量

首先右键“我的电脑”->单击“属性”->”高级系统设置”->“环境变量“。

第一步:单击“系统变量”下面的“新建”按钮,输入变量名:JAVA_HOME(注意:一般都是大写,下同) ,变量值为jdk的文件路径,就是上面提到过的jdk文件的路径,找到后,复制粘贴即可,点击“确定”按钮关闭。

第二部:在”系统变量“里找到”path“这个变量,单击“编辑“,变量名保持不变,修改变量值,我们需要在最前面添加一个”bin”目录文件的路径,再加上一个分号”;“来隔开,点击确定关闭。

第三步:新建CLASSPATH变量,点击”新建“,设置变量名:CLASSPATH。 变量值为:点号+分号+”lib”目录的路径(找到该目录,复制然后粘贴它的地址即可)

然后单击”确定“,一直确定到底。怎么验证自己是否配置成功呢,我们可以进行以下步骤:

单击开始->搜索->输入”cmd“后在弹出的窗口中输入”java -version“后就会显示你的JDK版本就可以咯!

二:下载apktool

点击去官网下载

官方教程:

$ apktool d test.apk
I: Using Apktool 2.3.1 on test.apk
I: Loading resource table...
I: Decoding AndroidManifest.xml with resources...
I: Loading resource table from file: 1.apk
I: Regular manifest package...
I: Decoding file-resources...
I: Decoding values */* XMLs...
I: Baksmaling classes.dex...
I: Copying assets and libs...
I: Copying unknown files...
I: Copying original files...
$ apktool b test
I: Using Apktool 2.3.1 on test
I: Checking whether sources has changed...
I: Smaling smali folder into classes.dex...
I: Checking whether resources has changed...
I: Building resources...
I: Building apk file...
I: Copying unknown files/dir...

官方介绍:

Apktool

A tool for reverse engineering 3rd party, closed, binary Android apps. It can decode resources to nearly original form and rebuild them after making some modifications. It also makes working with an app easier because of the project like file structure and automation of some repetitive tasks like building apk, etc.

It is NOT intended for piracy and other non-legal uses. It could be used for localizing, adding some features or support for custom platforms, analyzing applications and much more.

Features

  • Disassembling resources to nearly original form (including resources.arsc, classes.dex, 9.png. and XMLs)

  • Rebuilding decoded resources back to binary APK/JAR

  • Organizing and handling APKs that depend on framework resources

  • Smali Debugging (Removed in 2.1.0 in favor of IdeaSmali)

  • Helping with repetitive tasks

Requirements

Java 7 (JRE 1.7)

Basic knowledge of Android SDK, AAPT and smali

翻译:

Apktool

一个反向工程,第三方,封闭,二进制Android应用程序的工具。它可以将资源解码为几乎原始的形式,并在进行一些修改后重建它们。这也使得一个应用程序更容易工作,因为像建立apk等文件结构和一些重复任务的自动化项目。

它不适用于盗版和其他非法使用。它可以用于本地化,添加一些功能或支持自定义平台,分析应用程序等等。

特征

  • 拆卸资源近原始形式(包括resources.arsc,classes.dex,9.png.和XMLs)

  • 将解码的资源重建回APK / JAR

  • 组织和处理依赖于框架资源的APK

  • Smali调试(删除2.1.0了IdeaSmali)

  • 帮助重复的任务

要求

Java 7(JRE 1.7)

Android SDK,AAPT和smali的基础知识

三:配套工具的使用

  1. smali2java

smali2java是一个将smali代码反编译成java代码的工具。

什么是smali?smali是将Android字节码用可阅读的字符串形式表现出来的一种语言,可以称之为Android字节码的反汇编语言。使用baksmali或apktool可以将Android应用程序包(apk或jar)反编译为smali代码。

smali2java工具基于apktool v1.5.0(baksmali v1.3.4)生成的smali文件,依赖于smali文件中的代码行数(.line关键字)和变量别名(.local关键字)等信息,可以最大程度还原原始的java代码。还原出的java代码将具有原始的变量命名,代码的顺序也与原始的java代码保持一致。因此,本工具也具有局限性,仅适用于带有行数和变量别名信息的smali文件(java编译器的编译选项可以在生成的字节码中剔除这些信息)。

smali2java使用了apktool将Android字节码文件转换为smali文件。界面显示中使用了CCrystalTextView(作者:Stcherbatchenko Andrei)作为java语法高亮显示控件,在此向这些软件或代码的作者表示感谢。

示例:

ActivityBase.smali(smali文件)

ActivityBase.java(原始java文件)

ActivityBase.java(smali2java生成的java文件)

去下载最新版