远程线程注入是一种把代码注入到其他进程执行的行为,木马通常利用此技术隐藏自己
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了远程线程注入是一种把代码注入到其他进程执行的行为,木马通常利用此技术隐藏自己相关的知识,希望对你有一定的参考价值。
进程:C:\Windows\System32\wbem\WmiPrvSE.exe动作:远程线程注入
,我都300多次了
很多用360的人都这样,有个人的截图达到了千次
我查了一下1月15日就有人这样说
我用360+金山+windows清理助手都没问题,全面诊断也没问题
估计没事,这莫多人这样呢,怕什么.
其他的远程可能是你下载的一些软件,如果这些软件都安全,就不要管它了
建议用windows清理助手杀木马比360强多了
360工作人员的回答程序是安全的 就会自动允许。对于安全的程序不拦截 自动放行。如果您要问那为什么还保留记录,是因为我们的确记录到您某个正常的程序进行了这个操作
如果对您有帮助,请记得采纳为满意答案,谢谢!祝您生活愉快!
Vae团队招人!!!欢迎各位加入!!!走过路过不要错过!!!迅猛发展中!!! 参考技术A 对的。
OpenProcess
WriteProcessMemory
CreateRemoteThread
有何问题?
远程线程注入代码
远程线程注入代码
远程线程注入可以实现向一个正在运行的进程注入特定的代码。每个进程都有自己的私有空间。远程线程注入可以实现向一个正在运行的进程注入代码。通过进程名找到进程ID,在远程进程开辟空间,启动一个线程,执行一个DLL中的函数,通过得到kernel32中LoadLibrary函数地址,通过执行LoadLibrary载入DLL中的导出函数,执行我们自己定一的代码。实现如下:
//通过进程名得到进程ID
DWORD GetProcessIdFromName(LPCTSTR name)
{
PROCESSENTRY32 pe;
DWORD id = 0;
HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
pe.dwSize = sizeof(PROCESSENTRY32);
if( !Process32First(hSnapshot,&pe) )
return 0;
do
{
pe.dwSize = sizeof(PROCESSENTRY32);
if( Process32Next(hSnapshot,&pe)==FALSE )
break;
if(strcmp(pe.szExeFile,name) == 0)
{
id = pe.th32ProcessID;
break;
}
} while(1);
CloseHandle(hSnapshot);
return id;
}
//注入代码
void CMTestDlg::OnButton1()
{
// TODO: Add your control notification handler code here
DWORD dwRemoteProcessId=GetProcessIdFromName("notepad.exe");
CString str;
str.Format("%u",dwRemoteProcessId);
AfxMessageBox(str,MB_OK);
HANDLE hRemoteProcess=OpenProcess(PROCESS_CREATE_THREAD|PROCESS_VM_OPERATION|PROCESS_VM_WRITE,FALSE,dwRemoteProcessId);
WCHAR* pszLibFileName=L"MDll.dll";
int cb=(1+lstrlenW(pszLibFileName))*sizeof(WCHAR);
LPVOID pszLibFileRemote=(PWSTR)VirtualAllocEx(hRemoteProcess,NULL,cb,MEM_COMMIT,PAGE_READWRITE);
BOOL iReturnCode=WriteProcessMemory(hRemoteProcess,pszLibFileRemote,(PVOID)pszLibFileName,cb,NULL);
//HMODULE hModule=GetModuleHandle(TEXT("kernel32"));
HMODULE hModule=LoadLibrary("C:/WINDOWS/system32/kernel32");
//typedef HModule (* pfunc)(LPCSTR filename);
PTHREAD_START_ROUTINE pfnStartAddr=(PTHREAD_START_ROUTINE)GetProcAddress(hModule,"LoadLibraryA");
//格式化出错信息
TCHAR szBuf[80];
LPVOID lpMsgBuf;
DWORD dw = GetLastError();
FormatMessage(
FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM,
NULL,
dw,
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
(LPTSTR) &lpMsgBuf,
0, NULL );
wsprintf(szBuf,
" failed with error %d: %s",
dw, lpMsgBuf);
AfxMessageBox(szBuf,MB_OK);
LocalFree(lpMsgBuf);
HANDLE hRemoteThread=CreateRemoteThread(hRemoteProcess,NULL,0,pfnStartAddr,pszLibFileRemote,0,NULL);
//等待远程线程退出
WaitForSingleObject(hRemoteThread, INFINITE);
//清场处理
if (pszLibFileRemote != NULL)
VirtualFreeEx(hRemoteProcess, pszLibFileRemote, 0, MEM_RELEASE);
if (hRemoteThread != NULL) CloseHandle(hRemoteThread );
if (hRemoteProcess!= NULL) CloseHandle(hRemoteProcess);
}
以上是关于远程线程注入是一种把代码注入到其他进程执行的行为,木马通常利用此技术隐藏自己的主要内容,如果未能解决你的问题,请参考以下文章