注:文中讲解的安卓Hook技术只有Java层级的Hook技术,并未涉及Native层级的Hook技术。
0x00 Hook是什么
Hook,英文解释是钩子或挂钩,在windows系统和安卓系统中都有自己的一套事件分发机制,应用程序,包括应用触发事件和后台逻辑处理也是根据事件流程一步一步往下执行,而我们所说的钩子就是在事件传送到终点前截获并监控事件的传输,像钩子一样钩上事件,并且去处理一些我们需要让它去处理的事情,也就是有时候会说的劫持,也可以称为动态注入。
One To One,then many a you !
0x00 ROP及保护机制介绍
ROP全称是返回导向编程(Return-oriented programming),这是一种高级的内存攻击技术,可以用来绕过现代操作系统的各种通用防御。战战兢兢复制蒸米师傅的话,下面是我的浅显的理解:这也就是一种攻击手段,运用一些系统或程序存在的漏洞,通过ROP链作为桥梁进入到目标系统。再下面也主要是一些个人在读这篇文章并动手操作时遇到的问题及解决,如有错误,烦请指正。
我们可以利用栈溢出的漏洞进行攻击,那么系统开发及防御者也想处各种针对的方法,常见的有三种保护机制:堆栈不可执行(DEP/NX)、内存地址随机化(ASLR)和栈保护(Stack Protector)。
最近在学习ROP技术,深深感觉到自身和大佬之间的差距,但是这并不能阻止我向大佬看齐的脚步。
在这个过程中,使用ROP来实现栈溢出,那么就需要很透彻的了解栈的结构,和函数调用栈的具体实现,查了很多资料,终于对函数调用栈的过程有较为清晰的认识。
首先栈是一个先进后出的数据存储结构,这个大家都知道,但是函数在调用栈的过程是怎样实现的呢?这就是我们今天需要解决的问题了。