网络安全知识:Android App
1. Dalvik虚拟机概述Google于2007年底正式发布了Android SDK,Dalvik虚拟机也第一次进入了我们的视野。它的作者是丹·伯恩斯坦(Dan Bornstein),名字来源于他的祖先曾经居住过的名叫Dalvik的小渔村。Dalvik虚拟机作为Android平台的核心组件,拥有如下几个特点。 (1)体积小,占用内存空间小。 (2)专用的DEX可执行文件格式,体积更小,执行速度更快。 (3)常量池采用32位索引值,寻址类方法名、字段名、常量更快。 (4)基于寄存器架构,并拥有一套完整的指令系统。 (5)提供了对象生命周期管理、堆栈管理、线程管理、安全和异常管理以及垃圾回收等重要功能。 (6)所有的Android程序都运行在Android系统进程里,每个进程对应着一个Dalvik虚拟机实例。 Dalvik虚拟机与传统的Java虚拟机有着许多不同点,两者并不兼容,它们显著的不同点主要表现在以下几个方面。 (1)Java虚拟机运行的是Java字节码,Dalvik虚拟机运行的是Dalvik字节码。 (2)Dalvik可执行文件体积更小。 (3)Java虚拟机基于栈架构,Dalvik虚拟机基于寄存器架构。 2. Smali概述Dalvik虚拟机(Dalvik VM)是Google专门为Android平台设计的一套虚拟机。区别于标准Java虚拟机JVM的class文件格式,Dalvik VM拥有专属的DEX可执行文件格式和指令集代码。Smali和Baksmali 则是针对 DEX 执行文件格式的汇编器和反汇编器,反汇编后DEX文件会产生.smali后缀的代码文件,Smali代码拥有特定的格式与语法,Smali语言是对Dalvik虚拟机字节码的一种解释。 Smali 语言起初是由一个名叫 JesusFreke 的黑客对 Dalvik 字节码的翻译,并非一种官方标准语言,因为 Dalvik 虚拟机名字来源于冰岛一个小渔村的名字,Smali和Baksmali 便取自冰岛语中的“汇编器”和“反编器”。目前,Smali 是在 Google Code上的一个开源项目。 虽然主流的DEX可执行文件反汇编工具不少,如Dedexer、IDA Pro,但Smali提供反汇编功能的同时,也提供了打包反汇编代码重新生成 DEX 的功能,因此 Smali 被广泛地用于App广告注入、汉化和破解,ROM定制等方面。 3. APKtool工具介绍
APKtool工具是在Smali工具的基础上进行封装和改进的,除了对DEX文件的汇编和反汇编功能外,还可以对 APK 中已编译成二进制的资源文件进行反编译和重新编译。同时也支持给Smali代码添加调试信息以支持断点调试。 (编辑:应用网_丽江站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |