思路是这样的! 系统关闭某程序的时候不是要发送某消息么! 我想使用HOOK 屏蔽向我的这个程序发送这个关闭的消息 从而达到自己杀不死的目的。。不知道这个方法可行不!! 因现在在弄一个小东西,需要用到这个功能,但是对于HOOK 的理解不够! 希望大大们帮下忙 有直接的类或 模块直接用就好了,DLL 就算了 要做的是绿色软件!
解决方案 »
- 从公网映射网络驱动器问题?
- 疑难问题答疑!请高手帮忙!谢谢!万分感谢!
- 如何在我点击combo选项时,数据库的相应数据被调出,并在textbox中显示
- VB如何调用打印控制语言
- 各们大侠们问一个点对点通信软件的问题 100分上次忘记设分了
- 小小问题
- 用VB编译的程序~若在没有安装过VB的机子上运行,需要VB运行库~能不能在编译的同时把所用到的库包含在程序里面,使得没有运行库也可以用
- 用ADODC控件连接ACCESS数据库,怎么样寻找相对路径?
- 求教:CommonDialog控件取多个文件时为什么只有路径而没有路径名?
- 一个关于vb程序调试的问题?
- MSCOMM属性问题
- 紧急,如何扑捉屏幕上的鼠标所在位置的坐标和记录下来,并判断鼠标的左键还是右键动作记录下来
禁止打开进程就可以了,一般来说就是HOOK OPENPROCESS这个API,或者说防止调用,让返回值不正确或无法返回都可以。。
想获取OPENPROCESS的地址一般不能直接HOOK,而是在进程的4GB地址空间内搜索kernel32.DLL(之所以要搜索,原因就是不同系统他的位置不一样),然后定位OPENPROCESS函数地址,进而进行修改,VB可以办到。
所以我觉得和关机消息没啥关系,你只要正常获取这个消息然后处理自己的操作就可以了吧。
不过例程网上应该是有的呵呵
说白了就是HOOK OPENPROCESS 这个API,只是方法不同其他的而已。
==============那我可以说,这几乎是不可能的
你这个功能要用到API Hook,不是那么好搞
我倒是有个C++的例子,不过按你的要求恐怕用不了,而且这个东西翻译成vb也不好做(虽然我做了,但是用的是很奇怪的方法)
加我QQ 285305530
回答 陈辉(chenhui)
to kmlxk(xiaoKKKK) : 谢谢你的回答有点意思! 我说说我要做的东西! 有兴趣的一起关注...最好的效果: 隐藏进程
其次:杀不死
再次:进程守护
再再次: 只隐藏在任务管理内的 我从下往上开始做!
只隐藏任务管理器内 应用程序列表 内的内容就一个属性设置就OK 了! app.title="" 就OK了进程守护:这个完全是自己的思路!2个程序,每个程序启动后都把自己的窗体标题,路径,还有句柄,写到注册表内! 同时使用一个计时间隔检测对方程序是否存在,检测方法使用findwindows API 检测对方窗体标题,若返回0 shell 对方路径...杀不死:就是这个帖子讨论的东西,今天找到了一个hookapi 控件,能达到效果,但是有缺陷,就是其过程会造成假死10来秒...主要是不明白原理。不爽,所以若有清晰的思路提供配合代码我想我会掌握这一技能的!隐藏进程,这个是最理想的方法了。 也找到了关于这个的一个DLL 。也有缺陷,第二次实验效果就无效了。大概原因是上次使用的DLL 未释放...又不懂这东西..所以也不爽!以上的东西通过冰刃都可以干掉程序... 以前记得我朋友(DELPHI的)拥有了和冰刃一样的杀不死! 冰刃也查不到的隐藏进程,那个时候API 一个都没接触到,所以现在就这样了! 现在他在深圳工作,放弃了程序了。所以那样的效果只有看慢慢掌握新的东西来完成了!! 希望大家都来这里讨论这个问题!!!
IN ACCESS_MASK AccessMask,IN POBJECT_ATTRIBUTES ObjectAttributes,IN PCLIENT_ID ClientId)
{
if (ClientId.UniqueProcess==1234) return STATUS_ACCESS_DENIED;
CHookOpenProcess->HookStatus(FALSE);
NTSTATUS ntStatus = NtOpenProcess(ProcessHandle,AccessMask,ObjectAttributes,ClientId);
CHookOpenProcess->HookStatus(TRUE);
return ntStatus;
}