基于pin的动态指令级别的插桩,通过对控制流跳转的分析,从而实现对控制流劫持类漏洞攻击的检测。 在控制流劫持类漏洞中,一般是通过控制程序的跳转流程来实现对控制流的劫持。在X86的系统中,控制流指令主要有3类,分别是call 指令、ret指令和jmp指令。而这其中有一些是直接跳转,如跳转到 某个固定的地址,因此是无法实现程序控制流的劫持,因此在分析时不需要进行分析。pin是intel出的一个动态插桩工具,支持指令插桩、基本快插桩、镜像级插桩和函数级的插桩。 可以实现对指令、函数、基本快以及镜像的分析。在实现分析时利用了对指令的插桩和镜像级插桩。指令插桩则是分析三类影响程序控制流的指令,镜像插桩则是记录程序加载的模块信息 、模块地址并且对特定的模块中的相关函数进行插桩。通过插桩分析,对控制流指令,通过检测跳转地址来判定是否是合法的。而ret指令则是通过建立模拟堆栈的形式来和正常的 返回跳转进行比较而判断是否存在缓冲区溢出劫持。对一些利用SEH等方式来进行利用的漏洞,则是通过插桩kernel32.dll模块中的在处理异常时实现对SEH链表完整性的检测来实现。
neoblackxt / -pin- Goto Github PK
View Code? Open in Web Editor NEWThis project forked from coolsmurfs/-pin-
基于pin的动态指令级别的插桩,通过对控制流跳转的分析,从而实现对控制流劫持类漏洞攻击的检测。