我试图向任务管理器隐藏一个进程,但没有成功。我不明白为什么...
提前感谢您的帮助...!
这是我的函数注入hider_dll.dll:
int Inject(char* dll)
{
int pid = getpid();
HANDLE hProc=OpenProcess(PROCESS_ALL_ACCESS,false,pid);
if(hProc)
{
cout<<"OpenProcess success"<<endl;
}
else
{
cout<<"OpenProcess failed..."<<endl;
return 0;
}
LPVOID Vmem=VirtualAllocEx(hProc,0,strlen(dll)+1,MEM_COMMIT|MEM_RESERVE,PAGE_READWRITE);
DWORD wrt;
WriteProcessMemory(hProc,Vmem,dll,strlen(dll),(SIZE_T*)&wrt);
stringstream sstr;
sstr << wrt;
string str = sstr.str();
cout<<"Writed "+str+" bytes"<<endl;
FARPROC LoadLib=GetProcAddress(LoadLibrary(L"kernel32.dll"),"LoadLibraryA");
HANDLE h=CreateRemoteThread(hProc,0,0,(LPTHREAD_START_ROUTINE)LoadLib,Vmem,0,0);
if(h)
{
cout<<"CreateRemoteThread success"<<endl;
}
else
{
cout<<"CreateRemoteThread failed\r\nError:"<<GetLastError()<<endl;
return 0;
}
WaitForSingleObject(h,INFINITE);
DWORD exit;
GetExitCodeThread(h,&exit);
cout<<"Dll loaded to "<<exit<<endl;
return 1;
}
2条答案
按热度按时间lg40wkob1#
下面是一个合适的注射器:
要从任务管理器中隐藏进程,您需要挂接NtQuerySystemInformation(),如果使用参数SYSTEM_PROCESS_INFORMATION,则需要从进程的链接列表中删除进程。
这就是你的钩子看起来的样子:
qco9c6ql2#
我喜欢这个答案。只是我会使用EnumProcesses来检查任务管理器是否正在运行,而不是使用
CreateToolhelp32Snapshot
和朋友(在函数DWORD GetProcId(const char* procName)
内)