Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <Windows.h>
- #include <iostream>
- #include <string>
- #include <Memory.h>
- #include <tchar.h>
- #include <psapi.h>
- #include <stdio.h>
- #define WIN32_LEAN_AND_MEAN
- #include <conio.h>
- #include <tlhelp32.h>
- #include "main.h"
- using namespace std;
- int main(int argc, char **argv)
- {
- PIMAGE_NT_HEADERS pINH;
- PIMAGE_DATA_DIRECTORY pIDD;
- PIMAGE_BASE_RELOCATION pIBR;
- HMODULE hModule;
- HANDLE hProcess, hThread;
- PVOID image, mem;
- DWORD i, count, nSizeOfImage;
- DWORD_PTR delta, OldDelta;
- LPWORD list;
- PDWORD_PTR p;
- BOOLEAN enabled;
- NTSTATUS status;
- OBJECT_ATTRIBUTES objAttr;
- CLIENT_ID cID;
- DWORD dwPid = 0;
- SetConsoleTitleA("Get Handle From processID");
- if (argc != 2)
- {
- std::cout << "Usage: PEInjection.exe [process_name]\n";
- _getch();
- return 1;
- }
- // Loading needed libraries
- _RtlImageNtHeader RtlImageNtHeader = (_RtlImageNtHeader)GetLibraryProcAddress("ntdll.dll", "RtlImageNtHeader");
- _RtlAdjustPrivilege RtlAdjustPrivilege = (_RtlAdjustPrivilege)GetLibraryProcAddress("ntdll.dll", "RtlAdjustPrivilege");
- _NtOpenProcess NtOpenProcess = (_NtOpenProcess)GetLibraryProcAddress("ntdll.dll", "NtOpenProcess");
- _NtWriteVirtualMemory NtWriteVirtualMemory = (_NtWriteVirtualMemory)GetLibraryProcAddress("ntdll.dll", "NtWriteVirtualMemory");
- _NtClose NtClose = (_NtClose)GetLibraryProcAddress("ntdll.dll", "NtClose");
- std::cout << "Waiting for the process...\n\n";
- RtlAdjustPrivilege(20, TRUE, FALSE, &enabled);
- hModule = GetModuleHandle(NULL);
- pINH = RtlImageNtHeader(hModule);
- nSizeOfImage = pINH->OptionalHeader.SizeOfImage;
- InitializeObjectAttributes(&objAttr, NULL, 0, NULL, NULL);
- int disari;
- disari = atoi(argv[1]);
- cID.UniqueProcess = (PVOID)disari;
- cID.UniqueThread = 0;
- if (!NT_SUCCESS(status = NtOpenProcess(&hProcess, PROCESS_ALL_ACCESS, &objAttr, &cID)))
- {
- std::cout << "Error: Unable to open target process handle. NtOpenProcess failed with status: " << status << "\n";
- _getch();
- return 1;
- }
- mem = VirtualAllocEx(hProcess, NULL, nSizeOfImage, MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);
- if (mem == NULL)
- {
- std::cout << "Error: Unable to allocate memory in the target process. " << GetLastError() << "\n";
- NtClose(hProcess);
- _getch();
- return 1;
- }
- std::cout << "processID : " << disari << "\n";
- std::cout << "Memory Address: 0x" << mem << "\n";
- _getch();
- return 0;
- }
- PVOID GetLibraryProcAddress(PSTR LibraryName, PSTR ProcName)
- {
- return GetProcAddress(GetModuleHandleA(LibraryName), ProcName);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement