博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c#拦截程序的运行
阅读量:5899 次
发布时间:2019-06-19

本文共 614 字,大约阅读时间需要 2 分钟。

有几种方法:

一.Ring3Hook: 可以写个驱动程序, 只需要在初始化代码中用PsSetCreateProcessNotifyRoutine注册一个回调函数就可以在接下去任何process创建时获得通知。 然后只要想办法通知ring3的前端程序就可以了。 如果想在ring3通过api hook实现, 那么需要至少hook所有已存在process的创建进程的api, 据我所知, 至少需要hook各进程内kernel32.dll中的CreateProcessInternalW和advapi32.dll中的CreateProcessWithLogonW,CreateProcessWithTokenW (也许还有漏掉的, 不过hook这几个api后普通程序的创建都能抓住了)

二.使用普通的HOOK,HOOK WH_SHELL消息.但是有遗漏的.只能HOOK到通过ShellExecute启动的程序.象QQ就HOOK不到.

三.做一个dll,在注册表HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows键下修改键值AppInit_DLLs,把你的dll及路径加上。每个程序启动后都会Load你的dll

 

 

 

转载于:https://www.cnblogs.com/sofire/archive/2010/11/19/1881392.html

你可能感兴趣的文章
第四十八讲:tapestry 与 淘宝kissy editor编辑器带图片上传
查看>>
图像处理入门——扭曲
查看>>
列表,元组,字典的异同
查看>>
在MyEclipse中构建SQL查询语句
查看>>
Linux/Centos 重置Mysql root用户密码
查看>>
2017-10-9linux文本处理
查看>>
CALayer的那些事(二)
查看>>
[C语言]unicode与utf-8编码转换(一)
查看>>
root用户可以引入cx_Oracle包,其他用户不可以导入
查看>>
Linux防火墙iptables学习笔记(二)参数指令
查看>>
Prometheus监控的最佳实践——关于监控的3项关键指标
查看>>
单向的1:n
查看>>
旧电脑如何华丽变身专业上网行为管理设备!
查看>>
linux进程管理及kill命令详解
查看>>
oracle的查询结果按照in条件顺序输出
查看>>
PHP 打印函数之 print print_r
查看>>
学生信息管理系统分析和感想
查看>>
__set魔术方法可不可以加private属性
查看>>
MySQL 4种事务的隔离级别
查看>>
跟我一起学docker(13)--docker Machine的使用
查看>>