0x00 情况专业知识
0.1 Android平台软件动态分析现况
大家都知道,在计算机相关中全部的手机软件剖析 *** 都能够归到静态数据剖析和动态分析两类,在Android服务平台都不除外。而伴随着手机软件结构加固、搞混技术性的不断完善,静态数据剖析愈来愈无法考虑安全性工作人员的剖析规定,因而与生俱来对手机软件结构加固、搞混免疫系统的动态分析技术性应时而生。尽管动态分析技术性自身有很多局限,例如:代码覆盖率低,实行高效率不高这些,可是不经之谈,本人觉得了解各种各样动态分析技术性的关键基本原理也理应是安全性从业者的必不可少规定。
下面的图1-1展现了一部分工业领域和学界在android服务平台动态分析技术性上的成效,有兴趣爱好的同学们依据要求进一步掌握:
图0-1 当今工业领域和学界在android服务平台动态分析技术性一部分成效
ps: 这幅图是上年小结的,因此 无法将一些全新的系统软件、专用工具列入,热烈欢迎诸位大神填补。
在所述诸多出色的动态分析系统软件、专用工具中,本人感觉根据污点跟踪技术性的TaintDroid一定是在其中最超重量级的成效之一,截止今天,该毕业论文的引入频次早已做到了令人震惊的1788次。尽管很多人都使用过TaintDroid,乃至大神们开展过二次开发,可是现阶段目前市面上并沒有对TaintDroid开展深层次分析文章内容。因而本系列产品文章内容可能深入分析TaintDroid的实际完成,从源代码层深掌握TaindDroid的优点和缺点,期冀能跟大伙儿一起开发设计出检验实际效果更强、运作高效率高些的污点跟踪系统软件。
0.2 阅读文章毕业论文
更先阅读者必须详尽阅读文章TaintDroid的那篇毕业论文为方便英文不太好的同学们,大家早已将其译成了汉语,因为论文翻译太费时间,在其中免不了有错误的地区,提议大伙儿对比着全文看^_^),该毕业论文详尽解读了TaintDroid的关键技术及其其模型设计这些,充足了解这篇毕业论文对大家事后深入了解TaintDroid的实际完成很有协助。
0.3 下载源代码
文中关键以Android4.1版本号的TaintDroid为剖析目标(其全新为android4.3版本号,主要是加上对selinux的兼容,具体内容并沒有更改),为了更好地以便阅读者开展对比剖析或检测,提议阅读者依照官方网站 的提醒下载源代码。自然,假如阅读者只是是想阅读文章污点跟踪有关的编码,能够去github中依照自身的必须下载相匹配一部分源代码就可以。如完成自变量级、Native级污点跟踪的编码基础都是在dalvik文件目录下,因此 能够在:下载dalvik有关源代码。
0.4 系统软件栈帧定义
因为TaintDroid的自变量级和 *** 级污点跟踪是创建在其对DVM栈和Native栈的改动以上的,因此 大家务必了解系统软件栈帧的定义,如图所示1-2所显示:
图0-2 系统软件栈帧遍布
单独调用函数实际操作所应用的栈一部分被称作栈帧(stack frame)构造,其一般构造如圖所显示。栈帧构造的两边由2个表针来特定。存储器ebp一般 用作帧表针(frame pointer),而esp则作为栈表针(stack pointer)。在涵数实行全过程中,栈表针esp会伴随着数据信息的入栈和出栈而挪动,因而涵数中对绝大多数数据信息的浏览都根据帧表针ebp开展。
0.5 內容分配
如下图上述:
由于TaintDroid有四种粒度分布的污点跟踪体制,且这四种污点跟踪体制完成逻辑性相对性单独,因此 本系列产品文章内容可能每章解读每个粒度分布污点跟踪体制的完成基本原理、 *** ,随后再从一些实际的情景考虑,深入分析TaintDroid是怎样开发利用这4种跟踪体制,及其为了更好地无缝拼接结合这种体制其所作的一些辅助改动。
0x01 TaintDroid自变量级污点跟踪剖析以上篇
严格意义上来说,应当称为“DVM中interpreted *** 的自变量级污点跟踪剖析”。从毕业论文中大家获知:DVM 有 5 种种类的自变量必须开展污点储存: *** 的当地自变量, *** 的主要参数,类的静态数据域,类的案例域,数组。由于 *** 的当地自变量和 *** 的主要参数是储存在 *** 的实行栈帧中;而类的静态数据域、案例域却以表针的 *** 开展储存;对于数组又有自身与众不同的算法设计ArrayObject。因此 为了更好地剖析逻辑性更为清楚,大家将TaintDroid自变量级污点跟踪剖析分成左右几篇:上篇关键解读 *** 当地自变量与 *** 主要参数的污点跟踪,续篇关键详细介绍类的静态数据域、案例域及其数组的污点跟踪。
TaintDroid为了更好地完成此类体制及其后边章节目录将详细介绍的Native *** 级污点跟踪体制,它对栈开展了一次大手术治疗!对于这一手术治疗的复杂性和难易度实际怎样,请听大家娓娓而谈。
大家都知道,在4.4以前的全部Android系统软件共存有二种种类的 *** :
Interpreted method: 在DVMvm虚拟机中表述实行的 *** ;必须留意的是,DVM中存有二种编译器:规范的生命期编译器dvmInterpretStd及其对某一特殊平台优化后的编译器dvmMterpStd,前面一种由C编码完成,后面一种由选编完成。
Native method: 立即实行的C/C /汇编代码,又可细分化为Internal VM Method(如System.arraycopy)和JNI method。
这两大类 *** 有分别的栈帧构造(Interpreted Stack和Native Stack),可是能够相互之间启用,即存有了下列4种状况:
interpreted → interpreted
同一个类 *** 中间立即根据GOTO_invoke系列产品宏开展自动跳转。不一样类得话依据详细情况而定。一直在interpreted stack中实行。
interpreted → native
假如目标函数是jni启用那麼就分辨method的NATIVE标志位,根据native启用桥dvmCallJniMethod开展自动跳转。普遍状况便是JNI启用。
假如目标函数是Internal VM Method,那麼就可以根据interpted编码立即启用,仅仅必须传送一个偏向32位系统存储器主要参数的表针及其一个偏向返回值的表针就可以。普遍方式以下:
InternalVMfunc(const u4* args, JValue* rResult){……}
由interpreted stack转到native stack。
native → native
这儿关键表明由Internal VM Method或反射面启用自动跳转到JNI Method的状况。在这类状况下最后会启用dvmPushJNIFrame为目标函数分派一个JNI帧。
每天都有新网站、新网页在诞生,这使得网络发展红利期已经微乎其微,甚至早就过去了。换句话说,如果没有掌握到对的营销方法与经营策略,要发展电商根本很难脱颖而出。 所以,今天我想谈谈什么是 SEO? SE...
2019cpa注册管帐师数据-验证.exe14、要害字: 主页 最新动态 新手攻略 舞曲音乐 下载中心 经典文章 玩家风貌 配备购买站内谣言友谊衔接 本站论坛那说到底咱们为什么做应急呼应呢,我觉得有以...
本人急需完成作业! 构造一个缓冲区溢出的C语言的例子,并调试它,使得溢出时EIP的地址为:0x41424344 示例代码: #include "stdafx.h" #include...
苹果怎么远程控制另一台手机 可以通过使用远程控制软件或者服务来远程控制苹果手机。苹果公司提供了一个名为“查找我的iPhone”的服务,可以通过该服务来远程控制苹果手机。目前还没有一款软件可以实现远程控...
人一生出来就会有许多的不同点,有些人挑选工作平淡如水过一生,也有人挑选去打拼一番归属于自身的乾坤,后面一种便是鼓足勇气去自主创业的人。自然也有些人要说自己创业是生活所迫,可是明白去拼搏便是一个新的起点...
微信是我们经常使用的一款社交软件,我们在生活、学习和工...