/************************************************************************/ /* Copyright (C), 2016-2020, [Jeff], 保留所有权利; /* 模 块 名:; /* 描 述:; /* /* 版 本:[V]; /* 作 者:[Jeff]; /* 日 期:[1/21/2018]; /* /* /* 注 意:; /* /* 修改记录:[Jeff]; /* 修改日期:; /* 修改版本:; /* 修改内容:; /************************************************************************/ #ifndef _MEMLOADLIBRARY_HEAD_ #define _MEMLOADLIBRARY_HEAD_ #pragma once typedef BOOL (__stdcall *ProcDllMain)( HINSTANCE, DWORD, LPVOID ); class CMemLoadLibrary { public: CMemLoadLibrary(void); virtual ~CMemLoadLibrary(void); BOOL MemLoadLibrary( void *lpFileData , int DataLength); // Dll file data buffer FARPROC MemGetProcAddress(LPCSTR lpProcName); private: BOOL isLoadOk; BOOL CheckDataValide(void *lpFileData, int DataLength); int CalcTotalImageSize(); void CopyDllDatas(void *pDest, void *pSrc); BOOL FillRavAddress(void *pBase); void DoRelocation(void *pNewBase); int GetAlignedSize(int Origin, int Alignment); private: ProcDllMain pDllMain; private: DWORD pImageBase; PIMAGE_DOS_HEADER pDosHeader; PIMAGE_NT_HEADERS pNTHeader; PIMAGE_SECTION_HEADER pSectionHeader; }; #endif //_MEMLOADLIBRARY_HEAD_