BOOL Inject(DWORD pid)
{
if (0 == pid)
return FALSE;
HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid);
if (NULL == hProcess)
return FALSE;
PTHREAD_START_ROUTINE pfnThreadRtn = (PTHREAD_START_ROUTINE)GetProcAddress(GetModuleHandle(TEXT("Kernel32")), "LoadLibraryA");
if (NULL == pfnThreadRtn)
return FALSE;
LPVOID libname = VirtualAllocEx(hProcess, NULL, lstrlen(dllName), MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE);
if (NULL == libname)
return FALSE;
BOOL written = WriteProcessMemory(hProcess, libname, dllName, lstrlen(dllName), NULL);
if (FALSE == written)
return FALSE;
TCHAR buffer[128];
ZeroMemory(buffer, 128);
ReadProcessMemory(hProcess, libname, buffer, 128, NULL);
MessageBox(NULL, buffer, TEXT("Info"), MB_OK);
HANDLE hThread = CreateRemoteThread(hProcess, NULL, 0, (LPTHREAD_START_ROUTINE)pfnThreadRtn, libname, 0, NULL);
if (NULL == hThread)
return FALSE;
CloseHandle(hProcess);
return TRUE;
}
Qk9PTCBJbmplY3QoRFdPUkQgcGlkKQp7CglpZiAoMCA9PSBwaWQpCgkJcmV0dXJuIEZBTFNFOwoKCUhBTkRMRSBoUHJvY2VzcyA9IE9wZW5Qcm9jZXNzKFBST0NFU1NfQUxMX0FDQ0VTUywgRkFMU0UsIHBpZCk7CglpZiAoTlVMTCA9PSBoUHJvY2VzcykKCQlyZXR1cm4gRkFMU0U7CgoJUFRIUkVBRF9TVEFSVF9ST1VUSU5FIHBmblRocmVhZFJ0biA9IChQVEhSRUFEX1NUQVJUX1JPVVRJTkUpR2V0UHJvY0FkZHJlc3MoR2V0TW9kdWxlSGFuZGxlKFRFWFQoIktlcm5lbDMyIikpLCAiTG9hZExpYnJhcnlBIik7CglpZiAoTlVMTCA9PSBwZm5UaHJlYWRSdG4pCgkJcmV0dXJuIEZBTFNFOwoKCUxQVk9JRCBsaWJuYW1lID0gVmlydHVhbEFsbG9jRXgoaFByb2Nlc3MsIE5VTEwsIGxzdHJsZW4oZGxsTmFtZSksICBNRU1fQ09NTUlUIHwgTUVNX1JFU0VSVkUsIFBBR0VfUkVBRFdSSVRFKTsKCWlmIChOVUxMID09IGxpYm5hbWUpCgkJcmV0dXJuIEZBTFNFOwoKCUJPT0wgd3JpdHRlbiA9IFdyaXRlUHJvY2Vzc01lbW9yeShoUHJvY2VzcywgbGlibmFtZSwgZGxsTmFtZSwgbHN0cmxlbihkbGxOYW1lKSwgTlVMTCk7CglpZiAoRkFMU0UgPT0gd3JpdHRlbikKCQlyZXR1cm4gRkFMU0U7CglUQ0hBUiBidWZmZXJbMTI4XTsKCVplcm9NZW1vcnkoYnVmZmVyLCAxMjgpOwoJUmVhZFByb2Nlc3NNZW1vcnkoaFByb2Nlc3MsIGxpYm5hbWUsIGJ1ZmZlciwgMTI4LCBOVUxMKTsKCU1lc3NhZ2VCb3goTlVMTCwgYnVmZmVyLCBURVhUKCJJbmZvIiksIE1CX09LKTsKCglIQU5ETEUgaFRocmVhZCA9IENyZWF0ZVJlbW90ZVRocmVhZChoUHJvY2VzcywgTlVMTCwgMCwgKExQVEhSRUFEX1NUQVJUX1JPVVRJTkUpcGZuVGhyZWFkUnRuLCBsaWJuYW1lLCAwLCBOVUxMKTsKCWlmIChOVUxMID09IGhUaHJlYWQpCgkJcmV0dXJuIEZBTFNFOwoKCUNsb3NlSGFuZGxlKGhQcm9jZXNzKTsKCXJldHVybiBUUlVFOwp9Cg==