Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //
- // DllTest.dll
- //
- #include <windows.h>
- #include <stdio.h>
- #define DllExport extern "C" __declspec(dllexport)
- void printMsg()
- {
- FILE *fptr = NULL;
- errno_t err = fopen_s(&fptr, "skelog.txt", "a+");
- if (!err)
- {
- fprintf(fptr, "Process ID=(%d) loading Dll\n", GetCurrentProcessId());
- fclose(fptr);
- }
- }
- DllExport BOOL APIENTRY DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpReserved)
- {
- switch (fdwReason)
- {
- case DLL_PROCESS_ATTACH:
- // printMsg();
- MessageBox(NULL, TEXT("DLL Injection"), TEXT("Warning"), MB_OK);
- break;
- default:
- break;
- }
- return TRUE;
- }
- DllExport LRESULT CALLBACK MouseProc(int code, WPARAM wParam, LPARAM lParam)
- {
- printMsg();
- return CallNextHookEx(NULL, code, wParam, lParam);
- }
- //
- // Test.exe
- //
- #include <windows.h>
- int main()
- {
- DWORD dwProcID = 7164;
- WCHAR argumentBuffer[] = L"D:\\Documents\\Visual Studio 2012\\Projects\\Test\\Debug\\DllTest.dll";
- HANDLE hProc = OpenProcess(PROCESS_ALL_ACCESS, FALSE, dwProcID);
- if (!hProc)
- return -1;
- HMODULE hDll = GetModuleHandle(TEXT("Kernel32"));
- if (!hDll)
- return -1;
- LPTHREAD_START_ROUTINE loadLibraryAddress = (LPTHREAD_START_ROUTINE)GetProcAddress(hDll, "LoadLibraryW");
- if (!loadLibraryAddress)
- return -1;
- LPVOID lpBaseAddress = VirtualAllocEx(hProc, NULL, 256, MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE);
- if (!lpBaseAddress)
- return -1;
- BOOL isValid = WriteProcessMemory(hProc, lpBaseAddress, argumentBuffer, sizeof(argumentBuffer), NULL);
- if (!isValid)
- return -1;
- HANDLE hThread = CreateRemoteThread(hProc, NULL, 0, loadLibraryAddress, lpBaseAddress, 0, NULL);
- if (!hThread)
- {
- DWORD error = GetLastError();
- return -1;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement