Win32BinaryFile Class Reference

#include <loader/Win32BinaryFile.h>

Inheritance diagram for Win32BinaryFile:

BinaryFile List of all members.

Detailed Description

Definition at line 159 of file Win32BinaryFile.h.

Public Member Functions

virtual void AddSymbol (ADDRESS uNative, const char *pName)
virtual void Close ()
virtual bool DisplayDetails (const char *fileName, FILE *f=stdout)
void dumpSymbols ()
virtual ADDRESS GetAddressByName (const char *name, bool bNoTypeOK=false)
DWord getDelta ()
virtual std::list< const char * > getDependencyList ()
virtual const char * GetDynamicProcName (ADDRESS uNative)
virtual ADDRESS GetEntryPoint ()
virtual std::list< SectionInfo * > & GetEntryPoints (const char *pEntry="main")
virtual const char * getFilename () const
virtual LOAD_FMT GetFormat () const
virtual ADDRESS getImageBase ()
virtual size_t getImageSize ()
virtual MACHINE GetMachine () const
virtual ADDRESS GetMainEntryPoint ()
virtual std::map< ADDRESS,
std::string > & 
getSymbols ()
bool hasDebugInfo ()
virtual bool IsDynamicLinkedProcPointer (ADDRESS uNative)
virtual ADDRESS IsJumpToAnotherAddr (ADDRESS uNative)
virtual bool isLibrary () const
bool IsMinGWsAllocStack (ADDRESS uNative)
bool IsMinGWsCleanupSetup (ADDRESS uNative)
bool IsMinGWsFrameEnd (ADDRESS uNative)
bool IsMinGWsFrameInit (ADDRESS uNative)
bool IsMinGWsMalloc (ADDRESS uNative)
virtual bool IsStaticLinkedLibProc (ADDRESS uNative)
virtual bool Open (const char *sName)
virtual int readNative1 (ADDRESS a)
virtual int readNative2 (ADDRESS a)
virtual int readNative4 (ADDRESS a)
virtual QWord readNative8 (ADDRESS a)
virtual float readNativeFloat4 (ADDRESS a)
virtual double readNativeFloat8 (ADDRESS a)
virtual const char * SymbolByAddress (ADDRESS dwAddr)
virtual void UnLoad ()
 Win32BinaryFile ()
virtual ~Win32BinaryFile ()

Protected Member Functions

virtual bool RealLoad (const char *sName)
int win32Read2 (short *ps) const
int win32Read4 (int *pi) const

Private Member Functions

void findJumps (ADDRESS curr)
bool PostLoad (void *handle)

Private Attributes

char * base
std::map< ADDRESS, std::string > dlprocptrs
bool haveDebugInfo
int m_cbImage
int m_cReloc
const char * m_pFileName
Headerm_pHeader
PEHeaderm_pPEHeader
DWordm_pRelocTable
bool mingw_main


Constructor & Destructor Documentation

Win32BinaryFile::Win32BinaryFile  ) 
 

Definition at line 117 of file Win32BinaryFile.cpp.

Win32BinaryFile::~Win32BinaryFile  )  [virtual]
 

Definition at line 120 of file Win32BinaryFile.cpp.

References BinaryFile::m_iNumSections, and BinaryFile::m_pSections.


Member Function Documentation

void Win32BinaryFile::AddSymbol ADDRESS  uNative,
const char *  pName
[virtual]
 

Reimplemented from BinaryFile.

Definition at line 885 of file Win32BinaryFile.cpp.

void Win32BinaryFile::Close  )  [virtual]
 

Implements BinaryFile.

Definition at line 134 of file Win32BinaryFile.cpp.

References UnLoad().

bool Win32BinaryFile::DisplayDetails const char *  fileName,
FILE *  f = stdout
[virtual]
 

Reimplemented from BinaryFile.

Definition at line 890 of file Win32BinaryFile.cpp.

void Win32BinaryFile::dumpSymbols  ) 
 

Definition at line 1184 of file Win32BinaryFile.cpp.

void Win32BinaryFile::findJumps ADDRESS  curr  )  [private]
 

Definition at line 590 of file Win32BinaryFile.cpp.

References BinaryFile::GetSectionInfoByName(), LH, LMMH2, NULL, SectionInfo::uHostAddr, and SectionInfo::uNativeAddr.

ADDRESS Win32BinaryFile::GetAddressByName const char *  name,
bool  bNoTypeOK = false
[virtual]
 

Reimplemented from BinaryFile.

Definition at line 872 of file Win32BinaryFile.cpp.

Referenced by GetMainEntryPoint().

DWord Win32BinaryFile::getDelta  ) 
 

Definition at line 1164 of file Win32BinaryFile.cpp.

References base, PEHeader::Imagebase, and m_pPEHeader.

std::list< const char * > Win32BinaryFile::getDependencyList  )  [virtual]
 

Implements BinaryFile.

Definition at line 1159 of file Win32BinaryFile.cpp.

const char * Win32BinaryFile::GetDynamicProcName ADDRESS  uNative  )  [virtual]
 

Reimplemented from BinaryFile.

Definition at line 1129 of file Win32BinaryFile.cpp.

ADDRESS Win32BinaryFile::GetEntryPoint  )  [virtual]
 

Implements BinaryFile.

Definition at line 147 of file Win32BinaryFile.cpp.

References PEHeader::EntrypointRVA, PEHeader::Imagebase, LMMH, and m_pPEHeader.

std::list< SectionInfo * > & Win32BinaryFile::GetEntryPoints const char *  pEntry = "main"  )  [virtual]
 

Implements BinaryFile.

Definition at line 138 of file Win32BinaryFile.cpp.

virtual const char* Win32BinaryFile::getFilename  )  const [inline, virtual]
 

Implements BinaryFile.

Definition at line 171 of file Win32BinaryFile.h.

References m_pFileName.

LOAD_FMT Win32BinaryFile::GetFormat  )  const [virtual]
 

Implements BinaryFile.

Definition at line 1134 of file Win32BinaryFile.cpp.

References LOADFMT_PE.

ADDRESS Win32BinaryFile::getImageBase  )  [virtual]
 

Implements BinaryFile.

Definition at line 1149 of file Win32BinaryFile.cpp.

References PEHeader::Imagebase, and m_pPEHeader.

size_t Win32BinaryFile::getImageSize  )  [virtual]
 

Implements BinaryFile.

Definition at line 1154 of file Win32BinaryFile.cpp.

References PEHeader::ImageSize, and m_pPEHeader.

MACHINE Win32BinaryFile::GetMachine  )  const [virtual]
 

Implements BinaryFile.

Definition at line 1139 of file Win32BinaryFile.cpp.

References MACHINE_PENTIUM.

ADDRESS Win32BinaryFile::GetMainEntryPoint  )  [virtual]
 

Implements BinaryFile.

Definition at line 156 of file Win32BinaryFile.cpp.

References addr(), base, dlprocptrs, PEHeader::EntrypointRVA, GetAddressByName(), BinaryFile::GetSectionInfoByName(), PEHeader::Imagebase, LMMH, m_pPEHeader, main(), microX86Dis(), NO_ADDRESS, NULL, readNative4(), size, PEHeader::Subsystem, and SectionInfo::uSectionSize.

virtual std::map<ADDRESS, std::string>& Win32BinaryFile::getSymbols  )  [inline, virtual]
 

Reimplemented from BinaryFile.

Definition at line 218 of file Win32BinaryFile.h.

References dlprocptrs.

bool Win32BinaryFile::hasDebugInfo  )  [inline, virtual]
 

Reimplemented from BinaryFile.

Definition at line 220 of file Win32BinaryFile.h.

References haveDebugInfo.

bool Win32BinaryFile::IsDynamicLinkedProcPointer ADDRESS  uNative  )  [virtual]
 

Reimplemented from BinaryFile.

Definition at line 977 of file Win32BinaryFile.cpp.

ADDRESS Win32BinaryFile::IsJumpToAnotherAddr ADDRESS  uNative  )  [virtual]
 

Reimplemented from BinaryFile.

Definition at line 1122 of file Win32BinaryFile.cpp.

References readNative1(), and readNative4().

bool Win32BinaryFile::isLibrary  )  const [virtual]
 

Implements BinaryFile.

Definition at line 1144 of file Win32BinaryFile.cpp.

References PEHeader::Flags, and m_pPEHeader.

bool Win32BinaryFile::IsMinGWsAllocStack ADDRESS  uNative  ) 
 

Definition at line 1004 of file Win32BinaryFile.cpp.

References BinaryFile::GetSectionInfoByAddr(), mingw_main, SectionInfo::uHostAddr, and SectionInfo::uNativeAddr.

Referenced by IsStaticLinkedLibProc(), and SymbolByAddress().

bool Win32BinaryFile::IsMinGWsCleanupSetup ADDRESS  uNative  ) 
 

Definition at line 1076 of file Win32BinaryFile.cpp.

References BinaryFile::GetSectionInfoByAddr(), mingw_main, SectionInfo::uHostAddr, and SectionInfo::uNativeAddr.

Referenced by IsStaticLinkedLibProc(), and SymbolByAddress().

bool Win32BinaryFile::IsMinGWsFrameEnd ADDRESS  uNative  ) 
 

Definition at line 1053 of file Win32BinaryFile.cpp.

References BinaryFile::GetSectionInfoByAddr(), mingw_main, SectionInfo::uHostAddr, and SectionInfo::uNativeAddr.

Referenced by IsStaticLinkedLibProc(), and SymbolByAddress().

bool Win32BinaryFile::IsMinGWsFrameInit ADDRESS  uNative  ) 
 

Definition at line 1025 of file Win32BinaryFile.cpp.

References BinaryFile::GetSectionInfoByAddr(), mingw_main, SectionInfo::uHostAddr, and SectionInfo::uNativeAddr.

Referenced by IsStaticLinkedLibProc(), and SymbolByAddress().

bool Win32BinaryFile::IsMinGWsMalloc ADDRESS  uNative  ) 
 

Definition at line 1101 of file Win32BinaryFile.cpp.

References BinaryFile::GetSectionInfoByAddr(), mingw_main, SectionInfo::uHostAddr, and SectionInfo::uNativeAddr.

Referenced by IsStaticLinkedLibProc(), and SymbolByAddress().

bool Win32BinaryFile::IsStaticLinkedLibProc ADDRESS  uNative  )  [virtual]
 

Reimplemented from BinaryFile.

Definition at line 984 of file Win32BinaryFile.cpp.

References haveDebugInfo, IsMinGWsAllocStack(), IsMinGWsCleanupSetup(), IsMinGWsFrameEnd(), IsMinGWsFrameInit(), IsMinGWsMalloc(), and NULL.

bool Win32BinaryFile::Open const char *  sName  )  [virtual]
 

Implements BinaryFile.

Definition at line 129 of file Win32BinaryFile.cpp.

bool Win32BinaryFile::PostLoad void *  handle  )  [private, virtual]
 

Implements BinaryFile.

Definition at line 619 of file Win32BinaryFile.cpp.

int Win32BinaryFile::readNative1 ADDRESS  a  )  [virtual]
 

Reimplemented from BinaryFile.

Definition at line 912 of file Win32BinaryFile.cpp.

References BinaryFile::GetSectionInfoByAddr(), SectionInfo::uHostAddr, and SectionInfo::uNativeAddr.

Referenced by IsJumpToAnotherAddr().

int Win32BinaryFile::readNative2 ADDRESS  a  )  [virtual]
 

Reimplemented from BinaryFile.

Definition at line 921 of file Win32BinaryFile.cpp.

References BinaryFile::GetSectionInfoByAddr(), SectionInfo::uHostAddr, SectionInfo::uNativeAddr, and win32Read2().

int Win32BinaryFile::readNative4 ADDRESS  a  )  [virtual]
 

Reimplemented from BinaryFile.

Definition at line 930 of file Win32BinaryFile.cpp.

References BinaryFile::GetSectionInfoByAddr(), SectionInfo::uHostAddr, SectionInfo::uNativeAddr, and win32Read4().

Referenced by GetMainEntryPoint(), IsJumpToAnotherAddr(), readNative8(), readNativeFloat4(), and readNativeFloat8().

QWord Win32BinaryFile::readNative8 ADDRESS  a  )  [virtual]
 

Reimplemented from BinaryFile.

Definition at line 939 of file Win32BinaryFile.cpp.

References readNative4().

float Win32BinaryFile::readNativeFloat4 ADDRESS  a  )  [virtual]
 

Reimplemented from BinaryFile.

Definition at line 954 of file Win32BinaryFile.cpp.

References readNative4().

double Win32BinaryFile::readNativeFloat8 ADDRESS  a  )  [virtual]
 

Reimplemented from BinaryFile.

Definition at line 962 of file Win32BinaryFile.cpp.

References readNative4().

bool Win32BinaryFile::RealLoad const char *  sName  )  [protected, virtual]
 

Implements BinaryFile.

Definition at line 410 of file Win32BinaryFile.cpp.

References base, PEObject::Flags, IMAGE_SCN_CNT_CODE, IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_CNT_UNINITIALIZED_DATA, IMAGE_SCN_MEM_WRITE, LH, LMMH, BinaryFile::m_iNumSections, m_pFileName, m_pHeader, m_pPEHeader, BinaryFile::m_pSections, PEObject::ObjectName, PEObject::PhysicalOffset, PEObject::PhysicalSize, SectionInfo::pSectionName, PEObject::RVA, s_sectionObjects, PEHeader::sigHi, Header::sigHi, PEHeader::sigLo, Header::sigLo, and PEObject::VirtualSize.

const char * Win32BinaryFile::SymbolByAddress ADDRESS  dwAddr  )  [virtual]
 

Reimplemented from BinaryFile.

Definition at line 793 of file Win32BinaryFile.cpp.

References count, PEHeader::EntrypointRVA, PEHeader::Imagebase, IsMinGWsAllocStack(), IsMinGWsCleanupSetup(), IsMinGWsFrameEnd(), IsMinGWsFrameInit(), IsMinGWsMalloc(), LMMH, m_pPEHeader, NULL, and PEHeader::Subsystem.

void Win32BinaryFile::UnLoad  )  [virtual]
 

Implements BinaryFile.

Definition at line 615 of file Win32BinaryFile.cpp.

Referenced by Close().

int Win32BinaryFile::win32Read2 short *  ps  )  const [protected]
 

Definition at line 896 of file Win32BinaryFile.cpp.

Referenced by readNative2(), and win32Read4().

int Win32BinaryFile::win32Read4 int *  pi  )  const [protected]
 

Definition at line 903 of file Win32BinaryFile.cpp.

References win32Read2().

Referenced by readNative4().


Member Data Documentation

char* Win32BinaryFile::base [private]
 

Definition at line 235 of file Win32BinaryFile.h.

Referenced by getDelta(), GetMainEntryPoint(), and RealLoad().

std::map<ADDRESS, std::string> Win32BinaryFile::dlprocptrs [private]
 

Definition at line 237 of file Win32BinaryFile.h.

Referenced by GetMainEntryPoint(), and getSymbols().

bool Win32BinaryFile::haveDebugInfo [private]
 

Definition at line 239 of file Win32BinaryFile.h.

Referenced by hasDebugInfo(), and IsStaticLinkedLibProc().

int Win32BinaryFile::m_cbImage [private]
 

Definition at line 232 of file Win32BinaryFile.h.

int Win32BinaryFile::m_cReloc [private]
 

Definition at line 233 of file Win32BinaryFile.h.

const char* Win32BinaryFile::m_pFileName [private]
 

Definition at line 238 of file Win32BinaryFile.h.

Referenced by getFilename(), and RealLoad().

Header* Win32BinaryFile::m_pHeader [private]
 

Definition at line 230 of file Win32BinaryFile.h.

Referenced by RealLoad().

PEHeader* Win32BinaryFile::m_pPEHeader [private]
 

Definition at line 231 of file Win32BinaryFile.h.

Referenced by getDelta(), GetEntryPoint(), getImageBase(), getImageSize(), GetMainEntryPoint(), isLibrary(), RealLoad(), and SymbolByAddress().

DWord* Win32BinaryFile::m_pRelocTable [private]
 

Definition at line 234 of file Win32BinaryFile.h.

bool Win32BinaryFile::mingw_main [private]
 

Definition at line 240 of file Win32BinaryFile.h.

Referenced by IsMinGWsAllocStack(), IsMinGWsCleanupSetup(), IsMinGWsFrameEnd(), IsMinGWsFrameInit(), and IsMinGWsMalloc().


The documentation for this class was generated from the following files:
Generated on Tue Sep 19 21:18:48 2006 for Boomerang by  doxygen 1.4.6