远程线程注入
来源:互联网 发布:淘宝网儿童女装冬装 编辑:程序博客网 时间:2024/06/03 00:00
- 首先打开指定进程获得进程句柄
- :VirtualAllocEx在远程进程中非配内存空间
- 用WriteProcessMemory把DLL路径写入1步骤中的空间中
- GetProcAddress获取本进程中DLL的虚拟地址(其他进程一样)
- 将2步骤中的地址传入CreateRemoteThread创建远程线程
- 等待WaitForSingleObject 返回函数TRUE
bool CGameMemoryDlg::InjectDllW(DWORD dwProcessId, PCWSTR pszDllFile)
{
BOOL bOk=FALSE;
HANDLE m_hInsert=NULL,hThread=NULL;
LPVOID pszDllFileRemote=NULL;
__try{
HANDLE m_hInsert = OpenProcess(PROCESS_QUERY_INFORMATION |
PROCESS_CREATE_THREAD | PROCESS_VM_OPERATION | PROCESS_VM_WRITE, FALSE,dwProcessId);
if (m_hInsert==NULL) __leave;
// 定义要传入的字符数
int cch=1+lstrlenW(pszDllFile);
int cb=cch*sizeof(wchar_t);
// 给远程进程分配用来存字符串的地址空间
pszDllFileRemote=::VirtualAllocEx(m_hInsert,NULL,cb,MEM_COMMIT,PAGE_READWRITE);
if (pszDllFileRemote==NULL) __leave;
// 把本进程字符串写入到远程进程中
if(!::WriteProcessMemory(m_hInsert,pszDllFileRemote,pszDllFile,cb,NULL)) __leave;
// 获取当前进程LoadLibraryW地址
PTHREAD_START_ROUTINE ptnThreadRtn = (PTHREAD_START_ROUTINE)::GetProcAddress(::GetModuleHandle(_T("Kernel32")),"LoadLibraryW");
if (ptnThreadRtn==NULL) __leave;
// 在远程进程中创建线程,因为线程函数和loadlibrary很像
hThread= ::CreateRemoteThread(m_hInsert,NULL,0,ptnThreadRtn,pszDllFileRemote,0,NULL);
if(hThread==NULL) __leave;
// 用来检测Handle事件的信号状态
// 参数dwMilliseconds为INFINITE时函数将直到相应时间事件变成有信号状态才返回,
// 否则就一直等待下去,直到WaitForSingleObject有返回值才执行后面的代码
WaitForSingleObject(hThread,INFINITE);
bOk=true;
}
__finally{
if (pszDllFileRemote!=NULL)
VirtualFreeEx(m_hInsert,pszDllFileRemote,0,MEM_RELEASE);
if (hThread!=NULL)
::CloseHandle(hThread);
if (m_hInsert!=NULL)
::CloseHandle(m_hInsert);
}
return bOk;
}
- 线程的远程注入
- 远程线程注入代码
- 远程注入线程
- 远程线程注入
- 线程远程注入
- 线程的远程注入
- 线程远程注入
- 远程线程dll注入
- 线程的远程注入
- 线程的远程注入
- 远程线程DLL注入
- 远程线程注入
- 老生常谈-远程线程注入
- 远程线程注入详解
- 线程的远程注入
- VC6远程线程注入
- 远程线程注入
- 远程线程注入
- 使用perl编写socket程序范例
- usaco Controlling Companies
- CStdioFile的WriteString 不能写汉字或英文的解决办法
- js 判断各种浏览器的方法与比较
- Facebook和Twitter之后 我们用什么?
- 远程线程注入
- Python的世界
- eclipse无法导入import pygame解决方法
- 大学生工作满一年别忘转正定级
- 从零开始学习OpenGL ES之一 – 基本概念
- html里面 的 这些标签也很好用
- 从零开始学习OpenGL ES之二 – 简单绘图概述
- 老生常谈-远程线程注入
- 事件对象。