www.pudn.com > PEMonitor_0.10_src.zip > MemServ.c
/////////////////////////////////////////////////////////////////////////////// // // FileName : MemServ.c // Version : 1.0 // Author : Luo Cong // Date : 2004-09-02 9:59:07 // Comment : // /////////////////////////////////////////////////////////////////////////////// #include#include "MemServ.h" #include "Misc.h" #include "PEServ.h" /** * Must call IsPEFile() & Initialize() first! */ int ReadCommand( /* [in] */ const unsigned long ip, /* [in] */ const size_t cmdsize, /* [out] */ char *cmd ) { int nRetResult = 0; unsigned long ulFileOffset; ulFileOffset = RVAToFileOffset(ip - g_ulImageBase); if (g_lFileSize < (long)(ulFileOffset + cmdsize)) goto Exit0; if (NULL != cmd) memcpy(cmd, &g_FileContents[ulFileOffset], cmdsize); nRetResult = 1; Exit0: return nRetResult; } /** * Must call IsPEFile() & Initialize() first! */ int GetDisassemblerRange( /* [out] */ unsigned long *pBase, /* [out] */ unsigned long *pSize ) { int nRetResult = 0; int nRetCode; IMAGE_NT_HEADERS nt_header; MY_PROCESS_ERROR(pBase); MY_PROCESS_ERROR(pSize); nRetCode = GetNTHeader(&nt_header); MY_PROCESS_ERROR(nRetCode); *pBase = nt_header.OptionalHeader.ImageBase + nt_header.OptionalHeader.BaseOfCode; *pSize = nt_header.OptionalHeader.SizeOfCode; nRetResult = 1; Exit0: return nRetResult; }