快哭啦~ CreateRemoteThread x64位的远程线程老是把目标进程给干掉啦
我想用远程线程注入的方式目标进程中注入CloseHandle()函数,win32正常执行,x64位目标进程的exe会异常退出,怎么办?
DWORD CloseRemoteHandle( LPCTSTR lpProcessName, DWORD processID, HANDLE handle )
{
DWORD dwThreadSize = 0x1000;
RemoteParam remoteData;
ZeroMemory(&remoteData, sizeof(RemoteParam));
HINSTANCE kernel32 = LoadLibrary(L"Kernel32.dll");
remoteData.pCloseHandle = (DWORD)GetProcAddress(kernel32, "CloseHandle");
remoteData.handle = handle;
HANDLE hProcess = OpenProcess( PROCESS_ALL_ACCESS, FALSE, processID );
void* pRemoteThread = VirtualAllocEx(hProcess, 0, dwThreadSize, MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);
WriteProcessMemory(hProcess, pRemoteThread, &threadProc, dwThreadSize, 0);
RemoteParam* pRemoteParam = (RemoteParam*)VirtualAllocEx( hProcess , 0, sizeof(RemoteParam), MEM_COMMIT, PAGE_READWRITE);
WriteProcessMemory(hProcess, pRemoteParam, &remoteData, sizeof(remoteData), 0);
HANDLE hRemoteThread = CreateRemoteThread(
hProcess,
NULL,
0,
(DWORD (__stdcall *)(void *))pRemoteThread,
pRemoteParam,
0,
0);
::WaitForSingleObject(hRemoteThread, INFINITE);
CloseHandle(hRemoteThread);
return TRUE;
}
DWORD CloseRemoteHandle( LPCTSTR lpProcessName, DWORD processID, HANDLE handle )
{
DWORD dwThreadSize = 0x1000;
RemoteParam remoteData;
ZeroMemory(&remoteData, sizeof(RemoteParam));
HINSTANCE kernel32 = LoadLibrary(L"Kernel32.dll");
remoteData.pCloseHandle = (DWORD)GetProcAddress(kernel32, "CloseHandle");
remoteData.handle = handle;
HANDLE hProcess = OpenProcess( PROCESS_ALL_ACCESS, FALSE, processID );
void* pRemoteThread = VirtualAllocEx(hProcess, 0, dwThreadSize, MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);
WriteProcessMemory(hProcess, pRemoteThread, &threadProc, dwThreadSize, 0);
RemoteParam* pRemoteParam = (RemoteParam*)VirtualAllocEx( hProcess , 0, sizeof(RemoteParam), MEM_COMMIT, PAGE_READWRITE);
WriteProcessMemory(hProcess, pRemoteParam, &remoteData, sizeof(remoteData), 0);
HANDLE hRemoteThread = CreateRemoteThread(
hProcess,
NULL,
0,
(DWORD (__stdcall *)(void *))pRemoteThread,
pRemoteParam,
0,
0);
::WaitForSingleObject(hRemoteThread, INFINITE);
CloseHandle(hRemoteThread);
return TRUE;
}
...全文
相关推荐
C/C++ 进程无模块内存注入[x86/x64]
**创建远程线程**:使用CreateRemoteThread函数在目标进程中创建一个新的线程,该线程将执行注入的代码。3.
win10可用x64进程替换代码
为了实现x64进程替换,通常需要以下步骤:1. **检测目标进程**:首先,程序需要找到记事本进程的PID(进程ID)。2.
Windows-DLL-Injector:为x86和x64 Windows OS进程实现的C ++中的某些DLL注入技术
该项目基于C++实现了多种Windows平台下的DLL注入技术,包括CreateRemoteThread、NtCreateThreadEx等方法。代码支持x86与x64架构,具备获取系统信息、提权、进
还原x64跨进程"GetModuleHandle+GetProcAddress"实现过程(纯内存)
创建远程线程,将函数地址和参数传递到目标进程。这通常通过CreateRemoteThread函数完成,需要准备合适的线程入口点和参数。5. 等待远程线程执行完毕,获取结果。
易语言X64注入器.rar
- 创建远程线程:调用CreateRemoteThread在目标进程中执行新注入的代码。5. **安全与风险**:程序注入技术虽然有其合法用途,但也常常被滥用,例如制作木马和病毒。


