Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- module MyMemory.Imports;
- import std.stdio;
- import core.sys.windows.windows;
- enum
- {
- PROCESS_CREATE_THREAD = 0x0002,
- PROCESS_TERMINATE = 0x0001,
- PROCESS_SET_SESSIONID = 0x0004,
- PROCESS_VM_OPERATION = 0x0008,
- PROCESS_VM_READ = 0x0010,
- PROCESS_VM_WRITE = 0x0020,
- PROCESS_DUP_HANDLE = 0x0040,
- PROCESS_CREATE_PROCESS = 0x0080,
- PROCESS_SET_QUOTA = 0x0100,
- PROCESS_SET_INFORMATION = 0x0200,
- PROCESS_QUERY_INFORMATION = 0x0400,
- PROCESS_SUSPEND_RESUME = 0x0800,
- PROCESS_QUERY_LIMITED_INFORMATION = 0x1000,
- PROCESS_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0xFFFF
- }
- public static class Win32
- {
- private static HMODULE _hKernel32;
- private static HMODULE _hPspapi;
- private static HMODULE _hNtdll;
- alias extern (Windows) HMODULE function(HANDLE hProcess, HMODULE* lphModule, DWORD cb, DWORD* lpcbNeeded) fp_EnumProcessModules;
- alias extern (Windows) DWORD function(HANDLE hProcess, HMODULE hModule, LPTSTR lpFilename, DWORD nSize) fp_GetModuleFileNameEx;
- alias extern (Windows) HANDLE function(DWORD dwDesiredAccess, BOOL bInheritHandle, DWORD dwProcessId) fp_OpenProcess;
- alias extern (Windows) BOOL function(HANDLE hObject) fp_CloseHandle;
- alias extern (Windows) BOOL function(HANDLE hProcess, void* lpBaseAddress, void* lpBuffer, int nSize, void* lpNumberOfBytesRead) fp_ReadProcessMemory;
- alias extern (Windows) BOOL function(HANDLE hProcess, void* lpBaseAddress, void* lpBuffer, int nSize, void* lpNumberOfBytesWritten) fp_WriteProcessMemory;
- public static fp_GetModuleFileNameEx GetModuleFileNameEx;
- public static fp_EnumProcessModules EnumProcessModules;
- public static fp_OpenProcess OpenProcess;
- public static fp_CloseHandle CloseHandle;
- public static fp_ReadProcessMemory ReadProcessMemory;
- public static fp_WriteProcessMemory WriteProcessMemory;
- static this()
- {
- _hKernel32 = LoadLibraryA("kernel32.dll");
- _hPspapi = LoadLibraryA("psapi.dll");
- _hNtdll = LoadLibraryA("ntdll.dll");
- assert(_hKernel32, "Unable to get Kernel32 handle !");
- assert(_hPspapi, "Unable to get Psapi handle !");
- assert(_hNtdll, "Unable to get Ntdll handle !");
- EnumProcessModules = cast(fp_EnumProcessModules)GetProcAddress(_hPspapi, "EnumProcessModules");
- GetModuleFileNameEx = cast(fp_GetModuleFileNameEx)GetProcAddress(_hPspapi, "GetModuleFileNameExA");
- OpenProcess = cast(fp_OpenProcess)GetProcAddress(_hKernel32, "OpenProcess");
- CloseHandle = cast(fp_CloseHandle)GetProcAddress(_hKernel32, "CloseHandle");
- ReadProcessMemory = cast(fp_ReadProcessMemory)GetProcAddress(_hKernel32, "ReadProcessMemory");
- WriteProcessMemory = cast(fp_WriteProcessMemory)GetProcAddress(_hKernel32, "WriteProcessMemory");
- assert(EnumProcessModules, "Unable to get EnumProcessModules !");
- assert(GetModuleFileNameEx, "Unable to get GetModuleFileNameEx !");
- assert(OpenProcess, "Unable to get OpenProcess !");
- assert(CloseHandle, "Unable to get CloseHandle !");
- assert(ReadProcessMemory, "Unable to get ReadProcessMemory !");
- assert(WriteProcessMemory, "Unable to get WriteProcessMemory !");
- writeln("Imports.Win32 ctor end");
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement