一、进程自我保护:
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); //正常操作
}
}
2:驱动层hook
首先看一下OpenProcess 整个操作流程:
用户层可以
HOOK:OpenProcess NtOpenProcess
驱动层可以
替换SSTD表对应服务的函数地址,
HOOK: NtOpenProcess,PspOpenProcess,ObOpenObjectByPointer
HOOK SSTD表对应服务的函数地址(简单例子):
某某SSDT 自我保护进程:
正常OpenProcess 会出现访问拒绝。
但通过驱动去获取,便原型必现
二.畅想:
这只是基本的开发模型。主要方向反病毒软件。
近期搜集了一些资料,喜欢钻研的可以聊聊。