基於VEH&除錯暫存器實現無痕HOOK(5)

極安御信發表於2021-12-30

基於VEH&除錯暫存器實現無痕HOOK(5)


作者 | 榴蓮

編輯 | 楌橪


WindowsVEHVectoredExceptionHandler使VEHHOOKVEHSEHHOOKVEH調西ESPHOOKHOOKHOOK,

使int 3 0xCCHOOK

CRC32int3 VEHHOOK調

HOOK

基於VEH&除錯暫存器實現無痕HOOK(5)

Intel調

DR0 - DR3CPU調

DR4DR5調CR4DE1DR4DR5調#UD調DR4DR5DR6DR7

DR7調

R/W0 - R/W3  DR0-DR3

00

01

10CR4DE調I/O

11

LEN0 - LEN3  DR0-DR3

001

012

108

114

R/W000

L0-L3  DR0-DR310

G0-G3  DR0-DR310CPU

LEGE CPU486

GDGD1CPUDR

DR6調

B0-B3 DR0-DR3B01R/W0 len0 DR0滿

BD DR7GDCPUDRBD1#DB

BS  EFLAGSTF1

BT  TSST調TSST1調

HOOKMessageBoxAHOOK

Windows 10 20H219042.1288Visual Studio 2017DLL

1.

基於VEH&除錯暫存器實現無痕HOOK(5)

2Windows->DLL

基於VEH&除錯暫存器實現無痕HOOK(5)

3#include pch.h,#include <Windows.h>framework.hpch.hpch.cpp

基於VEH&除錯暫存器實現無痕HOOK(5)

4

4.1 

基於VEH&除錯暫存器實現無痕HOOK(5)

4.2 Spectre

基於VEH&除錯暫存器實現無痕HOOK(5)

4.3 

基於VEH&除錯暫存器實現無痕HOOK(5)

5.   breakDLL

基於VEH&除錯暫存器實現無痕HOOK(5)

6.使AddVectoredExceptionHandlerVEH調VEH調AddVectoredExceptionHandlerVEH0VEH0VEHAddVectoredExceptionHandler調

6.1AddVectoredExceptionHandlerF12

基於VEH&除錯暫存器實現無痕HOOK(5)

6.2F12調

基於VEH&除錯暫存器實現無痕HOOK(5)

6.3typedef

基於VEH&除錯暫存器實現無痕HOOK(5)

6.4DLL_PROCESS_ATTACH

基於VEH&除錯暫存器實現無痕HOOK(5)

6.   MessageBoxA

基於VEH&除錯暫存器實現無痕HOOK(5)


7.   HOOK

基於VEH&除錯暫存器實現無痕HOOK(5)

8.   調HOOK

基於VEH&除錯暫存器實現無痕HOOK(5)

9.   DLL_PROCESS_ATTACH調HOOK

基於VEH&除錯暫存器實現無痕HOOK(5)

10.  調SetThreadHookHOOK

基於VEH&除錯暫存器實現無痕HOOK(5)

11.  HOOKHOOK

基於VEH&除錯暫存器實現無痕HOOK(5)

12.HOOK

基於VEH&除錯暫存器實現無痕HOOK(5)

EIP + 2x86

基於VEH&除錯暫存器實現無痕HOOK(5)

0xCC8B8BFFmov edi,edi,

12.  HOOKHOOKHOOK

基於VEH&除錯暫存器實現無痕HOOK(5)

13.

基於VEH&除錯暫存器實現無痕HOOK(5)

14.

基於VEH&除錯暫存器實現無痕HOOK(5)

15.HOOK

15.1

基於VEH&除錯暫存器實現無痕HOOK(5)

15.2使

基於VEH&除錯暫存器實現無痕HOOK(5)


HOOK

基於VEH&除錯暫存器實現無痕HOOK(5)

HOOK

基於VEH&除錯暫存器實現無痕HOOK(5)


關於作者

作者:rkvir(榴蓮老師)

簡介:曾任某安全企業技術總監;看雪講師;曾任職國內多家大型安全公司;參與*2國家級安全專案

擅長:C/C++/Python/x86/x64彙編/系統原理&

研究方向:二進位制漏洞/FUZZ/Windows核心安全/內網攻防

相關文章