37 lines
1.4 KiB
C
37 lines
1.4 KiB
C
#define SIZE_OF_NT_SIGNATURE sizeof (DWORD)
|
|
|
|
/* global macros to define header offsets into file */
|
|
/* offset to PE file signature */
|
|
#define NTSIGNATURE(a) ((LPVOID)((BYTE *)a + \
|
|
((PIMAGE_DOS_HEADER)a)->e_lfanew))
|
|
|
|
/* DOS header identifies the NT PEFile signature dword
|
|
the PEFILE header exists just after that dword */
|
|
#define PEFHDROFFSET(a) ((LPVOID)((BYTE *)a + \
|
|
((PIMAGE_DOS_HEADER)a)->e_lfanew + \
|
|
SIZE_OF_NT_SIGNATURE))
|
|
|
|
/* PE optional header is immediately after PEFile header */
|
|
#define OPTHDROFFSET(a) ((LPVOID)((BYTE *)a + \
|
|
((PIMAGE_DOS_HEADER)a)->e_lfanew + \
|
|
SIZE_OF_NT_SIGNATURE + \
|
|
sizeof (IMAGE_FILE_HEADER)))
|
|
|
|
/* section headers are immediately after PE optional header */
|
|
#define SECHDROFFSET(a) ((LPVOID) IMAGE_FIRST_SECTION(NTSIGNATURE(a)))
|
|
|
|
/* global prototypes for functions in pefile.c */
|
|
/* PE file header info */
|
|
DWORD WINAPI ImageFileType (LPVOID);
|
|
BOOL WINAPI GetPEFileHeader (LPVOID, PIMAGE_FILE_HEADER);
|
|
|
|
LPVOID WINAPI GetImageBase (LPVOID);
|
|
LPVOID WINAPI ImageDirectoryOffset (LPVOID, DWORD);
|
|
|
|
/* PE section header info */
|
|
int WINAPI GetSectionNames (LPVOID, HANDLE, char **);
|
|
BOOL WINAPI GetSectionHdrByName (LPVOID, PIMAGE_SECTION_HEADER, char *);
|
|
|
|
/* export section info */
|
|
int WINAPI GetExportFunctionNames (LPVOID);
|