使用远程线程注入DLL
使用远程线程注入DLL
总览注入OpenProcess()VirtualAllocEx()WriteProcessMemory()GetProcessAddress() -> LoadLibraryCreateRemoteThread() -> LoadLibrary() -> DLLMain()注出CreateToolhelp2Snapshot()Module2FirstW
使用远程线程注入DLL
总览
注入
- OpenProcess()
- VirtualAllocEx()
- WriteProcessMemory()
- GetProcessAddress() -> LoadLibrary
- CreateRemoteThread() -> LoadLibrary() -> DLLMain()
注出
- CreateToolhelp2Snapshot()
- Module2FirstW Module2extW
- OpenProcess()
- GetProcessAddress -> FreeLibrary()
- CreateRemoteThread() -> FreeLibrary()
注入
代码语言:javascript代码运行次数:0运行复制BOOL WIAPI injectLibW(DWORD pid, PCWSTR path) {
BOOL bRet = FALSE;
HADLE hProcess = ULL, hThread = ULL;
PCWSTR pszLibFileRemote = ULL;
CString test;
//hProcess = OpenProcess(
// PROCESS_QUERY_IFORMATIO |
// PROCESS_CREATE_THREAD |
// PROCESS_VM_OPERATIO |
// PROCESS_VM_WRITE,
// FALSE,
// pid
//);
hProcess = OpenProcess(
PROCESS_ALL_ACCESS,
FALSE,
pid);
if (hProcess == ULL) return FALSE;
int pathLen = lstrlenW(path) + 1;
int pathByteum = pathLen * sizeof(wchar_t);
pszLibFileRemote = (PCWSTR)VirtualAllocEx(hProcess, ULL, pathByteum, MEM_COMMIT, PAGE_READWRITE);
if (pszLibFileRemote == ULL) return FALSE;
if (!WriteProcessMemory(hProcess, (LPVOID)pszLibFileRemote, path, pathByteum, ULL)) return FALSE;
PTHREAD_START_ROUTIE pLoadLib = (PTHREAD_START_ROUTIE)GetProcAddress(GetModuleHandle(_T("Kernel2")), "LoadLibraryW");
if (pLoadLib == ULL) return FALSE;
AfxMessageBox(_T("OK"));
hThread = CreateRemoteThread(hProcess, ULL, 0,
pLoadLib,
(LPTHREAD_START_ROUTIE)pszLibFileRemote,
0,
ULL);
if (hThread == ULL) {
test.Format(_T("%d"), GetLastError());
AfxMessageBox(test);
return FALSE;
}
AfxMessageBox(_T("OK"));
WaitForSingleObject(hThread, IFIITE);
bRet = TRUE;
if (pszLibFileRemote != ULL)
{
VirtualFreeEx(hProcess, (LPVOID)pszLibFileRemote, 0, MEM_RELEASE);
}
if (hThread != ULL)
{
CloseHandle(hThread);
}
if (hProcess != ULL)
{
CloseHandle(hProcess);
}
return bRet;
}
BOOL WIAPI injectLibA(DWORD pid, PCSTR path) {
SIZE_T size = lstrlenA(path);
PWSTR pathw = (PWSTR)_alloca(size * sizeof(wchar_t));
StringCchPrintfW(pathw, size, L"%s", path);
return injectLibW(pid, pathw);
}
注出
代码语言:javascript代码运行次数:0运行复制BOOL WIAPI unInjectLibW(DWORD pid, PCWSTR path) {
BOOL bRet = FALSE;
HADLE hSnapshot = ULL;
HADLE hProcess = ULL, hThead = ULL;
hSnapshot = CreateToolhelp2Snapshot(TH2CS_SAPMODULE, pid);
if (hSnapshot == ULL) return FALSE;
MODULEETRY2W me = { sizeof(me) };
BOOL bFound = FALSE;
BOOL bMoreMods = Module2FirstW(hSnapshot, &me);
for (;bMoreMods;bMoreMods = Module2extW(hSnapshot, &me))
{
bFound = (_wcsicmp(me.szModule, path) == 0 || _wcsicmp(me.szExePath, path) == 0);
if (bFound)
{
break;
}
}
if (!bFound) {
AfxMessageBox(L"到到你要卸载的dll");
return FALSE;
}
hProcess = OpenProcess(
PROCESS_ALL_ACCESS,
FALSE,
pid
);
PTHREAD_START_ROUTIE psrThread = (PTHREAD_START_ROUTIE)GetProcAddress(GetModuleHandle(TEXT("Kernel2")), "FreeLibrary");
if (psrThread == ULL)
{
AfxMessageBox(L"freelibrary失败");
return FALSE;
}
hThead = CreateRemoteThread(hProcess, ULL, 0, psrThread, , 0, ULL);
if (hThead == ULL)
{
AfxMessageBox(L"CreateRemoteThread失败");
return FALSE;
}
WaitForSingleObject(hThead, IFIITE);
bRet = TRUE;
if (hSnapshot != ULL)
{
CloseHandle(hSnapshot);
}
if (hThead != ULL)
{
CloseHandle(hThead);
}
if (hProcess != ULL)
{
CloseHandle(hProcess);
}
return bRet;
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:2018-01-21,如有侵权请联系 cloudcommunity@tencent 删除线程dllnullpathreturn #感谢您对电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格的认可,转载请说明来源于"电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格
上传时间: 2025-07-24 14:23:38
推荐阅读
留言与评论(共有 13 条评论) |
本站网友 新税率表 | 26分钟前 发表 |
hThread = ULL; PCWSTR pszLibFileRemote = ULL; CString test; //hProcess = OpenProcess( // PROCESS_QUERY_IFORMATIO | // PROCESS_CREATE_THREAD | // PROCESS_VM_OPERATIO | // PROCESS_VM_WRITE | |
本站网友 米德 | 21分钟前 发表 |
size | |
本站网友 高危药品 | 20分钟前 发表 |
0 | |
本站网友 全友家私家具图片 | 12分钟前 发表 |
path) == 0 || _wcsicmp(me.szExePath | |
本站网友 山泉公馆 | 22分钟前 发表 |
0 | |
本站网友 特别团体 | 13分钟前 发表 |
pid ); PTHREAD_START_ROUTIE psrThread = (PTHREAD_START_ROUTIE)GetProcAddress(GetModuleHandle(TEXT("Kernel2")) | |
本站网友 虚拟主机测评 | 28分钟前 发表 |
pathw); }注出代码语言:javascript代码运行次数:0运行复制BOOL WIAPI unInjectLibW(DWORD pid | |
本站网友 桂林新房 | 10分钟前 发表 |
pid); if (hSnapshot == ULL) return FALSE; MODULEETRY2W me = { sizeof(me) }; BOOL bFound = FALSE; BOOL bMoreMods = Module2FirstW(hSnapshot | |
本站网友 李连平 | 27分钟前 发表 |
如有侵权请联系 cloudcommunity@tencent 删除前往查看线程dllnullpathreturn | |
本站网友 dozo | 10分钟前 发表 |
(LPVOID)pszLibFileRemote | |
本站网友 宇通客车有限公司 | 21分钟前 发表 |
pid ); PTHREAD_START_ROUTIE psrThread = (PTHREAD_START_ROUTIE)GetProcAddress(GetModuleHandle(TEXT("Kernel2")) | |
本站网友 山东大学吧 | 28分钟前 发表 |
FALSE |