Advertisement
Guest User

Untitled

a guest
Dec 9th, 2013
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
D 3.18 KB | None | 0 0
  1. module MyMemory.Imports;
  2. import std.stdio;
  3. import core.sys.windows.windows;
  4.  
  5. enum
  6. {
  7.         PROCESS_CREATE_THREAD                           = 0x0002,
  8.         PROCESS_TERMINATE                               = 0x0001,
  9.         PROCESS_SET_SESSIONID                           = 0x0004,
  10.         PROCESS_VM_OPERATION                            = 0x0008,
  11.         PROCESS_VM_READ                                 = 0x0010,
  12.         PROCESS_VM_WRITE                                = 0x0020,
  13.         PROCESS_DUP_HANDLE                              = 0x0040,
  14.         PROCESS_CREATE_PROCESS                          = 0x0080,
  15.         PROCESS_SET_QUOTA                               = 0x0100,
  16.         PROCESS_SET_INFORMATION                         = 0x0200,
  17.         PROCESS_QUERY_INFORMATION                       = 0x0400,
  18.         PROCESS_SUSPEND_RESUME                          = 0x0800,
  19.         PROCESS_QUERY_LIMITED_INFORMATION               = 0x1000,
  20.         PROCESS_ALL_ACCESS                              = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0xFFFF
  21. }
  22.  
  23. public static class Win32
  24. {
  25.  
  26.     private static HMODULE _hKernel32;
  27.     private static HMODULE _hPspapi;
  28.     private static HMODULE _hNtdll;
  29.  
  30.     alias extern (Windows) HMODULE function(HANDLE hProcess, HMODULE* lphModule, DWORD cb, DWORD* lpcbNeeded) fp_EnumProcessModules;
  31.     alias extern (Windows) DWORD function(HANDLE hProcess, HMODULE hModule, LPTSTR lpFilename, DWORD nSize) fp_GetModuleFileNameEx;
  32.     alias extern (Windows) HANDLE function(DWORD dwDesiredAccess, BOOL bInheritHandle, DWORD dwProcessId) fp_OpenProcess;
  33.     alias extern (Windows) BOOL function(HANDLE hObject) fp_CloseHandle;
  34.     alias extern (Windows) BOOL function(HANDLE hProcess, void* lpBaseAddress, void* lpBuffer, int nSize, void* lpNumberOfBytesRead) fp_ReadProcessMemory;
  35.     alias extern (Windows) BOOL function(HANDLE hProcess, void* lpBaseAddress, void* lpBuffer, int nSize, void* lpNumberOfBytesWritten) fp_WriteProcessMemory;
  36.  
  37.     public static fp_GetModuleFileNameEx GetModuleFileNameEx;
  38.     public static fp_EnumProcessModules EnumProcessModules;
  39.     public static fp_OpenProcess OpenProcess;
  40.     public static fp_CloseHandle CloseHandle;
  41.     public static fp_ReadProcessMemory ReadProcessMemory;
  42.     public static fp_WriteProcessMemory WriteProcessMemory;
  43.  
  44.     static this()
  45.     {
  46.  
  47.         _hKernel32 = LoadLibraryA("kernel32.dll");
  48.         _hPspapi = LoadLibraryA("psapi.dll");
  49.         _hNtdll = LoadLibraryA("ntdll.dll");
  50.  
  51.         assert(_hKernel32, "Unable to get Kernel32 handle !");
  52.         assert(_hPspapi, "Unable to get Psapi handle !");
  53.         assert(_hNtdll, "Unable to get Ntdll handle !");
  54.  
  55.         EnumProcessModules = cast(fp_EnumProcessModules)GetProcAddress(_hPspapi, "EnumProcessModules");
  56.         GetModuleFileNameEx = cast(fp_GetModuleFileNameEx)GetProcAddress(_hPspapi, "GetModuleFileNameExA");
  57.         OpenProcess = cast(fp_OpenProcess)GetProcAddress(_hKernel32, "OpenProcess");
  58.         CloseHandle = cast(fp_CloseHandle)GetProcAddress(_hKernel32, "CloseHandle");
  59.         ReadProcessMemory = cast(fp_ReadProcessMemory)GetProcAddress(_hKernel32, "ReadProcessMemory");
  60.         WriteProcessMemory = cast(fp_WriteProcessMemory)GetProcAddress(_hKernel32, "WriteProcessMemory");
  61.  
  62.         assert(EnumProcessModules, "Unable to get EnumProcessModules !");
  63.         assert(GetModuleFileNameEx, "Unable to get GetModuleFileNameEx !");
  64.         assert(OpenProcess, "Unable to get OpenProcess !");
  65.         assert(CloseHandle, "Unable to get CloseHandle !");
  66.         assert(ReadProcessMemory, "Unable to get ReadProcessMemory !");
  67.         assert(WriteProcessMemory, "Unable to get WriteProcessMemory !");
  68.  
  69.         writeln("Imports.Win32 ctor end");
  70.  
  71.     }
  72.  
  73. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement