小弟第一次发帖,编程新手,现在有一个亟待解决的问题希望哪个大哥能指点下现在在做一个系统安全软件,要求不允许用户在任务管理器里面关闭我的进程,注意:只要求任务管理器,其他方式不限制。以尝试过双进程保护以及CSDN里面找到的一个进程隐藏类,但效果都不是太好,双进程可能是编程的原因,有点太耗资源了,进程隐藏类又是有些机子可以实现隐藏,有些又不行,郁闷。现在正在尝试API HOOK方法,但不知道怎么用,源代码也已经找好了,但编译不成DLL(就是网上最多的那个),哪位大哥能帮帮我啊?刚注册的号,也不知道里面有多少分,嫌少了先记着,以后一定补上,先谢谢大家了!
还差得远.
随随便便就杀掉了.
API HOOK就更不用说了.
要做就做驱动层的HOOK.
做服务的方法一开始的时候就尝试过了,因为对WINDOWS还不太了解,我的软件在开机的时候必须跟服务器相连接,我注意到开机的时候本地连接要过一段时间才会出来,而本地连接没通是不能访问网络的,怕延迟太大所以就放弃了做服务程序。to:aaronwang81 对我的软件不用想的太复杂,我只是为了防止用户在任务管理器里面误操作杀死我的进程,如果用户是用高级的方法杀死我的进程,就认为是恶意用户,那就不归我应用层管了。我现在只是用最简单的方法,程序改名为WINLOGON.EXE应付着,正在研究API HOOK
这样任务管理器就杀不掉了!关键点:1.如何监视任务管理器的启动!通过添加注册表的方法实现
2.把保护的进程ID通知给HOOK模块!
http://blog.sina.com.cn/s/blog_4e5dcb9701000c4a.html
其实这一点并不难。
BOOL WINAPI GetProcessName( IN HANDLE hProcess, OUT LPTSTR lpBuffer,
IN DWORD dwSize )
{
HANDLE h = NULL;
if ( !DuplicateHandle( GetCurrentProcess(), hProcess,
GetCurrentProcess(), &h,
PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, 0 ) )
{
return FALSE;
} DWORD dw;
HMODULE hModExe;
BOOL bRet = FALSE;
if ( EnumProcessModules( h, &hModExe, sizeof( HMODULE ), &dw ) )
{
TCHAR szFullPath[MAX_PATH];
GetModuleFileNameEx( h, hModExe, szFullPath, MAX_PATH );
lstrcpyn( lpBuffer, _tcsrchr( szFullPath, _T('\\') ) + 1, dwSize );
bRet = TRUE;
}
CloseHandle( h );
return bRet;
}