这个隐藏方法是N年前的了,很小儿科,后面我也给个很小儿科的检测方法,先说说它是怎么隐藏的。
先解压“ 进程隐藏工具.exe”有两个exe文件,只要分析h.exe。这里直接给出它的执行过程:
h.exe
1. 分析取参数中的PID,最大四位,否则退出
2. 解密内嵌的文件,简单的求反,解密后在当前目录创建一个名为“
Www.HuiBian.Com”的临时文件(不包括引号)
3. 创建一个服务,运行刚才释放的文件,执行完隐藏任务后关闭服务。
4. 删除临时文件
Www.HuiBian.Com
1. 把作为参数传入的PID字符串转换成数字PID
2. 使用ntoskrnl.exe导出的 PsInitialSystemProcess,这个全局变量指向system进程的EPROCESS
3. 通过遍历比较PsInitialSystemProcess链表,查找PID等于指定进程的PID的EPROCESS,
找到后从PsInitialSystemProcess链中移除这个EPROCESS节点,从而达到隐藏的目。
下面给出检测方法:
只给出伪代码,具体的自己实现
EnableDebugPrivilege();
EnumProcesses(dwPIDs,sizeof(dwPIDs),&dwPidRetSize);
for( DWORD i = 0;i <= 0x41DC; i += 4 )
{
hProc = OpenProcess(PROCESS_QUERY_INFORMATION,FALSE,i);
if(hProc)
{
if( !SeekPID(dwPIDs,_countof(dwPIDs),i) )
{
dwHidden++;
dwSize = _countof(lpExeName);
GetProcessImageFileName(hProc,lpExeName,dwSize);
}
CloseHandle(hProc);
hProc = NULL;
}
}
贴张图