一、进程自我保护:

HOOK windows 用户层api (用户层保护)

内核层api(驱动层保护)

1:用户层hook(简单例子)

Hook

OpenProcess(....,....,DWORD dwProcessId)

拦截函数

DWORD MyOpenProcess(...,....,DWORD dwProcessId)

{

// MydwProcessId 被保护进程id

If(dwProcessId == MydwProcessId)

{

return ERROR_ACCESS_DENIED; //过滤拦截

}

else

{

return OpenProcess(....,....,dwProcessId); //正常操作

}

}

f95203b6b2c5e0f497173dbc16f8b119.png

2:驱动层hook

首先看一下OpenProcess 整个操作流程:

234ea5f8d6f2864dcf24e7c66772038c.png

用户层可以

HOOK:OpenProcess NtOpenProcess

驱动层可以

替换SSTD表对应服务的函数地址,

HOOK: NtOpenProcess,PspOpenProcess,ObOpenObjectByPointer

HOOK SSTD表对应服务的函数地址(简单例子):

fe01c7791d21ac3f0a0ed4089650dfe2.png
183d3b7e19981fc4d059650d50b259a4.png

某某SSDT 自我保护进程:

正常OpenProcess 会出现访问拒绝。

但通过驱动去获取,便原型必现

46071e1738063af297a617b2dd0711da.png

二.畅想:

这只是基本的开发模型。主要方向反病毒软件。

近期搜集了一些资料,喜欢钻研的可以聊聊。

af3bf9f4d62cf7f95aa604cc415950a8.png

更多推荐