• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Android > 安卓应用反编译(二)-APK包反编译浅析

安卓应用反编译(二)-APK包反编译浅析

作者:网友 字体:[增加 减小] 来源:互联网 时间:2017-05-26

网友通过本文主要向大家介绍了安卓apk反编译工具,安卓apk反编译教程,安卓apk反编译软件,安卓apk反编译,安卓apk编译等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

安卓应用反编译(二)-APK包反编译浅析


第二章 APK包反编译

被编译器处理过的代码和资源已经打包成了APK,有的甚至被转化成了二进制文件。但是我们也有一些方法,把这些编译过的内容给变回原来的样子,这个过程叫做-反编译。

</div>

反编译分为两个部分:一个是资源文件,一个是java文件。so文件是c++编译的结果,可以认为是不可反编译的(反编译成汇编指令,估计大部分人也看不懂)。

2.1 反编译资源文件

APK tool是反编译的有力工具,据说是谷歌提供的官方的反编译工具,可以把APK目录解包,资源文件全部还原成编译前的样子,而dex文件反编译成smail格式的文件(而不是我们希望的java原文件)。smail格式文件是安卓系统的虚拟机执行时使用的语法,我们不会去讲解这部分内容。

2.1.1 工具准备

在APK tool的官网下载APKTool的最新版本; </div>

2. 在官网下载与`APKTool`配套的[脚本文件-apktool.bat](https://raw.githubusercontent.com/iBotPeaches/Apktool/master/scripts/windows/apktool.bat),其内容如下;

@echo off
if "%PATH_BASE%" == "" set PATH_BASE=%PATH%
set PATH=%CD%;%PATH_BASE%;
java -jar -Duser.language=en "%~dp0\apktool.jar" %1 %2 %3 %4 %5 %6 %7 %8 %9

不过该脚本有一个小小的问题-需要去掉apktool.jar前面的一个\;下载完成后用文本编辑器打开该脚本,将这一段修改成,

@echo off
if "%PATH_BASE%" == "" set PATH_BASE=%PATH%
set PATH=%CD%;%PATH_BASE%;
java -jar -Duser.language=en "%~dp0apktool.jar" %1 %2 %3 %4 %5 %6 %7 %8 %9

3. 将下载的APKTool压缩包解压,与脚本文件一起放到你希望存放的目录下,例如`D:\Work\apktool`;

</div>

4. 为了使用方便,将存放目录加入到系统的环境变量中; `我的电脑`点击右键->`属性`->`高级系统设置`->`环境变量`,选中`Path`这一项,进行编辑;

</div> 在编辑栏最后输入apktool所在的路径`D:\Work\apktool`;如果该项之前还有别的路径,请用`;`分隔开; </div>

5. 启动`cmd命令行窗口`,输入`apktool -version`,如果看到类似如下内容就说明安装成功了;

$ apktool -version
2.0.3

至此,APKTool就安装并设置完成了。
如果无法访问官网下载,请上安豆网,下载最新的版本。

2.2.2 反编译资源

接下来开始使用APKTool,


1. 启动cmd命令行窗口;


2. 假设apk放在D:\Test.apk目录,输入apktool d D:\Test.apk,开始反编译Test.apk`;

$ apktool d D:\Test.apk
I: Using Apktool 2.0.3 on Test.apk 
I: Loading resource table... 
I: Decoding AndroidManifest.xml with resources... 
I: Loading resource table from file: C:\Users\Gym\apktool\framework\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... 

 


3. 编译的结果就在cmd命令行窗口启动的位置下,反编译的目录结构如下,

</div>

现在打开res目录下的资源都被还原了,打开后就能看到原始的设计;而java源码被反编译成了smli格式的文件。

 

##2.3 反编译java源代码要查看java源码,有三个方式: 1. 把dex文件转换成smail文件,然后用专门的工具将smail翻译成java; 2. 把dex文件转换成java的通用编译格式class文件,然后用专门的工具将class翻译成java; 3. 把dex文件转换成jar文件,然后用专门的工具将jar翻译成java; 这里我们采用第三种方法。 ### 2.3.1 工具准备首先准备反编译用的工具。

1. 在官网下载[dex2jar](http://sourceforge.net/projects/dex2jar/files/)工具,它可以把APK中的dex文件转化成jar文件;

2. 下载完成后,将压缩包解压,放到你希望存放的目录下,例如`D:\Work\dex2jar`;

</div>

3. 为了使用方便,将存放目录加入到系统的环境变量中;

</div>

4. 在官网下载[JD-GUI](http://jd.benow.ca/),它可以查看jar文件的java源码;

5. 下载完成后,将压缩包解压,放到你希望存放的目录下,例如`D:\Work\jd-gui`;

</div> 至此,java源码的反编译工具就安装并设置完成了。如果无法访问官网下载,请上[安豆网](http://anddle.com/resource)下载,那里将这几个工具整体打包,方便大家使用。 ###2.3.2 反编译代码接下来开始使用反编译工具,

1. 解压APK文件,找到Android软件安装包中的`class.dex`;

2. 用dex2jar工具将classes.dex生成jar文件;启动`cmd命令行窗口`,输入`d2j-dex2jar D:\classes.dex`,开始反编译`classes.dex`,`d2j-dex2jar`后面需要跟上要反编译的dex文件路径;

$ d2j-dex2jar D:\classes.dex 
dex2jar classes.dex -> .\classes-dex2jar.jar 

结果生成了classes-dex2jar.jar文件;

 


3. 进入JD-GUI目录,运行JD-GUI工具,打开上面的生成的jar文件,即可看到java源代码。

</div>  </div>  </div>

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 安卓应用反编译(二)-APK包反编译浅析

相关文章

  • 2017-05-26Android线程优先级设置方法技巧,android线程优先级
  • 2017-05-227.5.6 WebView处理网页返回的错误码信息
  • 2017-05-26Android实战技巧之五十一:libjpeg与Android
  • 2017-05-26debian8下apache2.4.x部署mysql认证的subversion
  • 2017-05-26Android--实现ViewPager边界回弹效果(转),android--viewpager
  • 2017-05-262015年Android作品集
  • 2017-05-26安卓开发—简单的登陆界面,安卓登陆界面
  • 2017-05-26谷歌电子市场5--推荐,谷歌电子市场5--
  • 2017-05-26一个难倒 3年 android开发经验 &quot; 工程师 &quot; 的 &quot;bug&quot;
  • 2017-05-26购物车动画(Android),购物车动画android

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 4.1.2 Activity初窥门径
    • Android系统架构,android系统结构
    • Android中SimpleAdapter的使用—自定义列表,自定义simpleadapter
    • 关于TabLayout的使用 ,自定义了一个框架。。。 以后写底部菜单就可以直接作为依赖库 ,不用麻烦了,tablayout框架
    • 贡献个Android 截屏并自动传到电脑上的shell脚本
    • Android 友盟分享详细集成过程及所遇问题解决,android
    • Android开发学习之路--RxAndroid之初体验
    • 如何使用Android Studio开发Gradle插件
    • Android焦点事件分发与传递机制
    • Swift开发iOS应用(1)列表的实现

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有