《Android软件安全与逆向分析样章试读第5章》.pdf

《Android软件安全与逆向分析样章试读第5章》.pdf

  1. 1、本文档共63页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《Android软件安全与逆向分析样章试读第5章》.pdf

Android 软件安全与逆向分析 第 5 章 静态分析 Android 程序 如果说前面的章节是在“扎马步”,那么从本章起,就是真正的武功招式了。静态分析 是探索 Android 程序内幕的一种最常见的方法,它与动态调试双剑合璧,帮助分析人员解决 分析时遇到的各类“疑难”问题。然而,静态分析技术本身需要分析人员具备较强的代码理 解能力,这些都需要在平时的开发过程中不断地积累经验,很难想象一个连 Android 应用程 序源码都看不懂的人去逆向分析 Android 程序。因此,在开始本章内容之前,假定读者已经 具备了基本的 Android 程序开发知识与代码阅读能力。 5.1 什么是静态分析 静态分析(Static Analysis)是指在不运行代码的情况下,采用词法分析、语法分析等各种 技术手段对程序文件进行扫描从而生成程序的反汇编代码,然后阅读反汇编代码来掌握程序 功能的一种技术。在实际的分析过程中,完全不运行程序是不太可能的,分析人员时常需要先 运行目标程序来寻找程序的突破口。静态分析强调的是静态,在整个分析的过程中,阅读反汇 编代码是主要的分析工作。生成反汇编代码的工具称为反汇编工具或反编译工具,选择一个功 能强大的反汇编工具不仅能获得更好的反汇编效果,而且也能为分析人员节省不少时间。 静态分析 Android 程序有两种方法:一种方法是阅读反汇编生成的 Dalvik 字节码,可以 使用 IDA Pro 分析 dex 文件,或者使用文本编辑器阅读 baksmali 反编译生成的 smali 文件; 另一种方法是阅读反汇编生成的Java 源码,可以使用 dex2jar 生成jar 文件,然后再使用jd-gui 阅读jar 文件的代码。 5.2 快速定位 Android 程序的关键代码 在逆向一个 Android 软件时,如果盲目的分析,可能需要阅读成千上万行的反汇编代码 才能找到程序的关键点,这无疑是浪费时间的表现,本小节将介绍如何快速的定位程序的关 键代码。 5.2.1 反编译 apk 程序 每个apk 文件中都包含有一个AndroidManifest.xml 文件,它记录着软件的一些基本信息。 包括软件的包名、运行的系统版本、用到的组件等。并且这个文件被加密存储进了 apk 文件 94 第 5 章 静态分析 Android 程序 中,在开始分析前,有必要先反编译apk 文件对其进行解密。反编译 apk 的工具使用前面章 节介绍过的 Apktool 。Apktool 提供了反编译与打包 apk 文件的功能。本小节使用到的实例程 序为 crackme0502.apk ,按照前面使用 Apktool 的步骤,在命令提示符下输入“apktool d crackme0502.apk ”即可反编译成功。 5.2.2 程序的主 Activity 我们知道,一个 Android 程序由一个或多个 Activity 以及其它组件组成,每个 Activity 都是相同级别的,不同的 Activity 实现不同的功能。每个 Activity 都是 Android 程序的一个 显示“页面”,主要负责数据的处理及展示工作,在 Android 程序的开发过程中,程序员很 多时候是在编写用户与 Activity 之间的交互代码。 每个 Android 程序有且只有一个主 Activity (隐藏程序除外,它没有主Activity ),它是 程序启动的第一个 Activity 。打开crackme0502 文件夹下的 AndroidManifest.xml 文件,其中 有如下片断的代码。 <activity android:label="@string/title_activity_main" android:name=". MainActivity"> <intent-filter> <action android:name="ent.action.MAIN" /> <cat

文档评论(0)

ghfa + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档