主题:为什么我的dll注入不了计算器?
CString g_csDllPath = "1.dll";
HWND hWnd = ::FindWindow(NULL,"计算器");
DWORD dwProcessId;
GetWindowThreadProcessId(hWnd,&dwProcessId);
HANDLE hProcesshandle = OpenProcess(PROCESS_ALL_ACCESS, FALSE,dwProcessId);
DWORD dwLen = g_csDllPath.GetLength()+1;
LPVOID lpDllPath = (LPVOID)VirtualAllocEx(hProcesshandle,NULL,dwLen,MEM_COMMIT,PAGE_READWRITE);
BOOL isRet = WriteProcessMemory(hProcesshandle,lpDllPath,(LPVOID)(g_csDllPath.GetBuffer(0)),dwLen,NULL);
PTHREAD_START_ROUTINE pfnStartAddr;
pfnStartAddr = (PTHREAD_START_ROUTINE)GetProcAddress(GetModuleHandle("Kernel32.dll"),"LoadLibraryA");
HANDLE hThread = CreateRemoteThread(hProcesshandle,NULL,0,
pfnStartAddr,
lpDllPath,0,NULL);
WaitForSingleObject(hThread,INFINITE);
CloseHandle(hThread);
hThread = CreateRemoteThread(hProcesshandle,NULL,0,
(LPTHREAD_START_ROUTINE)FreeLibrary,
lpDllPath,0,NULL);
WaitForSingleObject(hThread,INFINITE);
CloseHandle(hThread);
为什么不行啊? 我看了1.dll已经写入了calc.exe的内存中,但是我用Iceworld查看模块就是没有1.dll,路径是对的哈··
HWND hWnd = ::FindWindow(NULL,"计算器");
DWORD dwProcessId;
GetWindowThreadProcessId(hWnd,&dwProcessId);
HANDLE hProcesshandle = OpenProcess(PROCESS_ALL_ACCESS, FALSE,dwProcessId);
DWORD dwLen = g_csDllPath.GetLength()+1;
LPVOID lpDllPath = (LPVOID)VirtualAllocEx(hProcesshandle,NULL,dwLen,MEM_COMMIT,PAGE_READWRITE);
BOOL isRet = WriteProcessMemory(hProcesshandle,lpDllPath,(LPVOID)(g_csDllPath.GetBuffer(0)),dwLen,NULL);
PTHREAD_START_ROUTINE pfnStartAddr;
pfnStartAddr = (PTHREAD_START_ROUTINE)GetProcAddress(GetModuleHandle("Kernel32.dll"),"LoadLibraryA");
HANDLE hThread = CreateRemoteThread(hProcesshandle,NULL,0,
pfnStartAddr,
lpDllPath,0,NULL);
WaitForSingleObject(hThread,INFINITE);
CloseHandle(hThread);
hThread = CreateRemoteThread(hProcesshandle,NULL,0,
(LPTHREAD_START_ROUTINE)FreeLibrary,
lpDllPath,0,NULL);
WaitForSingleObject(hThread,INFINITE);
CloseHandle(hThread);
为什么不行啊? 我看了1.dll已经写入了calc.exe的内存中,但是我用Iceworld查看模块就是没有1.dll,路径是对的哈··