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帧。
想要恢复记录,必须借助第三方软件,而且通过电脑,具体方法如下:第一步:借助苹果手机数据恢复软件,来帮助我们找回微信误删的聊天记录。第二步:运行开心。 不用电脑怎么恢复微信聊天记录,学会这几招就可以了...
2020年是完成党的第一个100年目标“全面实现小康社会”的最后一年,这个最后关头,卓越集团积极响应号召,全身心投入公益活动,为实现共同富裕奉献出力量。 一、抗击疫情 2020,一场新冠病...
好用的防晒霜排行榜 百雀羚三生花防晒乳 参考价:¥95/50g 百雀羚是国产老品牌,是纯天然的植物草本护肤品,据了解在国外很受欢迎,不得不说近两年国货是真的强大。该款百雀羚三生花防晒乳,是专...
你把杀毒软件关闭,防火墙卸载了,漏洞补丁删除掉他们就会来找你了 呵呵哈哈哈这些大部分是骗人的黑客接货有自己的渠道 有这么容易让你找到的话还得了啊,给你知道就不是黑客了 你要了解“蜜罐”这个词语。不过,...
如何查老婆酒店开过房记录(老公出轨开宾馆怎么查)有些女人总怀疑老公出轨,老公"出差"百思特网;拿身份证时,问3遍是不是真出差,甚至还会找老公同事确认。男人们叫苦不迭:姐姐,要出差不带身...
本文导读目录: 1、求网游小说 2、我的世界:高手和菜鸟遇见一群怪物,要怎么对付它们 3、我的世界怎么黑客 4、我的世界动画菜鸟和高手的区别1 5、我的世界高手与菜鸟的差距哪个最搞笑...