MemLoadLibrary.h 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. /************************************************************************/
  2. /* Copyright (C), 2016-2020, [Jeff], 保留所有权利;
  3. /* 模 块 名:;
  4. /* 描 述:;
  5. /*
  6. /* 版 本:[V];
  7. /* 作 者:[Jeff];
  8. /* 日 期:[1/21/2018];
  9. /*
  10. /*
  11. /* 注 意:;
  12. /*
  13. /* 修改记录:[Jeff];
  14. /* 修改日期:;
  15. /* 修改版本:;
  16. /* 修改内容:;
  17. /************************************************************************/
  18. #ifndef _MEMLOADLIBRARY_HEAD_
  19. #define _MEMLOADLIBRARY_HEAD_
  20. #pragma once
  21. typedef BOOL (__stdcall *ProcDllMain)( HINSTANCE, DWORD, LPVOID );
  22. class CMemLoadLibrary
  23. {
  24. public:
  25. CMemLoadLibrary(void);
  26. virtual ~CMemLoadLibrary(void);
  27. BOOL MemLoadLibrary( void *lpFileData , int DataLength); // Dll file data buffer
  28. FARPROC MemGetProcAddress(LPCSTR lpProcName);
  29. private:
  30. BOOL isLoadOk;
  31. BOOL CheckDataValide(void *lpFileData, int DataLength);
  32. int CalcTotalImageSize();
  33. void CopyDllDatas(void *pDest, void *pSrc);
  34. BOOL FillRavAddress(void *pBase);
  35. void DoRelocation(void *pNewBase);
  36. int GetAlignedSize(int Origin, int Alignment);
  37. private:
  38. ProcDllMain pDllMain;
  39. private:
  40. DWORD pImageBase;
  41. PIMAGE_DOS_HEADER pDosHeader;
  42. PIMAGE_NT_HEADERS pNTHeader;
  43. PIMAGE_SECTION_HEADER pSectionHeader;
  44. };
  45. #endif //_MEMLOADLIBRARY_HEAD_