基于pin的动态指令级别的插桩,通过对控制流跳转的分析,从而实现对控制流劫持类漏洞攻击的检测。 在控制流劫持类漏洞中,一般是通过控制程序的跳转流程来实现对控制流的劫持。在X86的系统中,控制流指令主要有3类,分别是call 指令、ret指令和jmp指令。而这其中有一些是直接跳转,如跳转到 某个固定的地址,因此是无法实现程序控制流的劫持,因此在分析时不需要进行分析。pin是intel出的一个动态插桩工具,支持指令插桩、基本快插桩、镜像级插桩和函数级的插桩。 可以实现对指令、函数、基本快以及镜像的分析。在实现分析时利用了对指令的插桩和镜像级插桩。指令插桩则是分析三类影响程序控制流的指令,镜像插桩则是记录程序加载的模块信息 、模块地址并且对特定的模块中的相关函数进行插桩。通过插桩分析,对控制流指令,通过检测跳转地址来判定是否是合法的。而ret指令则是通过建立模拟堆栈的形式来和正常的 返回跳转进行比较而判断是否存在缓冲区溢出劫持。对一些利用SEH等方式来进行利用的漏洞,则是通过插桩kernel32.dll模块中的在处理异常时实现对SEH链表完整性的检测来实现。
forked from coolsmurfs/-pin-
-
Notifications
You must be signed in to change notification settings - Fork 0
neoblackxt/-pin-
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
About
基于pin的动态指令级别的插桩,通过对控制流跳转的分析,从而实现对控制流劫持类漏洞攻击的检测。
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published
Languages
- C++ 77.7%
- XSLT 13.8%
- CSS 3.5%
- Makefile 2.8%
- C 2.2%