欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

安卓Hacking Part 18:逆向工程入门篇

来源:本站整理 作者:佚名 时间:2017-03-24 TAG: 我要投稿

在计算领域中,逆向工程是指理解某些系统的运行机制并重用这些信息来做某些事情的过程。这种方式同样适用于Android应用程序。许多情况下,我们都需要对Android应用进行逆向工程。
阅读他人的代码
查找代码中的漏洞
搜索硬编码在代码中的敏感数据
恶意软件分析
修改现有应用程序的功能
反编译与反汇编
反编译是将软件的二进制代码转换为文本格式的、编写软件源代码所用的高级语言代码的过程,因为高级语言具有更高的可读性。
不过,反汇编器却不会将二进制转换为高级语言文本:它只是字节到文本的一对一转换,并提供指令助记符,虽然这样也有助于理解代码,但是与直接阅读高级语言源码相比难度要更大一些。
从Java生成DEX文件
为了介绍Android应用程序的逆向过程,首先需要了解如何构建应用程序。

如上图所示,
1. 开发人员用Java编程语言编写源代码,这些文件的扩展名“.java”。
2. 这些java文件被提交给“javac”编译器,由它生成“.class”文件。
3. 这些类文件被提交给“dx”工具,以生成“.dex”文件。
4. 然后,“.dex”文件以及其他资源被打包为“.apk”文件,最后放入Dalvik虚拟机中运行。
要想查看所生成的dex文件的结构的话,我们可以使用010Editor。
在我们继续学习之前,请下载以下工具:
010Editor
dex template
您可以从下面的链接下载010编辑器:
http://www.sweetscape.com/010editor/
你可以从下面的链接来下载“dex 模板”:
下载链接
1.解压APK文件。在*nix系统中我们可以使用unzip命令进行解压。
2.使用010 Editor打开classes.dex。
3.加载下载的dex模板。
下图是010editor显示一个dex文件。

关于dex文件格式及其工作原理的详细信息,请参阅以下链接。
https://source.Android.com/devices/tech/dalvik/dex-format.html
逆向Android应用程序:
现在让我们讨论如何针对Android应用程序进行逆向工程。
1.反汇编Android应用程序
可以使用名为APKTOOL的工具获取smali版本的代码。这一点我们在本系列的前面的文章中已经介绍过了。
以下是对Android应用程序进行逆向工程,并使用APKTOOL获取smali代码的具体步骤。
第1步.从以下链接下载APKTOOL
http://ibotpeaches.github.io/Apktool/
第2步.运行以下命令获取smali版本的代码。
1
apktool d [app] .apk
第3步.为了重新编译应用程序,我们只需要修改选项"b",让它指向存放修改的代码的文件夹的路径即可。
1
apktool.bat b [path to the target folder]
2.解压Android应用程序
在本节中,我们将讨论反编译Android应用程序的两种方法。
使用dex2jar和jad来反编译Android应用程序:
首先,让我们看看如何使用dex2jar和jad来反编译Android应用程序。
步骤1:解压apk文件
如下图所示,目标APK文件位于我当前的文件夹中。

让我们将apk文件的扩展名改为ZIP,如下所示。

现在,我们可以使用unzip命令进行解压了,具体如下所示。

步骤2:dex2jar上场
现在,导航到dex2jar所在的文件夹,并运行以下命令。这将生成一个新的jar文件,具体如下所示。

步骤3:使用unzip命令从新生成的jar文件中提取“.class”文件。

上面的步骤将会创建一些文件夹,这些文件夹的名称与APK工具包名称类似。
这里为com.isi.securelogin
导航到.class文件所在的文件夹,如下所示。

现在,我们需要反编译它们,以获得.java文件。
步骤4:使用JAD反编译器将.class文件解压为Java:
Jad是一个流行的java反编译器。
您可以通过下面的链接下载jad。
http://www.varaneckas.com/jad
现在,将我们提取的所有类文件作为输入提供给jad,具体如下所示。

它将在同一个文件夹下面生成.java文件,具体如下所示。

[1] [2]  下一页

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载