ReactOS  0.4.13-dev-66-gc714b7f
pedump.c File Reference
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
#include <string.h>
#include <setjmp.h>
#include <malloc.h>
#include <ctype.h>
Include dependency graph for pedump.c:

Go to the source code of this file.

Classes

struct  _IMAGE_DOS_HEADER
 
struct  _IMAGE_FILE_HEADER
 
struct  _IMAGE_DATA_DIRECTORY
 
struct  _IMAGE_OPTIONAL_HEADER
 
struct  _IMAGE_NT_HEADERS
 
struct  _IMAGE_SECTION_HEADER
 
struct  _IMAGE_EXPORT_DIRECTORY
 
struct  _IMAGE_IMPORT_BY_NAME
 
struct  _IMAGE_RESOURCE_DIRECTORY
 
struct  _IMAGE_RESOURCE_DIRECTORY_ENTRY
 
struct  _IMAGE_RESOURCE_DIRECTORY_STRING
 
struct  _IMAGE_RESOURCE_DIR_STRING_U
 
struct  _IMAGE_RESOURCE_DATA_ENTRY
 
struct  _IMAGE_MENU_HEADER
 
struct  _IMAGE_POPUP_MENU_ITEM
 
struct  _IMAGE_NORMAL_MENU_ITEM
 
struct  _IMAGE_DIALOG_BOX_HEADER1
 
union  _NAME_OR_ORDINAL
 
struct  _NAME_OR_ORDINAL::_ORD_ID
 
struct  _IMAGE_CONTROL_DATA
 
struct  _IMAGE_DEBUG_DIRECTORY
 
struct  _IMAGE_DEBUG_MISC
 
struct  _IMAGE_SEPARATE_DEBUG_HEADER
 
struct  tagImportDirectory
 
struct  _Str_P
 

Macros

#define bcopy(s, d, z)   memcpy((d),(s),(z))
 
#define VOID   void
 
#define BOOLEAN   boolean
 
#define NULL   0
 
#define FALSE   0
 
#define TRUE   1
 
#define CONST   const
 
#define LOWORD(l)   ((WORD)(l))
 
#define WINAPI   __stdcall
 
#define IMAGE_DOS_SIGNATURE   0x5A4D
 
#define IMAGE_OS2_SIGNATURE   0x454E
 
#define IMAGE_OS2_SIGNATURE_LE   0x454C
 
#define IMAGE_VXD_SIGNATURE   0x454C
 
#define IMAGE_NT_SIGNATURE   0x00004550
 
#define IMAGE_SIZEOF_FILE_HEADER   20
 
#define IMAGE_FILE_RELOCS_STRIPPED   0x0001
 
#define IMAGE_FILE_EXECUTABLE_IMAGE   0x0002
 
#define IMAGE_FILE_LINE_NUMS_STRIPPED   0x0004
 
#define IMAGE_FILE_LOCAL_SYMS_STRIPPED   0x0008
 
#define IMAGE_FILE_BYTES_REVERSED_LO   0x0080
 
#define IMAGE_FILE_32BIT_MACHINE   0x0100
 
#define IMAGE_FILE_DEBUG_STRIPPED   0x0200
 
#define IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP   0x0400
 
#define IMAGE_FILE_NET_RUN_FROM_SWAP   0x0800
 
#define IMAGE_FILE_SYSTEM   0x1000
 
#define IMAGE_FILE_DLL   0x2000
 
#define IMAGE_FILE_UP_SYSTEM_ONLY   0x4000
 
#define IMAGE_FILE_BYTES_REVERSED_HI   0x8000
 
#define IMAGE_FILE_MACHINE_UNKNOWN   0
 
#define IMAGE_FILE_MACHINE_I386   0x14c
 
#define IMAGE_FILE_MACHINE_R3000   0x162
 
#define IMAGE_FILE_MACHINE_R4000   0x166
 
#define IMAGE_FILE_MACHINE_R10000   0x168
 
#define IMAGE_FILE_MACHINE_ALPHA   0x184
 
#define IMAGE_FILE_MACHINE_POWERPC   0x1F0
 
#define IMAGE_NUMBEROF_DIRECTORY_ENTRIES   16
 
#define IMAGE_DIRECTORY_ENTRY_EXPORT   0
 
#define IMAGE_DIRECTORY_ENTRY_IMPORT   1
 
#define IMAGE_DIRECTORY_ENTRY_RESOURCE   2
 
#define IMAGE_DIRECTORY_ENTRY_EXCEPTION   3
 
#define IMAGE_DIRECTORY_ENTRY_SECURITY   4
 
#define IMAGE_DIRECTORY_ENTRY_BASERELOC   5
 
#define IMAGE_DIRECTORY_ENTRY_DEBUG   6
 
#define IMAGE_DIRECTORY_ENTRY_COPYRIGHT   7
 
#define IMAGE_DIRECTORY_ENTRY_GLOBALPTR   8
 
#define IMAGE_DIRECTORY_ENTRY_TLS   9
 
#define IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG   10
 
#define IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT   11
 
#define IMAGE_DIRECTORY_ENTRY_IAT   12
 
#define IMAGE_SIZEOF_SHORT_NAME   8
 
#define IMAGE_SIZEOF_SECTION_HEADER   40
 
#define IMAGE_ORDINAL_FLAG   0x80000000
 
#define IMAGE_ORDINAL(Ordinal)   (Ordinal & 0xffff)
 
#define RT_NEWRESOURCE   0x2000
 
#define RT_ERROR   0x7fff
 
#define RT_CURSOR   1
 
#define RT_BITMAP   2
 
#define RT_ICON   3
 
#define RT_MENU   4
 
#define RT_DIALOG   5
 
#define RT_STRING   6
 
#define RT_FONTDIR   7
 
#define RT_FONT   8
 
#define RT_ACCELERATORS   9
 
#define RT_RCDATA   10
 
#define RT_MESSAGETABLE   11
 
#define RT_GROUP_CURSOR   12
 
#define RT_GROUP_ICON   14
 
#define RT_VERSION   16
 
#define NEWBITMAP   (RT_BITMAP|RT_NEWRESOURCE)
 
#define NEWMENU   (RT_MENU|RT_NEWRESOURCE)
 
#define NEWDIALOG   (RT_DIALOG|RT_NEWRESOURCE)
 
#define IMAGE_RESOURCE_NAME_IS_STRING   0x80000000
 
#define IMAGE_RESOURCE_DATA_IS_DIRECTORY   0x80000000
 
#define GRAYED   0x0001
 
#define INACTIVE   0x0002
 
#define BITMAP   0x0004
 
#define OWNERDRAW   0x0100
 
#define CHECKED   0x0008
 
#define POPUP   0x0010
 
#define MENUBARBREAK   0x0020
 
#define MENUBREAK   0x0040
 
#define ENDMENU   0x0080
 
#define BUTTON   0x80
 
#define EDIT   0x81
 
#define STATIC   0x82
 
#define LISTBOX   0x83
 
#define SCROLLBAR   0x84
 
#define COMBOBOX   0x85
 
#define WS_OVERLAPPED   0x00000000L
 
#define WS_POPUP   0x80000000L
 
#define WS_CHILD   0x40000000L
 
#define WS_CLIPSIBLINGS   0x04000000L
 
#define WS_CLIPCHILDREN   0x02000000L
 
#define WS_VISIBLE   0x10000000L
 
#define WS_DISABLED   0x08000000L
 
#define WS_MINIMIZE   0x20000000L
 
#define WS_MAXIMIZE   0x01000000L
 
#define WS_CAPTION   0x00C00000L
 
#define WS_BORDER   0x00800000L
 
#define WS_DLGFRAME   0x00400000L
 
#define WS_VSCROLL   0x00200000L
 
#define WS_HSCROLL   0x00100000L
 
#define WS_SYSMENU   0x00080000L
 
#define WS_THICKFRAME   0x00040000L
 
#define WS_MINIMIZEBOX   0x00020000L
 
#define WS_MAXIMIZEBOX   0x00010000L
 
#define WS_GROUP   0x00020000L
 
#define WS_TABSTOP   0x00010000L
 
#define WS_OVERLAPPEDWINDOW   (WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX)
 
#define WS_POPUPWINDOW   (WS_POPUP | WS_BORDER | WS_SYSMENU)
 
#define WS_CHILDWINDOW   (WS_CHILD)
 
#define WS_TILED   WS_OVERLAPPED
 
#define WS_ICONIC   WS_MINIMIZE
 
#define WS_SIZEBOX   WS_THICKFRAME
 
#define WS_TILEDWINDOW   WS_OVERLAPPEDWINDOW
 
#define WS_EX_DLGMODALFRAME   0x00000001L
 
#define WS_EX_NOPARENTNOTIFY   0x00000004L
 
#define WS_EX_TOPMOST   0x00000008L
 
#define WS_EX_ACCEPTFILES   0x00000010L
 
#define WS_EX_TRANSPARENT   0x00000020L
 
#define BS_PUSHBUTTON   0x00000000L
 
#define BS_DEFPUSHBUTTON   0x00000001L
 
#define BS_CHECKBOX   0x00000002L
 
#define BS_AUTOCHECKBOX   0x00000003L
 
#define BS_RADIOBUTTON   0x00000004L
 
#define BS_3STATE   0x00000005L
 
#define BS_AUTO3STATE   0x00000006L
 
#define BS_GROUPBOX   0x00000007L
 
#define BS_USERBUTTON   0x00000008L
 
#define BS_AUTORADIOBUTTON   0x00000009L
 
#define BS_OWNERDRAW   0x0000000BL
 
#define BS_LEFTTEXT   0x00000020L
 
#define ES_LEFT   0x00000000L
 
#define ES_CENTER   0x00000001L
 
#define ES_RIGHT   0x00000002L
 
#define ES_MULTILINE   0x00000004L
 
#define ES_UPPERCASE   0x00000008L
 
#define ES_LOWERCASE   0x00000010L
 
#define ES_PASSWORD   0x00000020L
 
#define ES_AUTOVSCROLL   0x00000040L
 
#define ES_AUTOHSCROLL   0x00000080L
 
#define ES_NOHIDESEL   0x00000100L
 
#define ES_OEMCONVERT   0x00000400L
 
#define ES_READONLY   0x00000800L
 
#define ES_WANTRETURN   0x00001000L
 
#define LBS_NOTIFY   0x0001L
 
#define LBS_SORT   0x0002L
 
#define LBS_NOREDRAW   0x0004L
 
#define LBS_MULTIPLESEL   0x0008L
 
#define LBS_OWNERDRAWFIXED   0x0010L
 
#define LBS_OWNERDRAWVARIABLE   0x0020L
 
#define LBS_HASSTRINGS   0x0040L
 
#define LBS_USETABSTOPS   0x0080L
 
#define LBS_NOINTEGRALHEIGHT   0x0100L
 
#define LBS_MULTICOLUMN   0x0200L
 
#define LBS_WANTKEYBOARDINPUT   0x0400L
 
#define LBS_EXTENDEDSEL   0x0800L
 
#define LBS_DISABLENOSCROLL   0x1000L
 
#define SS_LEFT   0x00000000L
 
#define SS_CENTER   0x00000001L
 
#define SS_RIGHT   0x00000002L
 
#define SS_ICON   0x00000003L
 
#define SS_BLACKRECT   0x00000004L
 
#define SS_GRAYRECT   0x00000005L
 
#define SS_WHITERECT   0x00000006L
 
#define SS_BLACKFRAME   0x00000007L
 
#define SS_GRAYFRAME   0x00000008L
 
#define SS_WHITEFRAME   0x00000009L
 
#define SS_SIMPLE   0x0000000BL
 
#define SS_LEFTNOWORDWRAP   0x0000000CL
 
#define SS_BITMAP   0x0000000EL
 
#define IMAGE_DEBUG_TYPE_UNKNOWN   0
 
#define IMAGE_DEBUG_TYPE_COFF   1
 
#define IMAGE_DEBUG_TYPE_CODEVIEW   2
 
#define IMAGE_DEBUG_TYPE_FPO   3
 
#define IMAGE_DEBUG_TYPE_MISC   4
 
#define IMAGE_DEBUG_TYPE_EXCEPTION   5
 
#define IMAGE_DEBUG_TYPE_FIXUP   6
 
#define IMAGE_DEBUG_TYPE_OMAP_TO_SRC   7
 
#define IMAGE_DEBUG_TYPE_OMAP_FROM_SRC   8
 
#define IMAGE_SEPARATE_DEBUG_SIGNATURE   0x4944
 
#define IMAGE_SEPARATE_DEBUG_FLAGS_MASK   0x8000
 
#define IMAGE_SEPARATE_DEBUG_MISMATCH   0x8000
 
#define SIZE_OF_NT_SIGNATURE   sizeof (DWORD)
 
#define MAXRESOURCENAME   13
 
#define NTSIGNATURE(a)
 
#define PEFHDROFFSET(a)
 
#define OPTHDROFFSET(a)
 
#define SECHDROFFSET(a)
 
#define MAXSECTIONNUMBER   16
 
#define MAXNAMESTRNUMBER   40
 

Typedefs

typedef char CHAR
 
typedef short WCHAR
 
typedef short SHORT
 
typedef long LONG
 
typedef unsigned short USHORT
 
typedef unsigned long DWORD
 
typedef int BOOL
 
typedef unsigned char BYTE
 
typedef unsigned short WORD
 
typedef BYTEPBYTE
 
typedef WORDPWORD
 
typedef DWORDPDWORD
 
typedef voidLPVOID
 
typedef int boolean
 
typedef struct _IMAGE_DOS_HEADER IMAGE_DOS_HEADER
 
typedef struct _IMAGE_DOS_HEADERPIMAGE_DOS_HEADER
 
typedef struct _IMAGE_FILE_HEADER IMAGE_FILE_HEADER
 
typedef struct _IMAGE_FILE_HEADERPIMAGE_FILE_HEADER
 
typedef struct _IMAGE_DATA_DIRECTORY IMAGE_DATA_DIRECTORY
 
typedef struct _IMAGE_DATA_DIRECTORYPIMAGE_DATA_DIRECTORY
 
typedef struct _IMAGE_OPTIONAL_HEADER IMAGE_OPTIONAL_HEADER
 
typedef struct _IMAGE_OPTIONAL_HEADERPIMAGE_OPTIONAL_HEADER
 
typedef struct _IMAGE_NT_HEADERS IMAGE_NT_HEADERS
 
typedef struct _IMAGE_NT_HEADERSPIMAGE_NT_HEADERS
 
typedef struct _IMAGE_SECTION_HEADER IMAGE_SECTION_HEADER
 
typedef struct _IMAGE_SECTION_HEADERPIMAGE_SECTION_HEADER
 
typedef struct _IMAGE_EXPORT_DIRECTORY IMAGE_EXPORT_DIRECTORY
 
typedef struct _IMAGE_EXPORT_DIRECTORYPIMAGE_EXPORT_DIRECTORY
 
typedef struct _IMAGE_IMPORT_BY_NAME IMAGE_IMPORT_BY_NAME
 
typedef struct _IMAGE_IMPORT_BY_NAMEPIMAGE_IMPORT_BY_NAME
 
typedef struct _IMAGE_RESOURCE_DIRECTORY IMAGE_RESOURCE_DIRECTORY
 
typedef struct _IMAGE_RESOURCE_DIRECTORYPIMAGE_RESOURCE_DIRECTORY
 
typedef struct _IMAGE_RESOURCE_DIRECTORY_ENTRY IMAGE_RESOURCE_DIRECTORY_ENTRY
 
typedef struct _IMAGE_RESOURCE_DIRECTORY_ENTRYPIMAGE_RESOURCE_DIRECTORY_ENTRY
 
typedef struct _IMAGE_RESOURCE_DIRECTORY_STRING IMAGE_RESOURCE_DIRECTORY_STRING
 
typedef struct _IMAGE_RESOURCE_DIRECTORY_STRINGPIMAGE_RESOURCE_DIRECTORY_STRING
 
typedef struct _IMAGE_RESOURCE_DIR_STRING_U IMAGE_RESOURCE_DIR_STRING_U
 
typedef struct _IMAGE_RESOURCE_DIR_STRING_UPIMAGE_RESOURCE_DIR_STRING_U
 
typedef struct _IMAGE_RESOURCE_DATA_ENTRY IMAGE_RESOURCE_DATA_ENTRY
 
typedef struct _IMAGE_RESOURCE_DATA_ENTRYPIMAGE_RESOURCE_DATA_ENTRY
 
typedef struct _IMAGE_MENU_HEADER IMAGE_MENU_HEADER
 
typedef struct _IMAGE_MENU_HEADERPIMAGE_MENU_HEADER
 
typedef struct _IMAGE_POPUP_MENU_ITEM IMAGE_POPUP_MENU_ITEM
 
typedef struct _IMAGE_POPUP_MENU_ITEMPIMAGE_POPUP_MENU_ITEM
 
typedef struct _IMAGE_NORMAL_MENU_ITEM IMAGE_NORMAL_MENU_ITEM
 
typedef struct _IMAGE_NORMAL_MENU_ITEMPIMAGE_NORMAL_MENU_ITEM
 
typedef struct _IMAGE_DIALOG_BOX_HEADER1 IMAGE_DIALOG_HEADER
 
typedef struct _IMAGE_DIALOG_BOX_HEADER1PIMAGE_DIALOG_HEADER
 
typedef union _NAME_OR_ORDINAL NAME_OR_ORDINAL
 
typedef union _NAME_OR_ORDINALPNAME_OR_ORDINAL
 
typedef struct _IMAGE_CONTROL_DATA IMAGE_CONTROL_DATA
 
typedef struct _IMAGE_CONTROL_DATAPIMAGE_CONTROL_DATA
 
typedef struct _IMAGE_DEBUG_DIRECTORY IMAGE_DEBUG_DIRECTORY
 
typedef struct _IMAGE_DEBUG_DIRECTORYPIMAGE_DEBUG_DIRECTORY
 
typedef struct _IMAGE_DEBUG_MISC IMAGE_DEBUG_MISC
 
typedef struct _IMAGE_DEBUG_MISCPIMAGE_DEBUG_MISC
 
typedef struct _IMAGE_SEPARATE_DEBUG_HEADER IMAGE_SEPARATE_DEBUG_HEADER
 
typedef struct _IMAGE_SEPARATE_DEBUG_HEADERPIMAGE_SEPARATE_DEBUG_HEADER
 
typedef struct tagImportDirectory IMAGE_IMPORT_MODULE_DIRECTORY
 
typedef struct tagImportDirectoryPIMAGE_IMPORT_MODULE_DIRECTORY
 
typedef struct _Str_P Str_P
 

Functions

BOOL WINAPI GetDosHeader (LPVOID, PIMAGE_DOS_HEADER)
 
DWORD WINAPI ImageFileType (LPVOID)
 
BOOL WINAPI GetPEFileHeader (LPVOID, PIMAGE_FILE_HEADER)
 
BOOL WINAPI GetPEOptionalHeader (LPVOID, PIMAGE_OPTIONAL_HEADER)
 
LPVOID WINAPI GetModuleEntryPoint (LPVOID)
 
int WINAPI NumOfSections (LPVOID)
 
LPVOID WINAPI GetImageBase (LPVOID)
 
LPVOID WINAPI ImageDirectoryOffset (LPVOID, DWORD)
 
LPVOID WINAPI ImageDirectorySection (LPVOID, DWORD)
 
int WINAPI GetSectionNames (LPVOID, char **)
 
BOOL WINAPI GetSectionHdrByName (LPVOID, PIMAGE_SECTION_HEADER, char *)
 
int WINAPI GetImportModuleNames (LPVOID, char **)
 
int WINAPI GetImportFunctionNamesByModule (LPVOID, char *, char **)
 
int WINAPI GetStringLength (char *)
 
void WINAPI GetPreviousParamString (char *, char *)
 
void WINAPI TranslateParameters (char **, char **, char **)
 
BOOL WINAPI StringExpands (char **, char **, char **, Str_P *)
 
char *WINAPI TranslateFunctionName (char *)
 
int WINAPI GetExportFunctionNames (LPVOID, char **)
 
int WINAPI GetNumberOfResources (LPVOID)
 
int WINAPI GetListOfResourceTypes (LPVOID, char **)
 
int WINAPI MenuScan (int *, WORD **)
 
int WINAPI MenuFill (char **, WORD **)
 
void WINAPI StrangeMenuFill (char **, WORD **, int)
 
int WINAPI GetContentsOfMenu (LPVOID, char **)
 
int WINAPI PrintMenu (int, char **)
 
int WINAPI PrintStrangeMenu (char **)
 
int WINAPI dumpMenu (char **psz, int size)
 
BOOL WINAPI IsDebugInfoStripped (LPVOID)
 
int WINAPI RetrieveModuleName (LPVOID, char **)
 
BOOL WINAPI IsDebugFile (LPVOID)
 
BOOL WINAPI GetSeparateDebugHeader (LPVOID, PIMAGE_SEPARATE_DEBUG_HEADER)
 
LPVOID WINAPI GetActualAddress (LPVOID lpFile, DWORD dwRVA)
 
BOOL WINAPI GetSectionHdrByName (LPVOID lpFile, IMAGE_SECTION_HEADER *sh, char *szSection)
 
int WINAPI GetContentsOfDialog (LPVOID lpFile, char **pszResTypes)
 
void WINAPI PrintNameOrOrdinal (char **psz)
 
void WINAPI PrintDialog (char **psz)
 
int main (int argc, char **argv)
 

Macro Definition Documentation

◆ bcopy

#define bcopy (   s,
  d,
  z 
)    memcpy((d),(s),(z))

Definition at line 54 of file pedump.c.

◆ BITMAP

#define BITMAP   0x0004

Definition at line 503 of file pedump.c.

◆ BOOLEAN

◆ BS_3STATE

#define BS_3STATE   0x00000005L

Definition at line 656 of file pedump.c.

◆ BS_AUTO3STATE

#define BS_AUTO3STATE   0x00000006L

Definition at line 657 of file pedump.c.

◆ BS_AUTOCHECKBOX

#define BS_AUTOCHECKBOX   0x00000003L

Definition at line 654 of file pedump.c.

◆ BS_AUTORADIOBUTTON

#define BS_AUTORADIOBUTTON   0x00000009L

Definition at line 660 of file pedump.c.

◆ BS_CHECKBOX

#define BS_CHECKBOX   0x00000002L

Definition at line 653 of file pedump.c.

◆ BS_DEFPUSHBUTTON

#define BS_DEFPUSHBUTTON   0x00000001L

Definition at line 652 of file pedump.c.

◆ BS_GROUPBOX

#define BS_GROUPBOX   0x00000007L

Definition at line 658 of file pedump.c.

◆ BS_LEFTTEXT

#define BS_LEFTTEXT   0x00000020L

Definition at line 662 of file pedump.c.

◆ BS_OWNERDRAW

#define BS_OWNERDRAW   0x0000000BL

Definition at line 661 of file pedump.c.

◆ BS_PUSHBUTTON

#define BS_PUSHBUTTON   0x00000000L

Definition at line 651 of file pedump.c.

◆ BS_RADIOBUTTON

#define BS_RADIOBUTTON   0x00000004L

Definition at line 655 of file pedump.c.

◆ BS_USERBUTTON

#define BS_USERBUTTON   0x00000008L

Definition at line 659 of file pedump.c.

◆ BUTTON

#define BUTTON   0x80

Definition at line 581 of file pedump.c.

◆ CHECKED

#define CHECKED   0x0008

Definition at line 505 of file pedump.c.

◆ COMBOBOX

#define COMBOBOX   0x85

Definition at line 586 of file pedump.c.

◆ CONST

#define CONST   const

◆ EDIT

#define EDIT   0x81

Definition at line 582 of file pedump.c.

◆ ENDMENU

#define ENDMENU   0x0080

Definition at line 509 of file pedump.c.

◆ ES_AUTOHSCROLL

#define ES_AUTOHSCROLL   0x00000080L

Definition at line 672 of file pedump.c.

◆ ES_AUTOVSCROLL

#define ES_AUTOVSCROLL   0x00000040L

Definition at line 671 of file pedump.c.

◆ ES_CENTER

#define ES_CENTER   0x00000001L

Definition at line 665 of file pedump.c.

◆ ES_LEFT

#define ES_LEFT   0x00000000L

Definition at line 664 of file pedump.c.

◆ ES_LOWERCASE

#define ES_LOWERCASE   0x00000010L

Definition at line 669 of file pedump.c.

◆ ES_MULTILINE

#define ES_MULTILINE   0x00000004L

Definition at line 667 of file pedump.c.

◆ ES_NOHIDESEL

#define ES_NOHIDESEL   0x00000100L

Definition at line 673 of file pedump.c.

◆ ES_OEMCONVERT

#define ES_OEMCONVERT   0x00000400L

Definition at line 674 of file pedump.c.

◆ ES_PASSWORD

#define ES_PASSWORD   0x00000020L

Definition at line 670 of file pedump.c.

◆ ES_READONLY

#define ES_READONLY   0x00000800L

Definition at line 675 of file pedump.c.

◆ ES_RIGHT

#define ES_RIGHT   0x00000002L

Definition at line 666 of file pedump.c.

◆ ES_UPPERCASE

#define ES_UPPERCASE   0x00000008L

Definition at line 668 of file pedump.c.

◆ ES_WANTRETURN

#define ES_WANTRETURN   0x00001000L

Definition at line 676 of file pedump.c.

◆ FALSE

#define FALSE   0

Definition at line 79 of file pedump.c.

◆ GRAYED

#define GRAYED   0x0001

Definition at line 501 of file pedump.c.

◆ IMAGE_DEBUG_TYPE_CODEVIEW

#define IMAGE_DEBUG_TYPE_CODEVIEW   2

Definition at line 725 of file pedump.c.

◆ IMAGE_DEBUG_TYPE_COFF

#define IMAGE_DEBUG_TYPE_COFF   1

Definition at line 724 of file pedump.c.

◆ IMAGE_DEBUG_TYPE_EXCEPTION

#define IMAGE_DEBUG_TYPE_EXCEPTION   5

Definition at line 728 of file pedump.c.

◆ IMAGE_DEBUG_TYPE_FIXUP

#define IMAGE_DEBUG_TYPE_FIXUP   6

Definition at line 729 of file pedump.c.

◆ IMAGE_DEBUG_TYPE_FPO

#define IMAGE_DEBUG_TYPE_FPO   3

Definition at line 726 of file pedump.c.

◆ IMAGE_DEBUG_TYPE_MISC

#define IMAGE_DEBUG_TYPE_MISC   4

Definition at line 727 of file pedump.c.

◆ IMAGE_DEBUG_TYPE_OMAP_FROM_SRC

#define IMAGE_DEBUG_TYPE_OMAP_FROM_SRC   8

Definition at line 731 of file pedump.c.

◆ IMAGE_DEBUG_TYPE_OMAP_TO_SRC

#define IMAGE_DEBUG_TYPE_OMAP_TO_SRC   7

Definition at line 730 of file pedump.c.

◆ IMAGE_DEBUG_TYPE_UNKNOWN

#define IMAGE_DEBUG_TYPE_UNKNOWN   0

Definition at line 723 of file pedump.c.

◆ IMAGE_DIRECTORY_ENTRY_BASERELOC

#define IMAGE_DIRECTORY_ENTRY_BASERELOC   5

Definition at line 264 of file pedump.c.

◆ IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT

#define IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT   11

Definition at line 270 of file pedump.c.

◆ IMAGE_DIRECTORY_ENTRY_COPYRIGHT

#define IMAGE_DIRECTORY_ENTRY_COPYRIGHT   7

Definition at line 266 of file pedump.c.

◆ IMAGE_DIRECTORY_ENTRY_DEBUG

#define IMAGE_DIRECTORY_ENTRY_DEBUG   6

Definition at line 265 of file pedump.c.

◆ IMAGE_DIRECTORY_ENTRY_EXCEPTION

#define IMAGE_DIRECTORY_ENTRY_EXCEPTION   3

Definition at line 262 of file pedump.c.

◆ IMAGE_DIRECTORY_ENTRY_EXPORT

#define IMAGE_DIRECTORY_ENTRY_EXPORT   0

Definition at line 259 of file pedump.c.

◆ IMAGE_DIRECTORY_ENTRY_GLOBALPTR

#define IMAGE_DIRECTORY_ENTRY_GLOBALPTR   8

Definition at line 267 of file pedump.c.

◆ IMAGE_DIRECTORY_ENTRY_IAT

#define IMAGE_DIRECTORY_ENTRY_IAT   12

Definition at line 271 of file pedump.c.

◆ IMAGE_DIRECTORY_ENTRY_IMPORT

#define IMAGE_DIRECTORY_ENTRY_IMPORT   1

Definition at line 260 of file pedump.c.

◆ IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG

#define IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG   10

Definition at line 269 of file pedump.c.

◆ IMAGE_DIRECTORY_ENTRY_RESOURCE

#define IMAGE_DIRECTORY_ENTRY_RESOURCE   2

Definition at line 261 of file pedump.c.

◆ IMAGE_DIRECTORY_ENTRY_SECURITY

#define IMAGE_DIRECTORY_ENTRY_SECURITY   4

Definition at line 263 of file pedump.c.

◆ IMAGE_DIRECTORY_ENTRY_TLS

#define IMAGE_DIRECTORY_ENTRY_TLS   9

Definition at line 268 of file pedump.c.

◆ IMAGE_DOS_SIGNATURE

#define IMAGE_DOS_SIGNATURE   0x5A4D

Definition at line 89 of file pedump.c.

◆ IMAGE_FILE_32BIT_MACHINE

#define IMAGE_FILE_32BIT_MACHINE   0x0100

Definition at line 164 of file pedump.c.

◆ IMAGE_FILE_BYTES_REVERSED_HI

#define IMAGE_FILE_BYTES_REVERSED_HI   0x8000

Definition at line 171 of file pedump.c.

◆ IMAGE_FILE_BYTES_REVERSED_LO

#define IMAGE_FILE_BYTES_REVERSED_LO   0x0080

Definition at line 163 of file pedump.c.

◆ IMAGE_FILE_DEBUG_STRIPPED

#define IMAGE_FILE_DEBUG_STRIPPED   0x0200

Definition at line 165 of file pedump.c.

◆ IMAGE_FILE_DLL

#define IMAGE_FILE_DLL   0x2000

Definition at line 169 of file pedump.c.

◆ IMAGE_FILE_EXECUTABLE_IMAGE

#define IMAGE_FILE_EXECUTABLE_IMAGE   0x0002

Definition at line 160 of file pedump.c.

◆ IMAGE_FILE_LINE_NUMS_STRIPPED

#define IMAGE_FILE_LINE_NUMS_STRIPPED   0x0004

Definition at line 161 of file pedump.c.

◆ IMAGE_FILE_LOCAL_SYMS_STRIPPED

#define IMAGE_FILE_LOCAL_SYMS_STRIPPED   0x0008

Definition at line 162 of file pedump.c.

◆ IMAGE_FILE_MACHINE_ALPHA

#define IMAGE_FILE_MACHINE_ALPHA   0x184

Definition at line 178 of file pedump.c.

◆ IMAGE_FILE_MACHINE_I386

#define IMAGE_FILE_MACHINE_I386   0x14c

Definition at line 174 of file pedump.c.

◆ IMAGE_FILE_MACHINE_POWERPC

#define IMAGE_FILE_MACHINE_POWERPC   0x1F0

Definition at line 179 of file pedump.c.

◆ IMAGE_FILE_MACHINE_R10000

#define IMAGE_FILE_MACHINE_R10000   0x168

Definition at line 177 of file pedump.c.

◆ IMAGE_FILE_MACHINE_R3000

#define IMAGE_FILE_MACHINE_R3000   0x162

Definition at line 175 of file pedump.c.

◆ IMAGE_FILE_MACHINE_R4000

#define IMAGE_FILE_MACHINE_R4000   0x166

Definition at line 176 of file pedump.c.

◆ IMAGE_FILE_MACHINE_UNKNOWN

#define IMAGE_FILE_MACHINE_UNKNOWN   0

Definition at line 173 of file pedump.c.

◆ IMAGE_FILE_NET_RUN_FROM_SWAP

#define IMAGE_FILE_NET_RUN_FROM_SWAP   0x0800

Definition at line 167 of file pedump.c.

◆ IMAGE_FILE_RELOCS_STRIPPED

#define IMAGE_FILE_RELOCS_STRIPPED   0x0001

Definition at line 159 of file pedump.c.

◆ IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP

#define IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP   0x0400

Definition at line 166 of file pedump.c.

◆ IMAGE_FILE_SYSTEM

#define IMAGE_FILE_SYSTEM   0x1000

Definition at line 168 of file pedump.c.

◆ IMAGE_FILE_UP_SYSTEM_ONLY

#define IMAGE_FILE_UP_SYSTEM_ONLY   0x4000

Definition at line 170 of file pedump.c.

◆ IMAGE_NT_SIGNATURE

#define IMAGE_NT_SIGNATURE   0x00004550

Definition at line 93 of file pedump.c.

◆ IMAGE_NUMBEROF_DIRECTORY_ENTRIES

#define IMAGE_NUMBEROF_DIRECTORY_ENTRIES   16

Definition at line 195 of file pedump.c.

◆ IMAGE_ORDINAL

#define IMAGE_ORDINAL (   Ordinal)    (Ordinal & 0xffff)

Definition at line 337 of file pedump.c.

◆ IMAGE_ORDINAL_FLAG

#define IMAGE_ORDINAL_FLAG   0x80000000

Definition at line 336 of file pedump.c.

◆ IMAGE_OS2_SIGNATURE

#define IMAGE_OS2_SIGNATURE   0x454E

Definition at line 90 of file pedump.c.

◆ IMAGE_OS2_SIGNATURE_LE

#define IMAGE_OS2_SIGNATURE_LE   0x454C

Definition at line 91 of file pedump.c.

◆ IMAGE_RESOURCE_DATA_IS_DIRECTORY

#define IMAGE_RESOURCE_DATA_IS_DIRECTORY   0x80000000

Definition at line 396 of file pedump.c.

◆ IMAGE_RESOURCE_NAME_IS_STRING

#define IMAGE_RESOURCE_NAME_IS_STRING   0x80000000

Definition at line 395 of file pedump.c.

◆ IMAGE_SEPARATE_DEBUG_FLAGS_MASK

#define IMAGE_SEPARATE_DEBUG_FLAGS_MASK   0x8000

Definition at line 790 of file pedump.c.

◆ IMAGE_SEPARATE_DEBUG_MISMATCH

#define IMAGE_SEPARATE_DEBUG_MISMATCH   0x8000

Definition at line 791 of file pedump.c.

◆ IMAGE_SEPARATE_DEBUG_SIGNATURE

#define IMAGE_SEPARATE_DEBUG_SIGNATURE   0x4944

Definition at line 788 of file pedump.c.

◆ IMAGE_SIZEOF_FILE_HEADER

#define IMAGE_SIZEOF_FILE_HEADER   20

Definition at line 157 of file pedump.c.

◆ IMAGE_SIZEOF_SECTION_HEADER

#define IMAGE_SIZEOF_SECTION_HEADER   40

Definition at line 300 of file pedump.c.

◆ IMAGE_SIZEOF_SHORT_NAME

#define IMAGE_SIZEOF_SHORT_NAME   8

Definition at line 277 of file pedump.c.

◆ IMAGE_VXD_SIGNATURE

#define IMAGE_VXD_SIGNATURE   0x454C

Definition at line 92 of file pedump.c.

◆ INACTIVE

#define INACTIVE   0x0002

Definition at line 502 of file pedump.c.

◆ LBS_DISABLENOSCROLL

#define LBS_DISABLENOSCROLL   0x1000L

Definition at line 690 of file pedump.c.

◆ LBS_EXTENDEDSEL

#define LBS_EXTENDEDSEL   0x0800L

Definition at line 689 of file pedump.c.

◆ LBS_HASSTRINGS

#define LBS_HASSTRINGS   0x0040L

Definition at line 684 of file pedump.c.

◆ LBS_MULTICOLUMN

#define LBS_MULTICOLUMN   0x0200L

Definition at line 687 of file pedump.c.

◆ LBS_MULTIPLESEL

#define LBS_MULTIPLESEL   0x0008L

Definition at line 681 of file pedump.c.

◆ LBS_NOINTEGRALHEIGHT

#define LBS_NOINTEGRALHEIGHT   0x0100L

Definition at line 686 of file pedump.c.

◆ LBS_NOREDRAW

#define LBS_NOREDRAW   0x0004L

Definition at line 680 of file pedump.c.

◆ LBS_NOTIFY

#define LBS_NOTIFY   0x0001L

Definition at line 678 of file pedump.c.

◆ LBS_OWNERDRAWFIXED

#define LBS_OWNERDRAWFIXED   0x0010L

Definition at line 682 of file pedump.c.

◆ LBS_OWNERDRAWVARIABLE

#define LBS_OWNERDRAWVARIABLE   0x0020L

Definition at line 683 of file pedump.c.

◆ LBS_SORT

#define LBS_SORT   0x0002L

Definition at line 679 of file pedump.c.

◆ LBS_USETABSTOPS

#define LBS_USETABSTOPS   0x0080L

Definition at line 685 of file pedump.c.

◆ LBS_WANTKEYBOARDINPUT

#define LBS_WANTKEYBOARDINPUT   0x0400L

Definition at line 688 of file pedump.c.

◆ LISTBOX

#define LISTBOX   0x83

Definition at line 584 of file pedump.c.

◆ LOWORD

#define LOWORD (   l)    ((WORD)(l))

Definition at line 82 of file pedump.c.

◆ MAXNAMESTRNUMBER

#define MAXNAMESTRNUMBER   40

Definition at line 3916 of file pedump.c.

◆ MAXRESOURCENAME

#define MAXRESOURCENAME   13

Definition at line 801 of file pedump.c.

◆ MAXSECTIONNUMBER

#define MAXSECTIONNUMBER   16

Definition at line 3915 of file pedump.c.

◆ MENUBARBREAK

#define MENUBARBREAK   0x0020

Definition at line 507 of file pedump.c.

◆ MENUBREAK

#define MENUBREAK   0x0040

Definition at line 508 of file pedump.c.

◆ NEWBITMAP

#define NEWBITMAP   (RT_BITMAP|RT_NEWRESOURCE)

Definition at line 377 of file pedump.c.

◆ NEWDIALOG

#define NEWDIALOG   (RT_DIALOG|RT_NEWRESOURCE)

Definition at line 379 of file pedump.c.

◆ NEWMENU

#define NEWMENU   (RT_MENU|RT_NEWRESOURCE)

Definition at line 378 of file pedump.c.

◆ NTSIGNATURE

#define NTSIGNATURE (   a)
Value:
((LPVOID)((BYTE *)a + \
((PIMAGE_DOS_HEADER)a)->e_lfanew))
void * LPVOID
Definition: pedump.c:69
struct _IMAGE_DOS_HEADER * PIMAGE_DOS_HEADER
unsigned char BYTE
Definition: mem.h:68
GLboolean GLboolean GLboolean GLboolean a
Definition: glext.h:6204

Definition at line 805 of file pedump.c.

◆ NULL

#define NULL   0

Definition at line 76 of file pedump.c.

◆ OPTHDROFFSET

#define OPTHDROFFSET (   a)
Value:
((LPVOID)((BYTE *)a + \
((PIMAGE_DOS_HEADER)a)->e_lfanew + \
SIZE_OF_NT_SIGNATURE + \
sizeof (IMAGE_FILE_HEADER)))
void * LPVOID
Definition: pedump.c:69
struct _IMAGE_DOS_HEADER * PIMAGE_DOS_HEADER
unsigned char BYTE
Definition: mem.h:68
GLboolean GLboolean GLboolean GLboolean a
Definition: glext.h:6204

Definition at line 815 of file pedump.c.

◆ OWNERDRAW

#define OWNERDRAW   0x0100

Definition at line 504 of file pedump.c.

◆ PEFHDROFFSET

#define PEFHDROFFSET (   a)
Value:
((LPVOID)((BYTE *)a + \
((PIMAGE_DOS_HEADER)a)->e_lfanew + \
SIZE_OF_NT_SIGNATURE))
void * LPVOID
Definition: pedump.c:69
struct _IMAGE_DOS_HEADER * PIMAGE_DOS_HEADER
unsigned char BYTE
Definition: mem.h:68
GLboolean GLboolean GLboolean GLboolean a
Definition: glext.h:6204

Definition at line 810 of file pedump.c.

◆ POPUP

#define POPUP   0x0010

Definition at line 506 of file pedump.c.

◆ RT_ACCELERATORS

#define RT_ACCELERATORS   9

Definition at line 371 of file pedump.c.

◆ RT_BITMAP

#define RT_BITMAP   2

Definition at line 364 of file pedump.c.

◆ RT_CURSOR

#define RT_CURSOR   1

Definition at line 363 of file pedump.c.

◆ RT_DIALOG

#define RT_DIALOG   5

Definition at line 367 of file pedump.c.

◆ RT_ERROR

#define RT_ERROR   0x7fff

Definition at line 362 of file pedump.c.

◆ RT_FONT

#define RT_FONT   8

Definition at line 370 of file pedump.c.

◆ RT_FONTDIR

#define RT_FONTDIR   7

Definition at line 369 of file pedump.c.

◆ RT_GROUP_CURSOR

#define RT_GROUP_CURSOR   12

Definition at line 374 of file pedump.c.

◆ RT_GROUP_ICON

#define RT_GROUP_ICON   14

Definition at line 375 of file pedump.c.

◆ RT_ICON

#define RT_ICON   3

Definition at line 365 of file pedump.c.

◆ RT_MENU

#define RT_MENU   4

Definition at line 366 of file pedump.c.

◆ RT_MESSAGETABLE

#define RT_MESSAGETABLE   11

Definition at line 373 of file pedump.c.

◆ RT_NEWRESOURCE

#define RT_NEWRESOURCE   0x2000

Definition at line 361 of file pedump.c.

◆ RT_RCDATA

#define RT_RCDATA   10

Definition at line 372 of file pedump.c.

◆ RT_STRING

#define RT_STRING   6

Definition at line 368 of file pedump.c.

◆ RT_VERSION

#define RT_VERSION   16

Definition at line 376 of file pedump.c.

◆ SCROLLBAR

#define SCROLLBAR   0x84

Definition at line 585 of file pedump.c.

◆ SECHDROFFSET

#define SECHDROFFSET (   a)
Value:
((LPVOID)((BYTE *)a + \
((PIMAGE_DOS_HEADER)a)->e_lfanew + \
SIZE_OF_NT_SIGNATURE + \
sizeof (IMAGE_FILE_HEADER) + \
void * LPVOID
Definition: pedump.c:69
struct _IMAGE_DOS_HEADER * PIMAGE_DOS_HEADER
unsigned char BYTE
Definition: mem.h:68
GLboolean GLboolean GLboolean GLboolean a
Definition: glext.h:6204

Definition at line 821 of file pedump.c.

◆ SIZE_OF_NT_SIGNATURE

#define SIZE_OF_NT_SIGNATURE   sizeof (DWORD)

Definition at line 800 of file pedump.c.

◆ SS_BITMAP

#define SS_BITMAP   0x0000000EL

Definition at line 704 of file pedump.c.

◆ SS_BLACKFRAME

#define SS_BLACKFRAME   0x00000007L

Definition at line 699 of file pedump.c.

◆ SS_BLACKRECT

#define SS_BLACKRECT   0x00000004L

Definition at line 696 of file pedump.c.

◆ SS_CENTER

#define SS_CENTER   0x00000001L

Definition at line 693 of file pedump.c.

◆ SS_GRAYFRAME

#define SS_GRAYFRAME   0x00000008L

Definition at line 700 of file pedump.c.

◆ SS_GRAYRECT

#define SS_GRAYRECT   0x00000005L

Definition at line 697 of file pedump.c.

◆ SS_ICON

#define SS_ICON   0x00000003L

Definition at line 695 of file pedump.c.

◆ SS_LEFT

#define SS_LEFT   0x00000000L

Definition at line 692 of file pedump.c.

◆ SS_LEFTNOWORDWRAP

#define SS_LEFTNOWORDWRAP   0x0000000CL

Definition at line 703 of file pedump.c.

◆ SS_RIGHT

#define SS_RIGHT   0x00000002L

Definition at line 694 of file pedump.c.

◆ SS_SIMPLE

#define SS_SIMPLE   0x0000000BL

Definition at line 702 of file pedump.c.

◆ SS_WHITEFRAME

#define SS_WHITEFRAME   0x00000009L

Definition at line 701 of file pedump.c.

◆ SS_WHITERECT

#define SS_WHITERECT   0x00000006L

Definition at line 698 of file pedump.c.

◆ STATIC

#define STATIC   0x82

Definition at line 583 of file pedump.c.

◆ TRUE

#define TRUE   1

Definition at line 80 of file pedump.c.

◆ VOID

#define VOID   void

Definition at line 72 of file pedump.c.

◆ WINAPI

#define WINAPI   __stdcall

Definition at line 83 of file pedump.c.

◆ WS_BORDER

#define WS_BORDER   0x00800000L

Definition at line 625 of file pedump.c.

◆ WS_CAPTION

#define WS_CAPTION   0x00C00000L

Definition at line 624 of file pedump.c.

◆ WS_CHILD

#define WS_CHILD   0x40000000L

Definition at line 617 of file pedump.c.

◆ WS_CHILDWINDOW

#define WS_CHILDWINDOW   (WS_CHILD)

Definition at line 639 of file pedump.c.

◆ WS_CLIPCHILDREN

#define WS_CLIPCHILDREN   0x02000000L

Definition at line 619 of file pedump.c.

◆ WS_CLIPSIBLINGS

#define WS_CLIPSIBLINGS   0x04000000L

Definition at line 618 of file pedump.c.

◆ WS_DISABLED

#define WS_DISABLED   0x08000000L

Definition at line 621 of file pedump.c.

◆ WS_DLGFRAME

#define WS_DLGFRAME   0x00400000L

Definition at line 626 of file pedump.c.

◆ WS_EX_ACCEPTFILES

#define WS_EX_ACCEPTFILES   0x00000010L

Definition at line 648 of file pedump.c.

◆ WS_EX_DLGMODALFRAME

#define WS_EX_DLGMODALFRAME   0x00000001L

Definition at line 645 of file pedump.c.

◆ WS_EX_NOPARENTNOTIFY

#define WS_EX_NOPARENTNOTIFY   0x00000004L

Definition at line 646 of file pedump.c.

◆ WS_EX_TOPMOST

#define WS_EX_TOPMOST   0x00000008L

Definition at line 647 of file pedump.c.

◆ WS_EX_TRANSPARENT

#define WS_EX_TRANSPARENT   0x00000020L

Definition at line 649 of file pedump.c.

◆ WS_GROUP

#define WS_GROUP   0x00020000L

Definition at line 633 of file pedump.c.

◆ WS_HSCROLL

#define WS_HSCROLL   0x00100000L

Definition at line 628 of file pedump.c.

◆ WS_ICONIC

#define WS_ICONIC   WS_MINIMIZE

Definition at line 641 of file pedump.c.

◆ WS_MAXIMIZE

#define WS_MAXIMIZE   0x01000000L

Definition at line 623 of file pedump.c.

◆ WS_MAXIMIZEBOX

#define WS_MAXIMIZEBOX   0x00010000L

Definition at line 632 of file pedump.c.

◆ WS_MINIMIZE

#define WS_MINIMIZE   0x20000000L

Definition at line 622 of file pedump.c.

◆ WS_MINIMIZEBOX

#define WS_MINIMIZEBOX   0x00020000L

Definition at line 631 of file pedump.c.

◆ WS_OVERLAPPED

#define WS_OVERLAPPED   0x00000000L

Definition at line 615 of file pedump.c.

◆ WS_OVERLAPPEDWINDOW

Definition at line 637 of file pedump.c.

◆ WS_POPUP

#define WS_POPUP   0x80000000L

Definition at line 616 of file pedump.c.

◆ WS_POPUPWINDOW

#define WS_POPUPWINDOW   (WS_POPUP | WS_BORDER | WS_SYSMENU)

Definition at line 638 of file pedump.c.

◆ WS_SIZEBOX

#define WS_SIZEBOX   WS_THICKFRAME

Definition at line 642 of file pedump.c.

◆ WS_SYSMENU

#define WS_SYSMENU   0x00080000L

Definition at line 629 of file pedump.c.

◆ WS_TABSTOP

#define WS_TABSTOP   0x00010000L

Definition at line 634 of file pedump.c.

◆ WS_THICKFRAME

#define WS_THICKFRAME   0x00040000L

Definition at line 630 of file pedump.c.

◆ WS_TILED

#define WS_TILED   WS_OVERLAPPED

Definition at line 640 of file pedump.c.

◆ WS_TILEDWINDOW

#define WS_TILEDWINDOW   WS_OVERLAPPEDWINDOW

Definition at line 643 of file pedump.c.

◆ WS_VISIBLE

#define WS_VISIBLE   0x10000000L

Definition at line 620 of file pedump.c.

◆ WS_VSCROLL

#define WS_VSCROLL   0x00200000L

Definition at line 627 of file pedump.c.

Typedef Documentation

◆ BOOL

typedef int BOOL

Definition at line 63 of file pedump.c.

◆ boolean

static int boolean

Definition at line 70 of file pedump.c.

◆ BYTE

typedef unsigned char BYTE

Definition at line 64 of file pedump.c.

◆ CHAR

typedef char CHAR

Definition at line 57 of file pedump.c.

◆ DWORD

typedef unsigned long DWORD

Definition at line 62 of file pedump.c.

◆ IMAGE_CONTROL_DATA

◆ IMAGE_DATA_DIRECTORY

◆ IMAGE_DEBUG_DIRECTORY

◆ IMAGE_DEBUG_MISC

◆ IMAGE_DIALOG_HEADER

◆ IMAGE_DOS_HEADER

◆ IMAGE_EXPORT_DIRECTORY

◆ IMAGE_FILE_HEADER

◆ IMAGE_IMPORT_BY_NAME

◆ IMAGE_IMPORT_MODULE_DIRECTORY

◆ IMAGE_MENU_HEADER

◆ IMAGE_NORMAL_MENU_ITEM

◆ IMAGE_NT_HEADERS

◆ IMAGE_OPTIONAL_HEADER

◆ IMAGE_POPUP_MENU_ITEM

◆ IMAGE_RESOURCE_DATA_ENTRY

◆ IMAGE_RESOURCE_DIR_STRING_U

◆ IMAGE_RESOURCE_DIRECTORY

◆ IMAGE_RESOURCE_DIRECTORY_ENTRY

◆ IMAGE_RESOURCE_DIRECTORY_STRING

◆ IMAGE_SECTION_HEADER

◆ IMAGE_SEPARATE_DEBUG_HEADER

◆ LONG

typedef LONG

Definition at line 60 of file pedump.c.

◆ LPVOID

static LPVOID

Definition at line 69 of file pedump.c.

◆ NAME_OR_ORDINAL

◆ PBYTE

static PBYTE

Definition at line 66 of file pedump.c.

◆ PDWORD

typedef PVOID PDWORD

Definition at line 68 of file pedump.c.

◆ PIMAGE_CONTROL_DATA

◆ PIMAGE_DATA_DIRECTORY

◆ PIMAGE_DEBUG_DIRECTORY

◆ PIMAGE_DEBUG_MISC

◆ PIMAGE_DIALOG_HEADER

◆ PIMAGE_DOS_HEADER

◆ PIMAGE_EXPORT_DIRECTORY

◆ PIMAGE_FILE_HEADER

◆ PIMAGE_IMPORT_BY_NAME

◆ PIMAGE_IMPORT_MODULE_DIRECTORY

◆ PIMAGE_MENU_HEADER

◆ PIMAGE_NORMAL_MENU_ITEM

◆ PIMAGE_NT_HEADERS

◆ PIMAGE_OPTIONAL_HEADER

◆ PIMAGE_POPUP_MENU_ITEM

◆ PIMAGE_RESOURCE_DATA_ENTRY

◆ PIMAGE_RESOURCE_DIR_STRING_U

◆ PIMAGE_RESOURCE_DIRECTORY

◆ PIMAGE_RESOURCE_DIRECTORY_ENTRY

◆ PIMAGE_RESOURCE_DIRECTORY_STRING

◆ PIMAGE_SECTION_HEADER

◆ PIMAGE_SEPARATE_DEBUG_HEADER

◆ PNAME_OR_ORDINAL

◆ PWORD

typedef WORD* PWORD

Definition at line 67 of file pedump.c.

◆ SHORT

typedef short SHORT

Definition at line 59 of file pedump.c.

◆ Str_P

typedef struct _Str_P Str_P

◆ USHORT

static USHORT

◆ WCHAR

typedef short WCHAR

Definition at line 58 of file pedump.c.

◆ WORD

typedef unsigned short WORD

Definition at line 65 of file pedump.c.

Function Documentation

◆ dumpMenu()

int WINAPI dumpMenu ( char **  psz,
int  size 
)

Definition at line 3327 of file pedump.c.

3330 {
3331 
3332  int i, j, k, n, l, c;
3333  char buff[32];
3334  char *ptr, *pmax;
3335 
3336  ptr = *psz;
3337  pmax = ptr + size;
3338  for (i = 0; i < (size / 16) + 1; i++)
3339  {
3340  n = 0;
3341  for (j = 0; j < 16; j++)
3342  {
3343  c = (int) (*ptr);
3344  if (c < 0)
3345  c += 256;
3346  buff[j] = c;
3347  printf ("%02X", c);
3348  ptr++;
3349  if (ptr >= pmax)
3350  break;
3351  n++;
3352  if (n % 4 == 0)
3353  printf (" ");
3354  }
3355  n++;
3356  if (n % 4 == 0)
3357  printf (" ");
3358  l = j;
3359  j++;
3360  for (; j < 16; j++)
3361  {
3362  n++;
3363  if (n % 4 == 0)
3364  printf (" ");
3365  else
3366  printf (" ");
3367  }
3368  printf (" ");
3369  for (k = 0; k < l; k++)
3370  if (isprint (c = buff[k]))
3371  printf ("%c", c);
3372  else
3373  printf (".");
3374  printf ("\n");
3375  if (ptr >= pmax)
3376  break;
3377  }
3378 
3379  *psz = ptr;
3380  return 0;
3381 }
GLdouble n
Definition: glext.h:7729
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
static PVOID ptr
Definition: dispmode.c:27
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
Definition: glfuncs.h:250
r l[0]
Definition: byte_order.h:167
GLsizeiptr size
Definition: glext.h:5919
const GLubyte * c
Definition: glext.h:8905
#define isprint(c)
Definition: acclib.h:73
#define c
Definition: ke_i.h:80
int k
Definition: mpi.c:3369
static unsigned char buff[32768]
Definition: fatten.c:17
#define printf
Definition: config.h:203
unsigned int(__cdecl typeof(jpeg_read_scanlines))(struct jpeg_decompress_struct *
Definition: typeof.h:31

Referenced by PrintStrangeMenu().

◆ GetActualAddress()

LPVOID WINAPI GetActualAddress ( LPVOID  lpFile,
DWORD  dwRVA 
)

Definition at line 1055 of file pedump.c.

1058 {
1059 // PIMAGE_OPTIONAL_HEADER poh = (PIMAGE_OPTIONAL_HEADER)OPTHDROFFSET (lpFile);
1061  int nSections = NumOfSections (lpFile);
1062  int i = 0;
1063 
1064  if (dwRVA == 0)
1065  return NULL;
1066  if (dwRVA & 0x80000000)
1067  {
1068  //return (LPVOID)dwRVA;
1069  printf ("\n$$ what is going on $$");
1070  exit (0);
1071  }
1072 
1073  /* locate section containing image directory */
1074  while (i++ < nSections)
1075  {
1076  if (psh->VirtualAddress <= (DWORD) dwRVA &&
1077  psh->VirtualAddress + psh->SizeOfRawData > (DWORD) dwRVA)
1078  break;
1079  psh++;
1080  }
1081 
1082  if (i > nSections)
1083  return NULL;
1084 
1085  /* return image import directory offset */
1086  return (LPVOID) (((int) lpFile + (int) dwRVA - psh->VirtualAddress) +
1087  (int) psh->PointerToRawData);
1088 }
DWORD PointerToRawData
Definition: pedump.c:290
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
#define SECHDROFFSET(a)
Definition: pedump.c:821
unsigned long DWORD
Definition: ntddk_ex.h:95
#define NULL
Definition: pedump.c:76
struct _IMAGE_SECTION_HEADER * PIMAGE_SECTION_HEADER
int WINAPI NumOfSections(LPVOID)
Definition: pedump.c:1023
void exit(int exitcode)
Definition: _exit.c:33
#define printf
Definition: config.h:203
unsigned int(__cdecl typeof(jpeg_read_scanlines))(struct jpeg_decompress_struct *
Definition: typeof.h:31

Referenced by GetContentsOfDialog(), GetContentsOfMenu(), GetExportFunctionNames(), GetImportFunctionNamesByModule(), and GetImportModuleNames().

◆ GetContentsOfDialog()

int WINAPI GetContentsOfDialog ( LPVOID  lpFile,
char **  pszResTypes 
)

Definition at line 3392 of file pedump.c.

3395 {
3396  PIMAGE_RESOURCE_DIRECTORY prdType, prdName, prdLanguage;
3397  PIMAGE_RESOURCE_DIRECTORY_ENTRY prde, prde1;
3398  PIMAGE_RESOURCE_DIR_STRING_U pDialogName;
3400  PIMAGE_DIALOG_HEADER pDialogHeader;
3401  //PIMAGE_CONTROL_DATA pControlData;
3402  char buff[32];
3403  int /*nCnt = 0,*/ i, j;
3404  //int num = 0;
3405  int size;
3406  int sLength, nDialogs;
3407  //WORD flag;
3408  WORD *pwd;
3409  //DWORD prdeName;
3410  char *pMem/*, *pTemp*/;
3411  //BOOL isStrange = FALSE;
3412 
3413 
3414  /* get root directory of resource tree */
3416  (lpFile, IMAGE_DIRECTORY_ENTRY_RESOURCE)) == NULL)
3417  return 0;
3418 
3419  /* set pointer to first resource type entry */
3421  ((DWORD) prdType + sizeof (IMAGE_RESOURCE_DIRECTORY));
3422 
3423  for (i = 0; i < prdType->NumberOfIdEntries; i++)
3424  {
3425  if (prde->Name == RT_DIALOG)
3426  break;
3427  prde++;
3428  }
3429  if (prde->Name != RT_DIALOG)
3430  return 0;
3431 
3432  prdName = (PIMAGE_RESOURCE_DIRECTORY)
3433  ((DWORD) prdType + (prde->OffsetToData ^ 0x80000000));
3434  if (prdName == NULL)
3435  return 0;
3436 
3438  ((DWORD) prdName + sizeof (IMAGE_RESOURCE_DIRECTORY));
3439 
3440 
3441  nDialogs = prdName->NumberOfNamedEntries + prdName->NumberOfIdEntries;
3442  sLength = 0;
3443 
3444  for (i = 0; i < prdName->NumberOfNamedEntries; i++)
3445  {
3446  pDialogName = (PIMAGE_RESOURCE_DIR_STRING_U)
3447  ((DWORD) prdType + (prde->Name ^ 0x80000000));
3448  sLength += pDialogName->Length + 1;
3449 
3450  prdLanguage = (PIMAGE_RESOURCE_DIRECTORY)
3451  ((DWORD) prdType + (prde->OffsetToData ^ 0x80000000));
3452  if (prdLanguage == NULL)
3453  continue;
3454 
3456  ((DWORD) prdLanguage + sizeof (IMAGE_RESOURCE_DIRECTORY));
3457 
3458  prData = (PIMAGE_RESOURCE_DATA_ENTRY)
3459  ((DWORD) prdType + prde1->OffsetToData);
3460  if (prData == NULL)
3461  continue;
3462 
3463  size = prData->Size;
3464  sLength += 4 + size;
3465  prde++;
3466  }
3467  for (i = 0; i < prdName->NumberOfIdEntries; i++)
3468  {
3469  sLength += 14;
3470 
3471  prdLanguage = (PIMAGE_RESOURCE_DIRECTORY)
3472  ((DWORD) prdType + (prde->OffsetToData ^ 0x80000000));
3473  if (prdLanguage == NULL)
3474  continue;
3475 
3477  ((DWORD) prdLanguage + sizeof (IMAGE_RESOURCE_DIRECTORY));
3478 
3479  prData = (PIMAGE_RESOURCE_DATA_ENTRY)
3480  ((DWORD) prdType + prde1->OffsetToData);
3481  if (prData == NULL)
3482  continue;
3483 
3484  size = prData->Size;
3485  sLength += 4 + size;
3486  prde++;
3487  }
3488  //
3489  // allocate memory for menu names
3490  //
3491  *pszResTypes = (char *) calloc (sLength, 1);
3492 
3493  pMem = *pszResTypes;
3494  //
3495  // and start all over again
3496  //
3498  ((DWORD) prdName + sizeof (IMAGE_RESOURCE_DIRECTORY));
3499 
3500  for (i = 0; i < prdName->NumberOfNamedEntries; i++)
3501  {
3502  pDialogName = (PIMAGE_RESOURCE_DIR_STRING_U)
3503  ((DWORD) prdType + (prde->Name ^ 0x80000000));
3504 
3505 
3506  for (j = 0; j < pDialogName->Length; j++)
3507  *pMem++ = (char) (pDialogName->NameString[j]);
3508  *pMem = 0;
3509  pMem++;
3510 
3511 
3512  prdLanguage = (PIMAGE_RESOURCE_DIRECTORY)
3513  ((DWORD) prdType + (prde->OffsetToData ^ 0x80000000));
3514  if (prdLanguage == NULL)
3515  continue;
3516 
3518  ((DWORD) prdLanguage + sizeof (IMAGE_RESOURCE_DIRECTORY));
3519 
3520  prData = (PIMAGE_RESOURCE_DATA_ENTRY)
3521  ((DWORD) prdType + prde1->OffsetToData);
3522  if (prData == NULL)
3523  continue;
3524 
3525  pDialogHeader = (PIMAGE_DIALOG_HEADER)
3526  GetActualAddress (lpFile, prData->OffsetToData);
3527 
3528 
3529 
3530  pwd = (WORD *) ((DWORD) pDialogHeader);
3531  size = prData->Size;
3532  *(int *) pMem = size;
3533  pMem += 4;
3534  StrangeMenuFill (&pMem, &pwd, size);
3535 
3536  prde++;
3537  }
3538  for (i = 0; i < prdName->NumberOfIdEntries; i++)
3539  {
3540 
3541  sprintf (buff, "DialogId_%04lX", (prde->Name));
3542  strcpy (pMem, buff);
3543  pMem += strlen (buff) + 1;
3544 
3545  prdLanguage = (PIMAGE_RESOURCE_DIRECTORY)
3546  ((DWORD) prdType + (prde->OffsetToData ^ 0x80000000));
3547  if (prdLanguage == NULL)
3548  {
3549  printf ("\nprdLanguage = NULL");
3550  exit (0);
3551  }
3552 
3554  ((DWORD) prdLanguage + sizeof (IMAGE_RESOURCE_DIRECTORY));
3555 
3556  prData = (PIMAGE_RESOURCE_DATA_ENTRY)
3557  ((DWORD) prdType + prde1->OffsetToData);
3558  if (prData == NULL)
3559  {
3560  printf ("\nprData = NULL");
3561  exit (0);
3562  }
3563 
3564  pDialogHeader = (PIMAGE_DIALOG_HEADER)
3565  GetActualAddress (lpFile, prData->OffsetToData);
3566 
3567 
3568  pwd = (WORD *) ((DWORD) pDialogHeader);
3569  size = prData->Size;
3570  *(int *) pMem = size;
3571  pMem += 4;
3572  StrangeMenuFill (&pMem, &pwd, size);
3573 
3574  prde++;
3575  }
3576 
3577  return nDialogs;
3578 }
DWORD OffsetToData
Definition: pedump.c:416
ACPI_SIZE strlen(const char *String)
Definition: utclib.c:269
struct _IMAGE_RESOURCE_DIRECTORY * PIMAGE_RESOURCE_DIRECTORY
#define sprintf(buf, format,...)
Definition: sprintf.c:55
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
void pwd(int argc, const char *argv[])
Definition: cmds.c:1401
struct _IMAGE_RESOURCE_DATA_ENTRY * PIMAGE_RESOURCE_DATA_ENTRY
Definition: pedump.c:457
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
Definition: glfuncs.h:250
#define RT_DIALOG
Definition: pedump.c:367
struct _IMAGE_RESOURCE_DIR_STRING_U * PIMAGE_RESOURCE_DIR_STRING_U
DWORD OffsetToData
Definition: pedump.c:459
GLsizeiptr size
Definition: glext.h:5919
struct _IMAGE_RESOURCE_DIRECTORY IMAGE_RESOURCE_DIRECTORY
unsigned short WORD
Definition: ntddk_ex.h:93
unsigned long DWORD
Definition: ntddk_ex.h:95
#define NULL
Definition: pedump.c:76
struct _IMAGE_RESOURCE_DIRECTORY_ENTRY * PIMAGE_RESOURCE_DIRECTORY_ENTRY
Definition: pedump.c:413
LPVOID WINAPI ImageDirectoryOffset(LPVOID, DWORD)
Definition: pedump.c:1097
LPVOID WINAPI GetActualAddress(LPVOID lpFile, DWORD dwRVA)
Definition: pedump.c:1055
DWORD Name
Definition: pedump.c:415
#define calloc
Definition: rosglue.h:14
char * strcpy(char *DstString, const char *SrcString)
Definition: utclib.c:388
void WINAPI StrangeMenuFill(char **, WORD **, int)
Definition: pedump.c:2710
void exit(int exitcode)
Definition: _exit.c:33
#define IMAGE_DIRECTORY_ENTRY_RESOURCE
Definition: pedump.c:261
static unsigned char buff[32768]
Definition: fatten.c:17
struct _IMAGE_DIALOG_BOX_HEADER1 * PIMAGE_DIALOG_HEADER
#define printf
Definition: config.h:203
DWORD Size
Definition: pedump.c:460

Referenced by main().

◆ GetContentsOfMenu()

int WINAPI GetContentsOfMenu ( LPVOID  lpFile,
char **  pszResTypes 
)

Definition at line 2921 of file pedump.c.

2924 {
2925  PIMAGE_RESOURCE_DIRECTORY prdType, prdName, prdLanguage;
2926  PIMAGE_RESOURCE_DIRECTORY_ENTRY prde, prde1;
2927  PIMAGE_RESOURCE_DIR_STRING_U pMenuName;
2929  //PIMAGE_SECTION_HEADER psh = (PIMAGE_SECTION_HEADER)
2930  //ImageDirectorySection (lpFile, IMAGE_DIRECTORY_ENTRY_RESOURCE);
2931  PIMAGE_MENU_HEADER pMenuHeader;
2932  //PIMAGE_POPUP_MENU_ITEM pPopup;
2933  WORD* pPopup;
2934  //PIMAGE_NORMAL_MENU_ITEM pNormal;
2935  char buff[32];
2936  int /*nCnt = 0,*/ i, j;
2937  //int num = 0;
2938  int size;
2939  int sLength, nMenus;
2940  WORD flag;
2941  WORD *pwd;
2942  //DWORD prdeName;
2943  //DWORD dwBase; obsolete
2944  char *pMem/*, *pTemp*/;
2945  //BOOL isStrange = FALSE;
2946 
2947 
2948  /* get root directory of resource tree */
2950  (lpFile, IMAGE_DIRECTORY_ENTRY_RESOURCE)) == NULL)
2951  return 0;
2952 
2953  /* set pointer to first resource type entry */
2955  ((DWORD) prdType + sizeof (IMAGE_RESOURCE_DIRECTORY));
2956 
2957  for (i = 0; i < prdType->NumberOfIdEntries; i++)
2958  {
2959  if (prde->Name == RT_MENU)
2960  break;
2961  prde++;
2962  }
2963  if (prde->Name != RT_MENU)
2964  return 0;
2965 
2966  prdName = (PIMAGE_RESOURCE_DIRECTORY)
2967  ((DWORD) prdType + (prde->OffsetToData ^ 0x80000000));
2968  if (prdName == NULL)
2969  return 0;
2970 
2972  ((DWORD) prdName + sizeof (IMAGE_RESOURCE_DIRECTORY));
2973 
2974  // sometimes previous code tells you lots of things hidden underneath
2975  // I wish I could save all the revisions I made ... but again .... sigh.
2976  // october 12, 1997 sang
2977  //dwBase = (DWORD)((int)lpFile + psh->PointerToRawData - psh->VirtualAddress);
2978 
2979  nMenus = prdName->NumberOfNamedEntries + prdName->NumberOfIdEntries;
2980  sLength = 0;
2981 
2982  for (i = 0; i < prdName->NumberOfNamedEntries; i++)
2983  {
2984  pMenuName = (PIMAGE_RESOURCE_DIR_STRING_U)
2985  ((DWORD) prdType + (prde->Name ^ 0x80000000));
2986  sLength += pMenuName->Length + 1;
2987 
2988  prdLanguage = (PIMAGE_RESOURCE_DIRECTORY)
2989  ((DWORD) prdType + (prde->OffsetToData ^ 0x80000000));
2990  if (prdLanguage == NULL)
2991  continue;
2992 
2994  ((DWORD) prdLanguage + sizeof (IMAGE_RESOURCE_DIRECTORY));
2995 
2996  prData = (PIMAGE_RESOURCE_DATA_ENTRY)
2997  ((DWORD) prdType + prde1->OffsetToData);
2998  if (prData == NULL)
2999  continue;
3000 
3001  pMenuHeader = (PIMAGE_MENU_HEADER)
3002  GetActualAddress (lpFile, prData->OffsetToData);
3003 
3004  //
3005  // normally wVersion and cbHeaderSize should be zero
3006  // but if it is not then nothing is known to us...
3007  // so let's do our best ... namely guessing .... and trying ....
3008  // ... and suffering ...
3009  // it gave me many sleepless (not exactly but I like to say this) nights.
3010  //
3011 
3012  // strange case
3013  if (pMenuHeader->wVersion | pMenuHeader->cbHeaderSize)
3014  {
3015  //isStrange = TRUE;
3016  pwd = (WORD *) ((DWORD) pMenuHeader + 16);
3017  size = prData->Size;
3018  // expect to return the length needed to report.
3019  // sixteen more bytes to do something
3020  sLength += 16 + size;
3021  //StrangeMenuScan (&sLength, &pwd, size);
3022  }
3023  // normal case
3024  else
3025  {
3026  pPopup = (WORD*)
3027  ((DWORD) pMenuHeader + sizeof (IMAGE_MENU_HEADER));
3028  while (1)
3029  {
3030  flag = (WORD) MenuScan (&sLength, (WORD **) (&pPopup));
3031  if (flag & 0x0080)
3032  break;
3033  }
3034  }
3035  prde++;
3036  }
3037  for (i = 0; i < prdName->NumberOfIdEntries; i++)
3038  {
3039  sLength += 12;
3040 
3041  prdLanguage = (PIMAGE_RESOURCE_DIRECTORY)
3042  ((DWORD) prdType + (prde->OffsetToData ^ 0x80000000));
3043  if (prdLanguage == NULL)
3044  continue;
3045 
3047  ((DWORD) prdLanguage + sizeof (IMAGE_RESOURCE_DIRECTORY));
3048 
3049  prData = (PIMAGE_RESOURCE_DATA_ENTRY)
3050  ((DWORD) prdType + prde1->OffsetToData);
3051  if (prData == NULL)
3052  continue;
3053 
3054  pMenuHeader = (PIMAGE_MENU_HEADER)
3055  GetActualAddress (lpFile, prData->OffsetToData);
3056  // strange case
3057  if (pMenuHeader->wVersion | pMenuHeader->cbHeaderSize)
3058  {
3059  pwd = (WORD *) ((DWORD) pMenuHeader + 16);
3060  size = prData->Size;
3061  // expect to return the length needed to report.
3062  // sixteen more bytes to do something
3063  sLength += 16 + size;
3064  //StrangeMenuScan (&sLength, &pwd, size);
3065  }
3066  // normal case
3067  else
3068  {
3069  pPopup = (WORD*)
3070  ((DWORD) pMenuHeader + sizeof (IMAGE_MENU_HEADER));
3071  while (1)
3072  {
3073  flag = (WORD) MenuScan (&sLength, (WORD **) (&pPopup));
3074  if (flag & 0x0080)
3075  break;
3076  }
3077  }
3078  prde++;
3079  }
3080  //
3081  // allocate memory for menu names
3082  //
3083  *pszResTypes = (char *) calloc (sLength, 1);
3084 
3085  pMem = *pszResTypes;
3086  //
3087  // and start all over again
3088  //
3090  ((DWORD) prdName + sizeof (IMAGE_RESOURCE_DIRECTORY));
3091 
3092  for (i = 0; i < prdName->NumberOfNamedEntries; i++)
3093  {
3094  pMenuName = (PIMAGE_RESOURCE_DIR_STRING_U)
3095  ((DWORD) prdType + (prde->Name ^ 0x80000000));
3096 
3097 
3098  for (j = 0; j < pMenuName->Length; j++)
3099  *pMem++ = (char) (pMenuName->NameString[j]);
3100  *pMem = 0;
3101  pMem++;
3102 
3103 
3104  prdLanguage = (PIMAGE_RESOURCE_DIRECTORY)
3105  ((DWORD) prdType + (prde->OffsetToData ^ 0x80000000));
3106  if (prdLanguage == NULL)
3107  continue;
3108 
3110  ((DWORD) prdLanguage + sizeof (IMAGE_RESOURCE_DIRECTORY));
3111 
3112  prData = (PIMAGE_RESOURCE_DATA_ENTRY)
3113  ((DWORD) prdType + prde1->OffsetToData);
3114  if (prData == NULL)
3115  continue;
3116 
3117  pMenuHeader = (PIMAGE_MENU_HEADER)
3118  GetActualAddress (lpFile, prData->OffsetToData);
3119  // strange case
3120  if (pMenuHeader->wVersion | pMenuHeader->cbHeaderSize)
3121  {
3122  pwd = (WORD *) ((DWORD) pMenuHeader);
3123  size = prData->Size;
3124  strcpy (pMem, ":::::::::::");
3125  pMem += 12;
3126  *(int *) pMem = size;
3127  pMem += 4;
3128  StrangeMenuFill (&pMem, &pwd, size);
3129  }
3130  // normal case
3131  else
3132  {
3133  pPopup = (WORD*)
3134  ((DWORD) pMenuHeader + sizeof (IMAGE_MENU_HEADER));
3135  while (1)
3136  {
3137  flag = (WORD) MenuFill (&pMem, (WORD **) (&pPopup));
3138  if (flag & 0x0080)
3139  break;
3140  }
3141  }
3142  prde++;
3143  }
3144  for (i = 0; i < prdName->NumberOfIdEntries; i++)
3145  {
3146 
3147  sprintf (buff, "MenuId_%04lX", (prde->Name));
3148  strcpy (pMem, buff);
3149  pMem += strlen (buff) + 1;
3150 
3151  prdLanguage = (PIMAGE_RESOURCE_DIRECTORY)
3152  ((DWORD) prdType + (prde->OffsetToData ^ 0x80000000));
3153  if (prdLanguage == NULL)
3154  continue;
3155 
3157  ((DWORD) prdLanguage + sizeof (IMAGE_RESOURCE_DIRECTORY));
3158 
3159  prData = (PIMAGE_RESOURCE_DATA_ENTRY)
3160  ((DWORD) prdType + prde1->OffsetToData);
3161  if (prData == NULL)
3162  continue;
3163 
3164  pMenuHeader = (PIMAGE_MENU_HEADER)
3165  GetActualAddress (lpFile, prData->OffsetToData);
3166  // strange case
3167  if (pMenuHeader->wVersion | pMenuHeader->cbHeaderSize)
3168  {
3169  pwd = (WORD *) ((DWORD) pMenuHeader);
3170  size = prData->Size;
3171  strcpy (pMem, ":::::::::::");
3172  pMem += 12;
3173  *(int *) pMem = size;
3174  pMem += 4;
3175  StrangeMenuFill (&pMem, &pwd, size);
3176  }
3177  // normal case
3178  else
3179  {
3180  pPopup = (WORD*)
3181  ((DWORD) pMenuHeader + sizeof (IMAGE_MENU_HEADER));
3182  while (1)
3183  {
3184  flag = (WORD) MenuFill (&pMem, (WORD **) (&pPopup));
3185  if (flag & 0x0080)
3186  break;
3187  }
3188  }
3189  prde++;
3190  }
3191 
3192  return nMenus;
3193 }
DWORD OffsetToData
Definition: pedump.c:416
ACPI_SIZE strlen(const char *String)
Definition: utclib.c:269
struct _IMAGE_RESOURCE_DIRECTORY * PIMAGE_RESOURCE_DIRECTORY
#define sprintf(buf, format,...)
Definition: sprintf.c:55
unsigned short WORD
Definition: pedump.c:65
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
void pwd(int argc, const char *argv[])
Definition: cmds.c:1401
struct _IMAGE_RESOURCE_DATA_ENTRY * PIMAGE_RESOURCE_DATA_ENTRY
Definition: pedump.c:457
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
Definition: glfuncs.h:250
struct _IMAGE_RESOURCE_DIR_STRING_U * PIMAGE_RESOURCE_DIR_STRING_U
DWORD OffsetToData
Definition: pedump.c:459
GLsizeiptr size
Definition: glext.h:5919
struct _IMAGE_RESOURCE_DIRECTORY IMAGE_RESOURCE_DIRECTORY
unsigned short WORD
Definition: ntddk_ex.h:93
unsigned long DWORD
Definition: ntddk_ex.h:95
#define NULL
Definition: pedump.c:76
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean flag
Definition: glfuncs.h:52
struct _IMAGE_RESOURCE_DIRECTORY_ENTRY * PIMAGE_RESOURCE_DIRECTORY_ENTRY
Definition: pedump.c:413
#define RT_MENU
Definition: pedump.c:366
LPVOID WINAPI ImageDirectoryOffset(LPVOID, DWORD)
Definition: pedump.c:1097
struct _IMAGE_MENU_HEADER IMAGE_MENU_HEADER
LPVOID WINAPI GetActualAddress(LPVOID lpFile, DWORD dwRVA)
Definition: pedump.c:1055
int WINAPI MenuScan(int *, WORD **)
Definition: pedump.c:2738
struct _IMAGE_MENU_HEADER * PIMAGE_MENU_HEADER
DWORD Name
Definition: pedump.c:415
#define calloc
Definition: rosglue.h:14
int WINAPI MenuFill(char **, WORD **)
Definition: pedump.c:2806
char * strcpy(char *DstString, const char *SrcString)
Definition: utclib.c:388
void WINAPI StrangeMenuFill(char **, WORD **, int)
Definition: pedump.c:2710
#define IMAGE_DIRECTORY_ENTRY_RESOURCE
Definition: pedump.c:261
static unsigned char buff[32768]
Definition: fatten.c:17
DWORD Size
Definition: pedump.c:460

Referenced by main().

◆ GetDosHeader()

BOOL WINAPI GetDosHeader ( LPVOID  lpFile,
PIMAGE_DOS_HEADER  pHeader 
)

Definition at line 915 of file pedump.c.

919 {
920  /*
921  * DOS header represents first structure
922  * of bytes in PE image file.
923  */
924  if ((WORD) IMAGE_DOS_SIGNATURE == *(WORD *) lpFile)
925  {
926  bcopy (
927  lpFile,
928  (LPVOID) pHeader,
929  sizeof (IMAGE_DOS_HEADER)
930  );
931  return TRUE;
932  }
933  return FALSE;
934 }
#define TRUE
Definition: pedump.c:80
#define FALSE
Definition: pedump.c:79
#define IMAGE_DOS_SIGNATURE
Definition: pedump.c:89
unsigned short WORD
Definition: ntddk_ex.h:93
#define bcopy(s, d, z)
Definition: pedump.c:54

Referenced by main().

◆ GetExportFunctionNames()

int WINAPI GetExportFunctionNames ( LPVOID  lpFile,
char **  pszFunctions 
)

Definition at line 2365 of file pedump.c.

2368 {
2369  //PIMAGE_SECTION_HEADER psh;
2371  //DWORD dwBase;
2372  DWORD imageBase; //===========================
2373 
2374  char *pfns[8192] =
2375  {NULL,}; // maximum number of functions
2376  //=============================
2377 
2378  char buff[256]; // enough for any string ??
2379 
2380  char *psz = NULL; //===============================
2381 
2382  DWORD *pdwAddress;
2383  DWORD *pdw1;
2384  DWORD *pdwNames;
2385  WORD *pwOrd;
2386  int i, nCnt = 0, ntmp = 0;
2387  int enid = 0, ordBase = 1; // usally ordBase is 1....
2388 
2389  int enames = 0;
2390 
2391  /* get section header and pointer to data directory for .edata section */
2392  ped = (PIMAGE_EXPORT_DIRECTORY)
2394 
2395  if (ped == NULL)
2396  return 0;
2397 
2398  //
2399  // sometimes there may be no section for idata or edata
2400  // instead rdata or data section may contain these sections ..
2401  // or even module names or function names are in different section.
2402  // so that's why we need to get actual address each time.
2403  // ...................sang cho..................
2404  //
2405  //psh = (PIMAGE_SECTION_HEADER)
2406  //ImageDirectorySection(lpFile, IMAGE_DIRECTORY_ENTRY_EXPORT);
2407 
2408  //if (psh == NULL) return 0;
2409 
2410  //dwBase = (DWORD)((int)lpFile + psh->PointerToRawData - psh->VirtualAddress);
2411 
2412 
2413  /* determine the offset of the export function names */
2414 
2415  pdwAddress = (DWORD *) GetActualAddress (lpFile, (DWORD) ped->AddressOfFunctions);
2416 
2417  imageBase = (DWORD) GetImageBase (lpFile);
2418 
2419  ordBase = ped->Base;
2420 
2421  if (ped->NumberOfNames > 0)
2422  {
2423  pdwNames = (DWORD *)
2424  GetActualAddress (lpFile, (DWORD) ped->AddressOfNames);
2425  pwOrd = (WORD *)
2426  GetActualAddress (lpFile, (DWORD) ped->AddressOfNameOrdinals);
2427  pdw1 = pdwAddress;
2428 
2429  /* figure out how much memory to allocate for all strings */
2430  for (i = 0; i < (int) ped->NumberOfNames; i++)
2431  {
2432  nCnt += strlen ((char *)
2433  GetActualAddress (lpFile, *(DWORD *) pdwNames)) + 1 + 6;
2434  pdwNames++;
2435  }
2436  // get the number of unnamed functions
2437  for (i = 0; i < (int) ped->NumberOfFunctions; i++)
2438  if (*pdw1++)
2439  ntmp++;
2440  // add memory required to show unnamed functions.
2441  if (ntmp > (int) ped->NumberOfNames)
2442  nCnt += 18 * (ntmp - (int) ped->NumberOfNames);
2443 
2444  /* allocate memory for function names */
2445 
2446  *pszFunctions = (char *) calloc (nCnt, 1);
2447  pdwNames = (DWORD *) GetActualAddress (lpFile, (DWORD) ped->AddressOfNames);
2448 
2449  /* copy string pointer to buffer */
2450 
2451  for (i = 0; i < (int) ped->NumberOfNames; i++)
2452  {
2453  pfns[(int) (*pwOrd) + ordBase] =
2454  (char *) GetActualAddress (lpFile, *(DWORD *) pdwNames);
2455  pdwNames++;
2456  pwOrd++;
2457  }
2458 
2459  psz = *pszFunctions;
2460  }
2461 
2462  for (i = ordBase; i < (int) ped->NumberOfFunctions + ordBase; i++)
2463  {
2464  if (*pdwAddress > 0)
2465  {
2466  *(DWORD *) psz = imageBase + *pdwAddress;
2467  psz += 4;
2468  *(WORD *) psz = (WORD) (i);
2469  psz += 2;
2470  if (pfns[i])
2471  {
2472  strcpy (psz, pfns[i]);
2473  psz += strlen (psz) + 1;
2474  }
2475  else
2476  {
2477  sprintf (buff, "ExpFn%04d()", enid++);
2478  strcpy (psz, buff);
2479  psz += 12;
2480  }
2481  enames++;
2482  }
2483  pdwAddress++;
2484  }
2485 
2486  return enames;
2487 
2488 }
#define IMAGE_DIRECTORY_ENTRY_EXPORT
Definition: pedump.c:259
ACPI_SIZE strlen(const char *String)
Definition: utclib.c:269
unsigned long DWORD
Definition: pedump.c:62
DWORD AddressOfNameOrdinals
Definition: compat.h:155
#define sprintf(buf, format,...)
Definition: sprintf.c:55
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
unsigned short WORD
Definition: ntddk_ex.h:93
unsigned long DWORD
Definition: ntddk_ex.h:95
#define NULL
Definition: pedump.c:76
struct _IMAGE_EXPORT_DIRECTORY * PIMAGE_EXPORT_DIRECTORY
LPVOID WINAPI ImageDirectoryOffset(LPVOID, DWORD)
Definition: pedump.c:1097
LPVOID WINAPI GetImageBase(LPVOID)
Definition: pedump.c:1035
LPVOID WINAPI GetActualAddress(LPVOID lpFile, DWORD dwRVA)
Definition: pedump.c:1055
#define calloc
Definition: rosglue.h:14
char * strcpy(char *DstString, const char *SrcString)
Definition: utclib.c:388
static unsigned char buff[32768]
Definition: fatten.c:17
unsigned int(__cdecl typeof(jpeg_read_scanlines))(struct jpeg_decompress_struct *
Definition: typeof.h:31

Referenced by main().

◆ GetImageBase()

LPVOID WINAPI GetImageBase ( LPVOID  lpFile)

Definition at line 1035 of file pedump.c.

1037 {
1039 
1040  if (poh != NULL)
1041  return (LPVOID) (poh->ImageBase);
1042  else
1043  return NULL;
1044 }
#define OPTHDROFFSET(a)
Definition: pedump.c:815
struct _IMAGE_OPTIONAL_HEADER * PIMAGE_OPTIONAL_HEADER
#define NULL
Definition: pedump.c:76

Referenced by GetExportFunctionNames().

◆ GetImportFunctionNamesByModule()

int WINAPI GetImportFunctionNamesByModule ( LPVOID  lpFile,
char pszModule,
char **  pszFunctions 
)

Definition at line 1265 of file pedump.c.

1269 {
1272  //
1273  // sometimes there may be no section for idata or edata
1274  // instead rdata or data section may contain these sections ..
1275  // or even module names or function names are in different section.
1276  // so that's why we need to get actual address each time.
1277  // ...................sang cho..................
1278  //
1279  //PIMAGE_SECTION_HEADER psh = (PIMAGE_SECTION_HEADER)
1280  //ImageDirectorySection (lpFile, IMAGE_DIRECTORY_ENTRY_IMPORT);
1281  //DWORD dwBase;
1282  int nCnt = 0, nSize = 0;
1283  int nnid = 0;
1284  int mnlength, i;
1285  DWORD dwFunctionName;
1286  DWORD dwFunctionAddress;
1287  char name[128];
1288  char buff[256]; // enough for any string ??
1289 
1290  char *psz;
1291  DWORD *pdw;
1292 
1293  //dwBase = (DWORD)((int)lpFile + psh->PointerToRawData - psh->VirtualAddress);
1294 
1295  /* find module's pid */
1296  while (pid->dwRVAModuleName &&
1297  strcmp (pszModule, (char *) GetActualAddress (lpFile, pid->dwRVAModuleName)))
1298  pid++;
1299 
1300  /* exit if the module is not found */
1301  if (!pid->dwRVAModuleName)
1302  return 0;
1303 
1304  // I am doing this to get rid of .dll from module name
1305  strcpy (name, pszModule);
1306  mnlength = strlen (pszModule);
1307  for (i = 0; i < mnlength; i++)
1308  if (name[i] == '.')
1309  break;
1310  name[i] = 0;
1311  mnlength = i;
1312 
1313  /* count number of function names and length of strings */
1314  dwFunctionName = pid->dwRVAFunctionNameList;
1315 
1316  // IMAGE_IMPORT_BY_NAME OR IMAGE_THUNK_DATA
1317  // modified by Sang Cho
1318  while (dwFunctionName &&
1319  *(pdw = (DWORD *) GetActualAddress (lpFile, dwFunctionName)))
1320  {
1321  if ((*pdw) & 0x80000000)
1322  nSize += mnlength + 10 + 1 + 6;
1323  else
1324  nSize += strlen ((char *) GetActualAddress (lpFile, *pdw + 2)) + 1 + 6;
1325  dwFunctionName += 4;
1326  nCnt++;
1327  }
1328 
1329  /* allocate memory for function names */
1330  *pszFunctions = (char *) calloc (nSize, 1);
1331  psz = *pszFunctions;
1332 
1333  //
1334  // I modified this part to store function address (4 bytes),
1335  // ord number (2 bytes),
1336  // and name strings (which was there originally)
1337  // so that's why there are 6 more bytes...... +6, or +4 and +2 etc.
1338  // these informations are used where they are needed.
1339  // ...........sang cho..................
1340  //
1341  /* copy function names to mempry pointer */
1342  dwFunctionName = pid->dwRVAFunctionNameList;
1343  dwFunctionAddress = pid->dwRVAFunctionAddressList;
1344  while (dwFunctionName &&
1345  *(pdw = (DWORD *) GetActualAddress (lpFile, dwFunctionName)))
1346  {
1347  if ((*pdw) & 0x80000000)
1348  {
1349  *(int *) psz = (int) (*(DWORD *) GetActualAddress (lpFile, dwFunctionAddress));
1350  psz += 4;
1351  *(short *) psz = *(short *) pdw;
1352  psz += 2;
1353  sprintf (buff, "%s:NoName%04d", name, nnid++);
1354  strcpy (psz, buff);
1355  psz += strlen (buff) + 1;
1356  }
1357  else
1358  {
1359  *(int *) psz = (int) (*(DWORD *) GetActualAddress (lpFile, dwFunctionAddress));
1360  psz += 4;
1361  *(short *) psz = (*(short *) GetActualAddress (lpFile, *pdw));
1362  psz += 2;
1363  strcpy (psz, (char *) GetActualAddress (lpFile, *pdw + 2));
1364  psz += strlen ((char *) GetActualAddress (lpFile, *pdw + 2)) + 1;
1365  }
1366  dwFunctionName += 4;
1367  dwFunctionAddress += 4;
1368  }
1369 
1370  return nCnt;
1371 }
_In_ ULONG_PTR _In_ ULONG _Out_ ULONG_PTR * pid
Definition: winddi.h:3835
ACPI_SIZE strlen(const char *String)
Definition: utclib.c:269
*nSize LPSTR _Inout_ LPDWORD nSize
Definition: winbase.h:2024
#define sprintf(buf, format,...)
Definition: sprintf.c:55
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
struct tagImportDirectory * PIMAGE_IMPORT_MODULE_DIRECTORY
unsigned long DWORD
Definition: ntddk_ex.h:95
LPVOID WINAPI ImageDirectoryOffset(LPVOID, DWORD)
Definition: pedump.c:1097
LPVOID WINAPI GetActualAddress(LPVOID lpFile, DWORD dwRVA)
Definition: pedump.c:1055
#define IMAGE_DIRECTORY_ENTRY_IMPORT
Definition: pedump.c:260
Definition: name.c:36
#define calloc
Definition: rosglue.h:14
char * strcpy(char *DstString, const char *SrcString)
Definition: utclib.c:388
int strcmp(const char *String1, const char *String2)
Definition: utclib.c:469
static unsigned char buff[32768]
Definition: fatten.c:17

Referenced by main().

◆ GetImportModuleNames()

int WINAPI GetImportModuleNames ( LPVOID  lpFile,
char **  pszModules 
)

Definition at line 1208 of file pedump.c.

1211 {
1214  //
1215  // sometimes there may be no section for idata or edata
1216  // instead rdata or data section may contain these sections ..
1217  // or even module names or function names are in different section.
1218  // so that's why we need to get actual address of RVAs each time.
1219  // ...................sang cho..................
1220  //
1221  // PIMAGE_SECTION_HEADER psh = (PIMAGE_SECTION_HEADER)
1222  // ImageDirectorySection (lpFile, IMAGE_DIRECTORY_ENTRY_IMPORT);
1223  // BYTE *pData = (BYTE *)pid;
1224  // DWORD *pdw = (DWORD *)pid;
1225  int nCnt = 0, nSize = 0, i;
1226  char *pModule[1024]; /* hardcoded maximum number of modules?? */
1227  char *psz;
1228 
1229  if (pid == NULL)
1230  return 0;
1231 
1232  // pData = (BYTE *)((int)lpFile + psh->PointerToRawData - psh->VirtualAddress);
1233 
1234  /* extract all import modules */
1235  while (pid->dwRVAModuleName)
1236  {
1237  /* allocate temporary buffer for absolute string offsets */
1238  //pModule[nCnt] = (char *)(pData + pid->dwRVAModuleName);
1239  pModule[nCnt] = (char *) GetActualAddress (lpFile, pid->dwRVAModuleName);
1240  nSize += strlen (pModule[nCnt]) + 1;
1241 
1242  /* increment to the next import directory entry */
1243  pid++;
1244  nCnt++;
1245  }
1246 
1247  /* copy all strings to one chunk of memory */
1248  *pszModules = (char *) calloc (nSize, 1);
1249  psz = *pszModules;
1250  for (i = 0; i < nCnt; i++)
1251  {
1252  strcpy (psz, pModule[i]);
1253  psz += strlen (psz) + 1;
1254  }
1255  return nCnt;
1256 }
_In_ ULONG_PTR _In_ ULONG _Out_ ULONG_PTR * pid
Definition: winddi.h:3835
ACPI_SIZE strlen(const char *String)
Definition: utclib.c:269
*nSize LPSTR _Inout_ LPDWORD nSize
Definition: winbase.h:2024
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
struct tagImportDirectory * PIMAGE_IMPORT_MODULE_DIRECTORY
#define NULL
Definition: pedump.c:76
LPVOID WINAPI ImageDirectoryOffset(LPVOID, DWORD)
Definition: pedump.c:1097
LPVOID WINAPI GetActualAddress(LPVOID lpFile, DWORD dwRVA)
Definition: pedump.c:1055
#define IMAGE_DIRECTORY_ENTRY_IMPORT
Definition: pedump.c:260
#define calloc
Definition: rosglue.h:14
char * strcpy(char *DstString, const char *SrcString)
Definition: utclib.c:388

Referenced by main().

◆ GetListOfResourceTypes()

int WINAPI GetListOfResourceTypes ( LPVOID  lpFile,
char **  pszResTypes 
)

Definition at line 2536 of file pedump.c.

2539 {
2540  PIMAGE_RESOURCE_DIRECTORY prdRoot;
2542  char *pMem;
2543  char buff[32];
2544  int nCnt, i;
2545  DWORD prdeName;
2546 
2547 
2548  /* get root directory of resource tree */
2550  (lpFile, IMAGE_DIRECTORY_ENTRY_RESOURCE)) == NULL)
2551  return 0;
2552 
2553  /* allocate enuff space to cover all types */
2554  nCnt = prdRoot->NumberOfIdEntries * (MAXRESOURCENAME + 1);
2555  *pszResTypes = (char *) calloc (nCnt, 1);
2556  if ((pMem = *pszResTypes) == NULL)
2557  return 0;
2558 
2559  /* set pointer to first resource type entry */
2560  prde = (PIMAGE_RESOURCE_DIRECTORY_ENTRY) ((DWORD) prdRoot + sizeof (IMAGE_RESOURCE_DIRECTORY));
2561 
2562  /* loop through all resource directory entry types */
2563  for (i = 0; i < prdRoot->NumberOfIdEntries; i++)
2564  {
2565  prdeName = prde->Name;
2566 
2567  //if (LoadString (hDll, prde->Name, pMem, MAXRESOURCENAME))
2568  // pMem += strlen (pMem) + 1;
2569  //
2570  // modified by ...................................Sang Cho..
2571  // I can't user M/S provied funcitons here so I have to figure out
2572  // how to do above functions. But I can settle down with the following
2573  // code, which works pretty good for me.
2574  //
2575  if (prdeName == 1)
2576  {
2577  strcpy (pMem, "RT_CURSOR");
2578  pMem += 10;
2579  }
2580  else if (prdeName == 2)
2581  {
2582  strcpy (pMem, "RT_BITMAP");
2583  pMem += 10;
2584  }
2585  else if (prdeName == 3)
2586  {
2587  strcpy (pMem, "RT_ICON ");
2588  pMem += 10;
2589  }
2590  else if (prdeName == 4)
2591  {
2592  strcpy (pMem, "RT_MENU ");
2593  pMem += 10;
2594  }
2595  else if (prdeName == 5)
2596  {
2597  strcpy (pMem, "RT_DIALOG");
2598  pMem += 10;
2599  }
2600  else if (prdeName == 6)
2601  {
2602  strcpy (pMem, "RT_STRING");
2603  pMem += 10;
2604  }
2605  else if (prdeName == 7)
2606  {
2607  strcpy (pMem, "RT_FONTDIR");
2608  pMem += 11;
2609  }
2610  else if (prdeName == 8)
2611  {
2612  strcpy (pMem, "RT_FONT ");
2613  pMem += 10;
2614  }
2615  else if (prdeName == 9)
2616  {
2617  strcpy (pMem, "RT_ACCELERATORS");
2618  pMem += 16;
2619  }
2620  else if (prdeName == 10)
2621  {
2622  strcpy (pMem, "RT_RCDATA");
2623  pMem += 10;
2624  }
2625  else if (prdeName == 11)
2626  {
2627  strcpy (pMem, "RT_MESSAGETABLE");
2628  pMem += 16;
2629  }
2630  else if (prdeName == 12)
2631  {
2632  strcpy (pMem, "RT_GROUP_CURSOR");
2633  pMem += 16;
2634  }
2635  else if (prdeName == 14)
2636  {
2637  strcpy (pMem, "RT_GROUP_ICON ");
2638  pMem += 16;
2639  }
2640  else if (prdeName == 16)
2641  {
2642  strcpy (pMem, "RT_VERSION");
2643  pMem += 11;
2644  }
2645  else if (prdeName == 17)
2646  {
2647  strcpy (pMem, "RT_DLGINCLUDE ");
2648  pMem += 16;
2649  }
2650  else if (prdeName == 19)
2651  {
2652  strcpy (pMem, "RT_PLUGPLAY ");
2653  pMem += 16;
2654  }
2655  else if (prdeName == 20)
2656  {
2657  strcpy (pMem, "RT_VXD ");
2658  pMem += 10;
2659  }
2660  else if (prdeName == 21)
2661  {
2662  strcpy (pMem, "RT_ANICURSOR ");
2663  pMem += 16;
2664  }
2665  else if (prdeName == 22)
2666  {
2667  strcpy (pMem, "RT_ANIICON");
2668  pMem += 11;
2669  }
2670  else if (prdeName == 0x2002)
2671  {
2672  strcpy (pMem, "RT_NEWBITMAP");
2673  pMem += 13;
2674  }
2675  else if (prdeName == 0x2004)
2676  {
2677  strcpy (pMem, "RT_NEWMENU");
2678  pMem += 11;
2679  }
2680  else if (prdeName == 0x2005)
2681  {
2682  strcpy (pMem, "RT_NEWDIALOG");
2683  pMem += 13;
2684  }
2685  else if (prdeName == 0x7fff)
2686  {
2687  strcpy (pMem, "RT_ERROR ");
2688  pMem += 10;
2689  }
2690  else
2691  {
2692  sprintf (buff, "RT_UNKNOWN:%08lX", prdeName);
2693  strcpy (pMem, buff);
2694  pMem += 20;
2695  }
2696  prde++;
2697  }
2698 
2699  return prdRoot->NumberOfIdEntries;
2700 }
#define sprintf(buf, format,...)
Definition: sprintf.c:55
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
struct _IMAGE_RESOURCE_DIRECTORY IMAGE_RESOURCE_DIRECTORY
unsigned long DWORD
Definition: ntddk_ex.h:95
#define NULL
Definition: pedump.c:76
#define MAXRESOURCENAME
Definition: pedump.c:801
struct _IMAGE_RESOURCE_DIRECTORY_ENTRY * PIMAGE_RESOURCE_DIRECTORY_ENTRY
Definition: pedump.c:413
LPVOID WINAPI ImageDirectoryOffset(LPVOID, DWORD)
Definition: pedump.c:1097
DWORD Name
Definition: pedump.c:415
#define calloc
Definition: rosglue.h:14
char * strcpy(char *DstString, const char *SrcString)
Definition: utclib.c:388
#define IMAGE_DIRECTORY_ENTRY_RESOURCE
Definition: pedump.c:261
static unsigned char buff[32768]
Definition: fatten.c:17

Referenced by main().

◆ GetModuleEntryPoint()

LPVOID WINAPI GetModuleEntryPoint ( LPVOID  lpFile)

Definition at line 1007 of file pedump.c.

1009 {
1011 
1012  if (poh != NULL)
1013  return (LPVOID) (poh->AddressOfEntryPoint);
1014  else
1015  return NULL;
1016 }
#define OPTHDROFFSET(a)
Definition: pedump.c:815
struct _IMAGE_OPTIONAL_HEADER * PIMAGE_OPTIONAL_HEADER
#define NULL
Definition: pedump.c:76

◆ GetNumberOfResources()

int WINAPI GetNumberOfResources ( LPVOID  lpFile)

Definition at line 2493 of file pedump.c.

2495 {
2496  PIMAGE_RESOURCE_DIRECTORY prdRoot, prdType;
2498  int nCnt = 0, i;
2499 
2500 
2501  /* get root directory of resource tree */
2503  (lpFile, IMAGE_DIRECTORY_ENTRY_RESOURCE)) == NULL)
2504  return 0;
2505 
2506  /* set pointer to first resource type entry */
2507  prde = (PIMAGE_RESOURCE_DIRECTORY_ENTRY) ((DWORD) prdRoot + sizeof (IMAGE_RESOURCE_DIRECTORY));
2508 
2509  /* loop through all resource directory entry types */
2510  for (i = 0; i < prdRoot->NumberOfIdEntries; i++)
2511  {
2512  /* locate directory or each resource type */
2513  prdType = (PIMAGE_RESOURCE_DIRECTORY) ((int) prdRoot + (int) prde->OffsetToData);
2514 
2515  /* mask off most significant bit of the data offset */
2516  prdType = (PIMAGE_RESOURCE_DIRECTORY) ((DWORD) prdType ^ 0x80000000);
2517 
2518  /* increment count of name'd and ID'd resources in directory */
2519  nCnt += prdType->NumberOfNamedEntries + prdType->NumberOfIdEntries;
2520 
2521  /* increment to next entry */
2522  prde++;
2523  }
2524 
2525  return nCnt;
2526 }
DWORD OffsetToData
Definition: pedump.c:416
struct _IMAGE_RESOURCE_DIRECTORY * PIMAGE_RESOURCE_DIRECTORY
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
struct _IMAGE_RESOURCE_DIRECTORY IMAGE_RESOURCE_DIRECTORY
unsigned long DWORD
Definition: ntddk_ex.h:95
#define NULL
Definition: pedump.c:76
struct _IMAGE_RESOURCE_DIRECTORY_ENTRY * PIMAGE_RESOURCE_DIRECTORY_ENTRY
Definition: pedump.c:413
LPVOID WINAPI ImageDirectoryOffset(LPVOID, DWORD)
Definition: pedump.c:1097
#define IMAGE_DIRECTORY_ENTRY_RESOURCE
Definition: pedump.c:261
unsigned int(__cdecl typeof(jpeg_read_scanlines))(struct jpeg_decompress_struct *
Definition: typeof.h:31

◆ GetPEFileHeader()

BOOL WINAPI GetPEFileHeader ( LPVOID  lpFile,
PIMAGE_FILE_HEADER  pHeader 
)

Definition at line 969 of file pedump.c.

972 {
973  /* file header follows dos header */
974  if (ImageFileType (lpFile) == IMAGE_NT_SIGNATURE)
975  bcopy (PEFHDROFFSET (lpFile), (LPVOID) pHeader, sizeof (IMAGE_FILE_HEADER));
976  else
977  return FALSE;
978 
979  return TRUE;
980 }
#define TRUE
Definition: pedump.c:80
#define PEFHDROFFSET(a)
Definition: pedump.c:810
#define FALSE
Definition: pedump.c:79
DWORD WINAPI ImageFileType(LPVOID)
Definition: pedump.c:941
#define IMAGE_NT_SIGNATURE
Definition: pedump.c:93
#define bcopy(s, d, z)
Definition: pedump.c:54

◆ GetPEOptionalHeader()

BOOL WINAPI GetPEOptionalHeader ( LPVOID  lpFile,
PIMAGE_OPTIONAL_HEADER  pHeader 
)

Definition at line 988 of file pedump.c.

991 {
992  /* optional header follows file header and dos header */
993  if (ImageFileType (lpFile) == IMAGE_NT_SIGNATURE)
994  bcopy (OPTHDROFFSET (lpFile), (LPVOID) pHeader, sizeof (IMAGE_OPTIONAL_HEADER));
995  else
996  return FALSE;
997 
998  return TRUE;
999 }
#define TRUE
Definition: pedump.c:80
#define FALSE
Definition: pedump.c:79
#define OPTHDROFFSET(a)
Definition: pedump.c:815
DWORD WINAPI ImageFileType(LPVOID)
Definition: pedump.c:941
#define IMAGE_NT_SIGNATURE
Definition: pedump.c:93
#define bcopy(s, d, z)
Definition: pedump.c:54

◆ GetPreviousParamString()

void WINAPI GetPreviousParamString ( char xpin,
char xpout 
)

Definition at line 1403 of file pedump.c.

1406  {
1407  int n = 0;
1408  char *pin, *pout;
1409 
1410  pin = xpin;
1411  pout = xpout;
1412 
1413  pin--;
1414  if (*pin == ',')
1415  pin--;
1416  else
1417  {
1418  printf ("\n **error PreviousParamString1 char = %c", *pin);
1419  exit (0);
1420  }
1421 
1422  while (*pin)
1423  {
1424  if (*pin == '>')
1425  n++;
1426  else if (*pin == '<')
1427  n--;
1428  else if (*pin == ')')
1429  n++;
1430 
1431  if (n > 0)
1432  {
1433  if (*pin == '(')
1434  n--;
1435  }
1436  else if (strchr (",(", *pin))
1437  break;
1438  pin--;
1439  }
1440 
1441  //printf("\n ----- %s", pin);
1442  if (strchr (",(", *pin))
1443  {
1444  pin++;
1445  } // printf("\n %s", pin); }
1446 
1447  else
1448  {
1449  printf ("\n **error PreviousParamString2");
1450  exit (0);
1451  }
1452 
1453  n = xpin - pin - 1;
1454  strncpy (pout, pin, n);
1455  *(pout + n) = 0;
1456 }
char * strncpy(char *DstString, const char *SrcString, ACPI_SIZE Count)
Definition: utclib.c:427
GLdouble n
Definition: glext.h:7729
Definition: regsvr.c:103
char * strchr(const char *String, int ch)
Definition: utclib.c:501
void exit(int exitcode)
Definition: _exit.c:33
#define printf
Definition: config.h:203

Referenced by TranslateParameters().

◆ GetSectionHdrByName() [1/2]

BOOL WINAPI GetSectionHdrByName ( LPVOID  ,
PIMAGE_SECTION_HEADER  ,
char  
)

◆ GetSectionHdrByName() [2/2]

BOOL WINAPI GetSectionHdrByName ( LPVOID  lpFile,
IMAGE_SECTION_HEADER sh,
char szSection 
)

Definition at line 1172 of file pedump.c.

1176 {
1178  int nSections = NumOfSections (lpFile);
1179  int i;
1180 
1181 
1182  if ((psh = (PIMAGE_SECTION_HEADER) SECHDROFFSET (lpFile)) != NULL)
1183  {
1184  /* find the section by name */
1185  for (i = 0; i < nSections; i++)
1186  {
1187  if (!strcmp ((char *)psh->Name, szSection))
1188  {
1189  /* copy data to header */
1190  bcopy ((LPVOID) psh, (LPVOID) sh, sizeof (IMAGE_SECTION_HEADER));
1191  return TRUE;
1192  }
1193  else
1194  psh++;
1195  }
1196  }
1197  return FALSE;
1198 }
#define TRUE
Definition: pedump.c:80
#define FALSE
Definition: pedump.c:79
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
#define SECHDROFFSET(a)
Definition: pedump.c:821
#define NULL
Definition: pedump.c:76
short sh
Definition: format.c:272
int WINAPI NumOfSections(LPVOID)
Definition: pedump.c:1023
BYTE Name[IMAGE_SIZEOF_SHORT_NAME]
Definition: pedump.c:281
int strcmp(const char *String1, const char *String2)
Definition: utclib.c:469
#define bcopy(s, d, z)
Definition: pedump.c:54

◆ GetSectionNames()

int WINAPI GetSectionNames ( LPVOID  lpFile,
char **  pszSections 
)

Definition at line 1136 of file pedump.c.

1139 {
1140  int nSections = NumOfSections (lpFile);
1141  int i, nCnt = 0;
1143  char *ps;
1144 
1145 
1146  if (ImageFileType (lpFile) != IMAGE_NT_SIGNATURE ||
1147  (psh = (PIMAGE_SECTION_HEADER) SECHDROFFSET (lpFile)) == NULL)
1148  return 0;
1149 
1150  /* count the number of chars used in the section names */
1151  for (i = 0; i < nSections; i++)
1152  nCnt += strlen ((char *)psh[i].Name) + 1;
1153 
1154  /* allocate space for all section names from heap */
1155  ps = *pszSections = (char *) calloc (nCnt, 1);
1156 
1157 
1158  for (i = 0; i < nSections; i++)
1159  {
1160  strcpy (ps, (char *)psh[i].Name);
1161  ps += strlen ((char *)psh[i].Name) + 1;
1162  }
1163 
1164  return nCnt;
1165 }
ACPI_SIZE strlen(const char *String)
Definition: utclib.c:269
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
#define SECHDROFFSET(a)
Definition: pedump.c:821
DWORD WINAPI ImageFileType(LPVOID)
Definition: pedump.c:941
#define IMAGE_NT_SIGNATURE
Definition: pedump.c:93
#define NULL
Definition: pedump.c:76
int WINAPI NumOfSections(LPVOID)
Definition: pedump.c:1023
#define calloc
Definition: rosglue.h:14
char * strcpy(char *DstString, const char *SrcString)
Definition: utclib.c:388

◆ GetSeparateDebugHeader()

BOOL WINAPI GetSeparateDebugHeader ( LPVOID  lpFile,
PIMAGE_SEPARATE_DEBUG_HEADER  psdh 
)

Definition at line 3888 of file pedump.c.

3891 {
3893 
3894  pdh = (PIMAGE_SEPARATE_DEBUG_HEADER) lpFile;
3895 
3896  if (pdh->Signature == IMAGE_SEPARATE_DEBUG_SIGNATURE)
3897  {
3898  bcopy ((LPVOID) pdh, (LPVOID) psdh, sizeof (IMAGE_SEPARATE_DEBUG_HEADER));
3899  return TRUE;
3900  }
3901 
3902  return FALSE;
3903 }
#define TRUE
Definition: pedump.c:80
#define IMAGE_SEPARATE_DEBUG_SIGNATURE
Definition: pedump.c:788
#define FALSE
Definition: pedump.c:79
struct _IMAGE_SEPARATE_DEBUG_HEADER * PIMAGE_SEPARATE_DEBUG_HEADER
static HMODULE pdh
Definition: pdh.c:30
#define bcopy(s, d, z)
Definition: pedump.c:54

◆ GetStringLength()

int WINAPI GetStringLength ( char psz)

Definition at line 1382 of file pedump.c.

1384 {
1385  if (!isdigit (*psz))
1386  return 0;
1387  if (isdigit (*(psz + 1)))
1388  return (*psz - '0') * 10 + *(psz + 1) - '0';
1389  else
1390  return *psz - '0';
1391 }
#define isdigit(c)
Definition: acclib.h:68

Referenced by TranslateFunctionName().

◆ ImageDirectoryOffset()

LPVOID WINAPI ImageDirectoryOffset ( LPVOID  lpFile,
DWORD  dwIMAGE_DIRECTORY 
)

Definition at line 1097 of file pedump.c.

1100 {
1103  int nSections = NumOfSections (lpFile);
1104  int i = 0;
1105  LPVOID VAImageDir;
1106 
1107  /* must be 0 thru (NumberOfRvaAndSizes-1) */
1108  if (dwIMAGE_DIRECTORY >= poh->NumberOfRvaAndSizes)
1109  return NULL;
1110 
1111  /* locate specific image directory's relative virtual address */
1112  VAImageDir = (LPVOID) poh->DataDirectory[dwIMAGE_DIRECTORY].VirtualAddress;
1113 
1114  if (VAImageDir == NULL)
1115  return NULL;
1116  /* locate section containing image directory */
1117  while (i++ < nSections)
1118  {
1119  if (psh->VirtualAddress <= (DWORD) VAImageDir &&
1120  psh->VirtualAddress + psh->SizeOfRawData > (DWORD) VAImageDir)
1121  break;
1122  psh++;
1123  }
1124 
1125  if (i > nSections)
1126  return NULL;
1127 
1128  /* return image import directory offset */
1129  return (LPVOID) (((int) lpFile + (int) VAImageDir - psh->VirtualAddress) +
1130  (int) psh->PointerToRawData);
1131 }
IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES]
Definition: ntddk_ex.h:178
#define OPTHDROFFSET(a)
Definition: pedump.c:815
DWORD PointerToRawData
Definition: pedump.c:290
unsigned long DWORD
Definition: pedump.c:62
void * LPVOID
Definition: pedump.c:69
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
#define SECHDROFFSET(a)
Definition: pedump.c:821
struct _IMAGE_OPTIONAL_HEADER * PIMAGE_OPTIONAL_HEADER
if(!(yy_init))
Definition: macro.lex.yy.c:714
unsigned long DWORD
Definition: ntddk_ex.h:95
#define NULL
Definition: pedump.c:76
struct _IMAGE_SECTION_HEADER * PIMAGE_SECTION_HEADER
int WINAPI NumOfSections(LPVOID)
Definition: pedump.c:1023
unsigned int(__cdecl typeof(jpeg_read_scanlines))(struct jpeg_decompress_struct *
Definition: typeof.h:31

Referenced by GetContentsOfDialog(), GetContentsOfMenu(), GetExportFunctionNames(), GetImportFunctionNamesByModule(), GetImportModuleNames(), GetListOfResourceTypes(), GetNumberOfResources(), and RetrieveModuleName().

◆ ImageDirectorySection()

LPVOID WINAPI ImageDirectorySection ( LPVOID  ,
DWORD   
)

◆ ImageFileType()

DWORD WINAPI ImageFileType ( LPVOID  lpFile)

Definition at line 941 of file pedump.c.

943 {
944  /* dos file signature comes first */
945  if (*(USHORT *) lpFile == IMAGE_DOS_SIGNATURE)
946  {
947  /* determine location of PE File header from dos header */
948  if (LOWORD (*(DWORD *) NTSIGNATURE (lpFile)) == IMAGE_OS2_SIGNATURE ||
949  LOWORD (*(DWORD *) NTSIGNATURE (lpFile)) == IMAGE_OS2_SIGNATURE_LE)
950  return (DWORD) LOWORD (*(DWORD *) NTSIGNATURE (lpFile));
951 
952  else if (*(DWORD *) NTSIGNATURE (lpFile) == IMAGE_NT_SIGNATURE)
953  return IMAGE_NT_SIGNATURE;
954 
955  else
956  return IMAGE_DOS_SIGNATURE;
957  }
958 
959  else
960  /* unknown file type */
961  return 0;
962 }
#define NTSIGNATURE(a)
Definition: pedump.c:805
#define IMAGE_DOS_SIGNATURE
Definition: pedump.c:89
#define IMAGE_NT_SIGNATURE
Definition: pedump.c:93
unsigned long DWORD
Definition: ntddk_ex.h:95
#define IMAGE_OS2_SIGNATURE
Definition: pedump.c:90
unsigned short USHORT
Definition: pedump.c:61
#define LOWORD(l)
Definition: pedump.c:82
#define IMAGE_OS2_SIGNATURE_LE
Definition: pedump.c:91

Referenced by GetPEFileHeader(), GetPEOptionalHeader(), GetSectionNames(), and main().

◆ IsDebugFile()

BOOL WINAPI IsDebugFile ( LPVOID  lpFile)

Definition at line 3873 of file pedump.c.

3875 {
3877 
3878  psdh = (PIMAGE_SEPARATE_DEBUG_HEADER) lpFile;
3879 
3880  return (psdh->Signature == IMAGE_SEPARATE_DEBUG_SIGNATURE);
3881 }
#define IMAGE_SEPARATE_DEBUG_SIGNATURE
Definition: pedump.c:788
struct _IMAGE_SEPARATE_DEBUG_HEADER * PIMAGE_SEPARATE_DEBUG_HEADER

◆ IsDebugInfoStripped()

BOOL WINAPI IsDebugInfoStripped ( LPVOID  lpFile)

Definition at line 3819 of file pedump.c.

3821 {
3822  PIMAGE_FILE_HEADER pfh;
3823 
3824  pfh = (PIMAGE_FILE_HEADER) PEFHDROFFSET (lpFile);
3825 
3827 }
#define PEFHDROFFSET(a)
Definition: pedump.c:810
#define IMAGE_FILE_DEBUG_STRIPPED
Definition: pedump.c:165
struct _IMAGE_FILE_HEADER * PIMAGE_FILE_HEADER

◆ main()

int main ( int argc  ,
char **  argv 
)

Definition at line 3918 of file pedump.c.

3922 {
3923  DWORD fileType;
3924  LPVOID lpFile;
3925  FILE *my_fp;
3926  IMAGE_DOS_HEADER dosHdr;
3927  PIMAGE_FILE_HEADER pfh;
3930  //IMAGE_SECTION_HEADER idsh;
3932  //PIMAGE_IMPORT_MODULE_DIRECTORY pid;
3933 
3934  int nSections; // number of sections
3935 
3936  int nResources; // number of resources
3937 
3938  int nMenus; // number of menus
3939 
3940  int nDialogs; // number of dialogs
3941 
3942  int nImportedModules; // number of imported modules
3943 
3944  int nFunctions; // number of functions in the imported module
3945 
3946  int nExportedFunctions; // number of exported funcions
3947 
3948  int imageBase;
3949  int entryPoint;
3950 
3951  int i, j, /*k,*/ n;
3952  //int mnsize;
3953  //int nCnt;
3954  //int nSize;
3955  int fsize;
3956  char *pnstr;
3957  char *pst;
3958  char *piNameBuff; // import module name buffer
3959 
3960  char *pfNameBuff; // import functions in the module name buffer
3961 
3962  char *peNameBuff; // export function name buffer
3963 
3964  char *pmNameBuff; // menu name buffer
3965 
3966  char *pdNameBuff; // dialog name buffer
3967 
3968  /*
3969  * Check user arguments.
3970  */
3971  if (2 == argc)
3972  {
3973  my_fp = fopen (argv[1], "rb");
3974  if (my_fp == NULL)
3975  {
3976  printf (
3977  "%s: can not open input file \"%s\".\n",
3978  argv[0],
3979  argv[1]
3980  );
3981  exit (0);
3982  }
3983  }
3984  else
3985  {
3986  printf (
3987  "%s - PE/COFF file dumper\n"
3988  "Copyright (c) 1993 Randy Kath (MSDN Technology Group)\n"
3989  "Copyright (c) 1997 Sang Cho (CS & Engineering - Chongju University)\n"
3990  "Copyright (c) 2000 Emanuele Aliberti (ReactOS Development Team)\n\n",
3991  argv[0]
3992  );
3993  printf (
3994  "usage: %s input_file_name\n",
3995  argv[0]
3996  );
3997  exit (0);
3998  }
3999  /*
4000  * Get input file's size.
4001  */
4002  /* argv [0], */
4003  fseek (my_fp, 0L, SEEK_END);
4004  fsize = ftell (my_fp);
4005  rewind (my_fp);
4006  /*
4007  * Buffer the file in memory.
4008  */
4009  lpFile = (void *) calloc (fsize, 1);
4010  if (lpFile == NULL)
4011  {
4012  printf (
4013  "%s: can not allocate memory.\n",
4014  argv[0]
4015  );
4016  fclose(my_fp);
4017  exit (0);
4018  }
4019  /*
4020  * --- Start of report ---
4021  */
4022  printf ("\n\nDump of file: %s\n\n", argv[1]);
4023 
4024  n = fread (lpFile, fsize, 1, my_fp);
4025  fclose(my_fp);
4026 
4027  if (n == -1)
4028  {
4029  printf (
4030  "%s: failed to read the file \"%s\".\n",
4031  argv[0],
4032  argv[1]
4033  );
4034  free(lpFile);
4035  exit (0);
4036  }
4037 
4038  GetDosHeader (lpFile, &dosHdr);
4039 
4040  if ((WORD) IMAGE_DOS_SIGNATURE == dosHdr.e_magic)
4041  {
4042  if ((dosHdr.e_lfanew > 4096)
4043  || (dosHdr.e_lfanew < 64)
4044  )
4045  {
4046  printf (
4047  "%s: This file is not in PE format; it looks like in DOS format.\n",
4048  argv[0]
4049  );
4050  free(lpFile);
4051  exit (0);
4052  }
4053  }
4054  else
4055  {
4056  printf (
4057  "%s: This doesn't look like an executable file (magic = 0x%04x).\n",
4058  argv[0],
4059  dosHdr.e_magic
4060  );
4061  free(lpFile);
4062  exit (0);
4063  }
4064 
4065  fileType = ImageFileType (lpFile);
4066 
4067  if (fileType != IMAGE_NT_SIGNATURE)
4068  {
4069  printf (
4070  "%s: This file is not in PE format (magic = 0x%08lx).\n",
4071  argv[0],
4072  fileType
4073  );
4074  free(lpFile);
4075  exit (0);
4076  }
4077 
4078  //=====================================
4079  // now we can really start processing
4080  //=====================================
4081 
4082  pfh = (PIMAGE_FILE_HEADER) PEFHDROFFSET (lpFile);
4083 
4084  poh = (PIMAGE_OPTIONAL_HEADER) OPTHDROFFSET (lpFile);
4085 
4086  psh = (PIMAGE_SECTION_HEADER) SECHDROFFSET (lpFile);
4087 
4088  nSections = pfh->NumberOfSections;
4089 
4090  imageBase = poh->ImageBase;
4091 
4092  entryPoint = poh->AddressOfEntryPoint;
4093 
4094  if (psh == NULL)
4095  {
4096  free(lpFile);
4097  return 0;
4098  }
4099 
4100  /* store section headers */
4101 
4102  for (i = 0;
4103  i < nSections;
4104  i++
4105  )
4106  {
4107  shdr[i] = *psh++;
4108  }
4109  /*
4110  * Get Code offset and size,
4111  * Data offset and size.
4112  */
4113  for (i = 0;
4114  i < nSections;
4115  i++
4116  )
4117  {
4118  if (poh->BaseOfCode == shdr[i].VirtualAddress)
4119  {
4120  printf (
4121  "Code Offset = %08lX, Code Size = %08lX \n",
4122  shdr[i].PointerToRawData,
4123  shdr[i].SizeOfRawData
4124  );
4125  }
4126  if (((shdr[i].Characteristics) & 0xC0000040) == 0xC0000040)
4127  {
4128  printf (
4129  "Data Offset = %08lX, Data Size = %08lX \n",
4130  shdr[i].PointerToRawData,
4131  shdr[i].SizeOfRawData
4132  );
4133  break;
4134  }
4135  }
4136 
4137  printf ("\n");
4138 
4139  printf (
4140  "Number of Objects = %04d (dec), Imagebase = %08Xh \n",
4141  nSections,
4142  imageBase
4143  );
4144  /*
4145  * Object name alignment.
4146  */
4147  for (i = 0;
4148  i < nSections;
4149  i++
4150  )
4151  {
4152  for (j = 0;
4153  j < 7;
4154  j++
4155  )
4156  {
4157  if (shdr[i].Name[j] == 0)
4158  {
4159  shdr[i].Name[j] = 32;
4160  }
4161  }
4162  shdr[i].Name[7] = 0;
4163  }
4164  for (i = 0; i < nSections; i++)
4165  printf ("\n Object%02d: %8s RVA: %08lX Offset: %08lX Size: %08lX Flags: %08lX ",
4166  i + 1, shdr[i].Name, shdr[i].VirtualAddress, shdr[i].PointerToRawData,
4167  shdr[i].SizeOfRawData, shdr[i].Characteristics);
4168  /*
4169  * Get List of Resources.
4170  */
4171  nResources = GetListOfResourceTypes (lpFile, &pnstr);
4172  pst = pnstr;
4173  printf ("\n");
4174  printf ("\n+++++++++++++++++++ RESOURCE INFORMATION +++++++++++++++++++");
4175  printf ("\n");
4176  if (nResources == 0)
4177  printf ("\n There are no Resources in This Application.\n");
4178  else
4179  {
4180  printf ("\nNumber of Resource Types = %4d (decimal)\n", nResources);
4181  for (i = 0; i < nResources; i++)
4182  {
4183  printf ("\n Resource Type %03d: %s", i + 1, pst);
4184  pst += strlen ((char *) (pst)) + 1;
4185  }
4186  free ((void *) pnstr);
4187 
4188  printf ("\n");
4189  printf ("\n+++++++++++++++++++ MENU INFORMATION +++++++++++++++++++");
4190  printf ("\n");
4191 
4192  nMenus = GetContentsOfMenu (lpFile, &pmNameBuff);
4193 
4194  if (nMenus == 0)
4195  {
4196  printf ("\n There are no Menus in This Application.\n");
4197  }
4198  else
4199  {
4200  pst = pmNameBuff;
4201  printf ("\nNumber of Menus = %4d (decimal)", nMenus);
4202 
4203  //dumpMenu(&pst, 8096);
4204  for (i = 0; i < nMenus; i++)
4205  {
4206  // menu ID print
4207  printf ("\n\n%s", pst);
4208  pst += strlen (pst) + 1;
4209  printf ("\n-------------");
4210  if (strncmp (pst, ":::::::::::", 11) == 0)
4211  {
4212  printf ("\n");
4213  PrintStrangeMenu (&pst);
4214  }
4215  else
4216  {
4217  PrintMenu (6, &pst);
4218  }
4219  //else PrintStrangeMenu(&pst);
4220  }
4221  free ((void *) pmNameBuff);
4222  printf ("\n");
4223  }
4224 
4225  printf ("\n");
4226  printf ("\n+++++++++++++++++ DIALOG INFORMATION +++++++++++++++++++");
4227  printf ("\n");
4228 
4229  nDialogs = GetContentsOfDialog (lpFile, &pdNameBuff);
4230 
4231  if (nDialogs == 0)
4232  {
4233  printf ("\n There are no Dialogs in This Application.\n");
4234  }
4235  else
4236  {
4237  pst = pdNameBuff;
4238  printf ("\nNumber of Dialogs = %4d (decimal)", nDialogs);
4239 
4240  printf ("\n");
4241 
4242  for (i = 0; i < nDialogs; i++)
4243  {
4244  // Dialog ID print
4245  printf ("\nName: %s", pst);
4246  pst += strlen (pst) + 1;
4247  PrintDialog (&pst);
4248  }
4249  free ((void *) pdNameBuff);
4250  printf ("\n");
4251  }
4252  }
4253 
4254  printf ("\n+++++++++++++++++++ IMPORTED FUNCTIONS +++++++++++++++++++");
4255 
4256  nImportedModules = GetImportModuleNames (lpFile, &piNameBuff);
4257  if (nImportedModules == 0)
4258  {
4259  printf ("\n There are no imported Functions in This Application.\n");
4260  }
4261  else
4262  {
4263  pnstr = piNameBuff;
4264  printf ("\nNumber of Imported Modules = %4d (decimal)\n", nImportedModules);
4265  for (i = 0; i < nImportedModules; i++)
4266  {
4267  printf ("\n Import Module %03d: %s", i + 1, pnstr);
4268  pnstr += strlen ((char *) (pnstr)) + 1;
4269  }
4270 
4271  printf ("\n");
4272  printf ("\n+++++++++++++++++++ IMPORT MODULE DETAILS +++++++++++++++++");
4273  pnstr = piNameBuff;
4274  for (i = 0; i < nImportedModules; i++)
4275  {
4276  printf ("\n\n Import Module %03d: %s \n", i + 1, pnstr);
4277  nFunctions = GetImportFunctionNamesByModule (lpFile, pnstr, &pfNameBuff);
4278  pnstr += strlen ((char *) (pnstr)) + 1;
4279  pst = pfNameBuff;
4280  for (j = 0; j < nFunctions; j++)
4281  {
4282  printf ("\nAddr:%08X hint(%04X) Name: %s",
4283  (*(int *) pst), (*(short *) (pst + 4)),
4284  //(pst+6));
4285  TranslateFunctionName (pst + 6));
4286  pst += strlen ((char *) (pst + 6)) + 1 + 6;
4287  }
4288  free ((void *) pfNameBuff);
4289  }
4290  free ((void *) piNameBuff);
4291  }
4292 
4293  printf ("\n");
4294  printf ("\n+++++++++++++++++++ EXPORTED FUNCTIONS +++++++++++++++++++");
4295 
4296  nExportedFunctions = GetExportFunctionNames (lpFile, &peNameBuff);
4297  printf ("\nNumber of Exported Functions = %4d (decimal)\n", nExportedFunctions);
4298 
4299  if (nExportedFunctions > 0)
4300  {
4301  pst = peNameBuff;
4302 
4303  for (i = 0; i < nExportedFunctions; i++)
4304  {
4305  printf ("\nAddr:%08X Ord:%4d (%04Xh) Name: %s",
4306  (*(int *) pst), (*(WORD *) (pst + 4)), (*(WORD *) (pst + 4)),
4307  //(pst+6));
4308  TranslateFunctionName (pst + 6));
4309  pst += strlen ((char *) (pst + 6)) + 6 + 1;
4310  }
4311  free ((void *) peNameBuff);
4312  }
4313 
4314  free ((void *) lpFile);
4315 
4316  return 0;
4317 }
#define MAXSECTIONNUMBER
Definition: pedump.c:3915
static int argc
Definition: ServiceArgs.c:12
int WINAPI GetListOfResourceTypes(LPVOID, char **)
Definition: pedump.c:2536
void WINAPI PrintDialog(char **psz)
Definition: pedump.c:3620
#define PEFHDROFFSET(a)
Definition: pedump.c:810
int WINAPI GetExportFunctionNames(LPVOID, char **)
Definition: pedump.c:2365
ACPI_SIZE strlen(const char *String)
Definition: utclib.c:269
#define free
Definition: debug_ros.c:5
#define OPTHDROFFSET(a)
Definition: pedump.c:815
int WINAPI GetImportModuleNames(LPVOID, char **)
Definition: pedump.c:1208
GLdouble n
Definition: glext.h:7729
#define argv
Definition: mplay32.c:18
int WINAPI GetImportFunctionNamesByModule(LPVOID, char *, char **)
Definition: pedump.c:1265
char *WINAPI TranslateFunctionName(char *)
Definition: pedump.c:1953
#define IMAGE_DOS_SIGNATURE
Definition: pedump.c:89
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
_Check_return_opt_ _CRTIMP size_t __cdecl fread(_Out_writes_bytes_(_ElementSize *_Count) void *_DstBuf, _In_ size_t _ElementSize, _In_ size_t _Count, _Inout_ FILE *_File)
#define SECHDROFFSET(a)
Definition: pedump.c:821
DWORD WINAPI ImageFileType(LPVOID)
Definition: pedump.c:941
_Check_return_opt_ _CRTIMP int __cdecl fseek(_Inout_ FILE *_File, _In_ long _Offset, _In_ int _Origin)
struct _IMAGE_OPTIONAL_HEADER * PIMAGE_OPTIONAL_HEADER
int WINAPI GetContentsOfDialog(LPVOID lpFile, char **pszResTypes)
Definition: pedump.c:3392
_CRTIMP void __cdecl rewind(_Inout_ FILE *_File)
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
Definition: glfuncs.h:250
#define IMAGE_NT_SIGNATURE
Definition: pedump.c:93
struct _IMAGE_FILE_HEADER * PIMAGE_FILE_HEADER
int strncmp(const char *String1, const char *String2, ACPI_SIZE Count)
Definition: utclib.c:534
unsigned short WORD
Definition: ntddk_ex.h:93
unsigned long DWORD
Definition: ntddk_ex.h:95
#define NULL
Definition: pedump.c:76
static const WCHAR L[]
Definition: oid.c:1250
_Check_return_opt_ _CRTIMP int __cdecl fclose(_Inout_ FILE *_File)
_Check_return_ _CRTIMP FILE *__cdecl fopen(_In_z_ const char *_Filename, _In_z_ const char *_Mode)
_In_ ULONG _In_ BOOLEAN _Must_inspect_result_ PVOID * VirtualAddress
Definition: ndis.h:3773
BOOL WINAPI GetDosHeader(LPVOID, PIMAGE_DOS_HEADER)
Definition: pedump.c:915
int WINAPI PrintStrangeMenu(char **)
Definition: pedump.c:3202
struct _IMAGE_SECTION_HEADER * PIMAGE_SECTION_HEADER
int WINAPI PrintMenu(int, char **)
Definition: pedump.c:3244
BYTE Name[IMAGE_SIZEOF_SHORT_NAME]
Definition: pedump.c:281
int WINAPI GetContentsOfMenu(LPVOID, char **)
Definition: pedump.c:2921
#define calloc
Definition: rosglue.h:14
_Check_return_ _CRTIMP long __cdecl ftell(_Inout_ FILE *_File)
#define SEEK_END
Definition: cabinet.c:27
void exit(int exitcode)
Definition: _exit.c:33
#define printf
Definition: config.h:203
GLint fsize
Definition: glext.h:9408

◆ MenuFill()

int WINAPI MenuFill ( char **  psz,
WORD **  pMenu 
)

Definition at line 2806 of file pedump.c.

2809 {
2810  //int num = 0;
2811  //int ndetails;
2812  char *ptr/*, *pTemp*/;
2813  WORD *pwd;
2814  WORD flag, flag1;
2815  WORD id/*, ispopup*/;
2816 
2817  ptr = *psz;
2818  pwd = *pMenu;
2819  //flag = (*(PIMAGE_POPUP_MENU_ITEM *)pwd)->fItemFlags;
2820  flag = *pwd; // so difficult to correctly code this so let's try this
2821 
2822  pwd++;
2823  if ((flag & 0x0010) == 0)
2824  {
2825  *(WORD *) ptr = flag; // flag store
2826 
2827  ptr += 2;
2828  *(WORD *) ptr = id = *pwd; // id store
2829 
2830  ptr += 2;
2831  pwd++;
2832  }
2833  else
2834  {
2835  *(WORD *) ptr = flag; // flag store
2836 
2837  ptr += 2;
2838  }
2839 
2840  while (*pwd) // name extract
2841 
2842  {
2843  *ptr = *(char *) pwd;
2844  ptr++;
2845  pwd++;
2846  } //name and null character
2847 
2848  *ptr = 0;
2849  ptr++;
2850  pwd++; // skip double null
2851 
2852  if ((flag & 0x0010) == 0) // normal node: done
2853 
2854  {
2855  *pMenu = pwd;
2856  *psz = ptr;
2857  return (int) flag;
2858  }
2859  //pTemp = ptr;
2860  //ptr += 2;
2861  // popup node: need to go on...
2862  while (1)
2863  {
2864  //num++;
2865  *pMenu = pwd;
2866  *psz = ptr;
2867  flag1 = (WORD) MenuFill (psz, pMenu);
2868  pwd = *pMenu;
2869  ptr = *psz;
2870  if (flag1 & 0x0080)
2871  break;
2872  }
2873 // fill # of details to num above
2874  //*(WORD *)pTemp = (WORD)num;
2875  *pMenu = pwd;
2876  *psz = ptr;
2877  return flag;
2878 }
unsigned short WORD
Definition: pedump.c:65
void pwd(int argc, const char *argv[])
Definition: cmds.c:1401
static PVOID ptr
Definition: dispmode.c:27
unsigned short WORD
Definition: ntddk_ex.h:93
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean flag
Definition: glfuncs.h:52
int WINAPI MenuFill(char **, WORD **)
Definition: pedump.c:2806

Referenced by GetContentsOfMenu().

◆ MenuScan()

int WINAPI MenuScan ( int len,
WORD **  pMenu 
)

Definition at line 2738 of file pedump.c.

2741 {
2742  //int num = 0;
2743  //int ndetails;
2744  WORD *pwd;
2745  WORD flag, flag1;
2746  WORD id, ispopup;
2747 
2748 
2749  pwd = *pMenu;
2750 
2751  flag = *pwd; // so difficult to correctly code this so let's try this
2752 
2753  pwd++;
2754  (*len) += 2; // flag store
2755 
2756  if ((flag & 0x0010) == 0)
2757  {
2758  ispopup = flag;
2759  id = *pwd;
2760  pwd++;
2761  (*len) += 2; // id store
2762 
2763  }
2764  else
2765  {
2766  ispopup = flag;
2767  }
2768 
2769  while (*pwd)
2770  {
2771  (*len)++;
2772  pwd++;
2773  }
2774  (*len)++; // name and null character
2775 
2776  pwd++; // skip double null
2777 
2778  if ((flag & 0x0010) == 0) // normal node: done
2779 
2780  {
2781  *pMenu = pwd;
2782  return (int) flag;
2783  }
2784  // popup node: need to go on...
2785  while (1)
2786  {
2787  *pMenu = pwd;
2788  flag1 = (WORD) MenuScan (len, pMenu);
2789  pwd = *pMenu;
2790  if (flag1 & 0x0080)
2791  break;
2792  }
2793 // fill # of details to num above
2794  //(*len) += 2;
2795  *pMenu = pwd;
2796  return flag;
2797 }
unsigned short WORD
Definition: pedump.c:65
void pwd(int argc, const char *argv[])
Definition: cmds.c:1401
unsigned short WORD
Definition: ntddk_ex.h:93
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean flag
Definition: glfuncs.h:52
GLenum GLsizei len
Definition: glext.h:6722
int WINAPI MenuScan(int *, WORD **)
Definition: pedump.c:2738
GLenum GLuint id
Definition: glext.h:5579

Referenced by GetContentsOfMenu().

◆ NumOfSections()

int WINAPI NumOfSections ( LPVOID  lpFile)

Definition at line 1023 of file pedump.c.

1025 {
1026  /* number os sections is indicated in file header */
1027  return ((int) ((PIMAGE_FILE_HEADER) PEFHDROFFSET (lpFile))->NumberOfSections);
1028 }
#define PEFHDROFFSET(a)
Definition: pedump.c:810

Referenced by GetActualAddress(), GetSectionHdrByName(), GetSectionNames(), and ImageDirectoryOffset().

◆ PrintDialog()

void WINAPI PrintDialog ( char **  psz)

Definition at line 3620 of file pedump.c.

3622 {
3623  int i/*, j, k, l, n, c*/;
3624  int num, size;
3625  DWORD flag;
3626  WORD class;
3627  //char buff[32];
3628  char *ptr, *pmax;
3629  BOOL isStrange = FALSE;
3630 
3631  ptr = *psz;
3632  size = *(int *) ptr;
3633  ptr += 4;
3634  pmax = ptr + size;
3635 
3636  // IStype of Dialog Header
3637  flag = *(DWORD *) ptr;
3638  //
3639  // check if flag is right or not
3640  // it has been observed that some dialog information is strange
3641  // and extra work is needed to fix that ... so let's try something
3642  //
3643 
3644  if ((flag & 0xFFFF0000) == 0xFFFF0000)
3645  {
3646  flag = *(DWORD *) (ptr + 12);
3647  num = *(short *) (ptr + 16);
3648  isStrange = TRUE;
3649  ptr += 26;
3650  }
3651  else
3652  {
3653  num = *(short *) (ptr + 8);
3654  ptr += 18;
3655  }
3656  printf (", # of Controls=%03d, Caption:%c", num, '"');
3657 
3658  // Menu name
3659  if (*(WORD *) ptr == 0xFFFF)
3660  ptr += 4; // ordinal
3661 
3662  else
3663  {
3664  while (*(WORD *) ptr)
3665  ptr += 2;
3666  ptr += 2;
3667  } // name
3668 
3669  // Class name
3670  if (*(WORD *) ptr == 0xFFFF)
3671  ptr += 4; // ordinal
3672 
3673  else
3674  {
3675  while (*(WORD *) ptr)
3676  ptr += 2;
3677  ptr += 2;
3678  } // name
3679 
3680  // Caption
3681  while (*(WORD *) ptr)
3682  {
3683  printf ("%c", *ptr);
3684  ptr += 2;
3685  }
3686  ptr += 2;
3687  printf ("%c", '"');
3688 
3689  // FONT present
3690  if (flag & 0x00000040)
3691  {
3692  if (isStrange)
3693  ptr += 6;
3694  else
3695  ptr += 2; // FONT size
3696 
3697  while (*(WORD *) ptr)
3698  ptr += 2; // WCHARs
3699 
3700  ptr += 2; // double null
3701 
3702  }
3703 
3704  // strange case adjust
3705  if (isStrange)
3706  ptr += 8;
3707 
3708  // DWORD padding
3709  if ((ptr - *psz) % 4)
3710  ptr += 4 - ((ptr - *psz) % 4);
3711 
3712  // start reporting .. finally
3713  for (i = 0; i < num; i++)
3714  {
3715  flag = *(DWORD *) ptr;
3716  if (isStrange)
3717  ptr += 14;
3718  else
3719  ptr += 16;
3720  printf ("\n Control::%03d - ID:", i + 1);
3721 
3722  // Control ID
3723  printf ("%04X, Class:", *(WORD *) ptr);
3724  ptr += 2;
3725 
3726  // Control Class
3727  if (*(WORD *) ptr == 0xFFFF)
3728  {
3729  ptr += 2;
3730  class = *(WORD *) ptr;
3731  ptr += 2;
3732  switch (class)
3733  {
3734  case 0x80:
3735  printf ("BUTTON ");
3736  break;
3737  case 0x81:
3738  printf ("EDIT ");
3739  break;
3740  case 0x82:
3741  printf ("STATIC ");
3742  break;
3743  case 0x83:
3744  printf ("LISTBOX ");
3745  break;
3746  case 0x84:
3747  printf ("SCROLLBAR");
3748  break;
3749  case 0x85:
3750  printf ("COMBOBOX ");
3751  break;
3752  default:
3753  printf ("%04X ", class);
3754  break;
3755  }
3756  }
3757  else
3759 
3760  printf (" Text:");
3761 
3762  // Text
3764 
3765  // nExtraStuff
3766  ptr += 2;
3767 
3768  // strange case adjust
3769  if (isStrange)
3770  ptr += 8;
3771 
3772  // DWORD padding
3773  if ((ptr - *psz) % 4)
3774  ptr += 4 - ((ptr - *psz) % 4);
3775  }
3776 
3777  /*
3778  ptr = *psz;
3779  printf("\n");
3780 
3781  for (i=0; i<(size/16)+1; i++)
3782  {
3783  n = 0;
3784  for (j=0; j<16; j++)
3785  {
3786  c = (int)(*ptr);
3787  if (c<0) c+=256;
3788  buff[j] = c;
3789  printf ("%02X",c);
3790  ptr++;
3791  if (ptr >= pmax) break;
3792  n++;
3793  if (n%4 == 0) printf (" ");
3794  }
3795  n++; if (n%4 == 0) printf (" ");
3796  l = j;
3797  j++;
3798  for (; j<16; j++)
3799  { n++; if (n%4 == 0) printf (" "); else printf (" "); }
3800  printf (" ");
3801  for (k=0; k<l; k++)
3802  if (isprint(c=buff[k])) printf("%c", c); else printf(".");
3803  printf ("\n");
3804  if (ptr >= pmax) break;
3805  }
3806  */
3807 
3808  *psz = pmax;
3809 
3810 }
#define TRUE
Definition: pedump.c:80
void WINAPI PrintNameOrOrdinal(char **psz)
Definition: pedump.c:3587
#define FALSE
Definition: pedump.c:79
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
unsigned int BOOL
Definition: ntddk_ex.h:94
static PVOID ptr
Definition: dispmode.c:27
GLsizeiptr size
Definition: glext.h:5919
unsigned short WORD
Definition: ntddk_ex.h:93
unsigned long DWORD
Definition: ntddk_ex.h:95
GLuint GLuint num
Definition: glext.h:9618
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean flag
Definition: glfuncs.h:52
#define printf
Definition: config.h:203

Referenced by main().

◆ PrintMenu()

int WINAPI PrintMenu ( int  indent,
char **  psz 
)

Definition at line 3244 of file pedump.c.

3247 {
3248 
3249  int /*i, */ j, k, l;
3250  WORD id /*, num */ ;
3251  WORD flag;
3252  char buff[128];
3253  char *ptr;
3254 
3255 
3256  ptr = *psz;
3257  //num = *(WORD *)ptr;
3258  //ptr += 2;
3259  while (1)
3260  {
3261  flag = *(WORD *) ptr;
3262  if (flag & 0x0010) // flag == popup
3263 
3264  {
3265  printf ("\n\n");
3266  for (j = 0; j < indent; j++)
3267  printf (" ");
3268  ptr += 2;
3269  printf ("%s {Popup}\n", ptr);
3270  ptr += strlen (ptr) + 1;
3271  *psz = ptr;
3272  PrintMenu (indent + 5, psz);
3273  ptr = *psz;
3274  }
3275  else // ispopup == 0
3276 
3277  {
3278  printf ("\n");
3279  for (j = 0; j < indent; j++)
3280  printf (" ");
3281  ptr += 2;
3282  id = *(WORD *) ptr;
3283  ptr += 2;
3284  strcpy (buff, ptr);
3285  l = strlen (ptr);
3286  ptr += l + 1;
3287  if (strchr (buff, 0x09) != NULL)
3288  {
3289  for (k = 0; k < l; k++)
3290  if (buff[k] == 0x09)
3291  break;
3292  for (j = 0; j < l - k; j++)
3293  buff[31 - j] = buff[l - j];
3294  for (j = k; j < 32 + k - l; j++)
3295  buff[j] = 32;
3296  }
3297  if (strchr (buff, 0x08) != NULL)
3298  {
3299  for (k = 0; k < l; k++)
3300  if (buff[k] == 0x08)
3301  break;
3302  for (j = 0; j < l - k; j++)
3303  buff[31 - j] = buff[l - j];
3304  for (j = k; j < 32 + k - l; j++)
3305  buff[j] = 32;
3306  }
3307  printf ("%s", buff);
3308  l = strlen (buff);
3309  for (j = l; j < 32; j++)
3310  printf (" ");
3311  printf ("[ID=%04Xh]", id);
3312  *psz = ptr;
3313  }
3314  if (flag & 0x0080)
3315  break;
3316  }
3317  return 0;
3318 }
static const WCHAR indent[]
Definition: object.c:1156
ACPI_SIZE strlen(const char *String)
Definition: utclib.c:269
static PVOID ptr
Definition: dispmode.c:27
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
Definition: glfuncs.h:250
r l[0]
Definition: byte_order.h:167
unsigned short WORD
Definition: ntddk_ex.h:93
#define NULL
Definition: pedump.c:76
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean flag
Definition: glfuncs.h:52
int WINAPI PrintMenu(int, char **)
Definition: pedump.c:3244
char * strchr(const char *String, int ch)
Definition: utclib.c:501
char * strcpy(char *DstString, const char *SrcString)
Definition: utclib.c:388
int k
Definition: mpi.c:3369
static unsigned char buff[32768]
Definition: fatten.c:17
#define printf
Definition: config.h:203

Referenced by main().

◆ PrintNameOrOrdinal()

void WINAPI PrintNameOrOrdinal ( char **  psz)

Definition at line 3587 of file pedump.c.

3589 {
3590  char *ptr;
3591 
3592  ptr = *psz;
3593  if (*(WORD *) ptr == 0xFFFF)
3594  {
3595  ptr += 2;
3596  printf ("%04X", *(WORD *) ptr);
3597  ptr += 2;
3598  }
3599  else
3600  {
3601  printf ("%c", '"');
3602  while (*(WORD *) ptr)
3603  {
3604  printf ("%c", *ptr);
3605  ptr += 2;
3606  }
3607  ptr += 2;
3608  printf ("%c", '"');
3609  }
3610  *psz = ptr;
3611 }
static PVOID ptr
Definition: dispmode.c:27
unsigned short WORD
Definition: ntddk_ex.h:93
#define printf
Definition: config.h:203

Referenced by PrintDialog().

◆ PrintStrangeMenu()

int WINAPI PrintStrangeMenu ( char **  psz)

Definition at line 3202 of file pedump.c.

3204 {
3205 
3206  //int i, j, k, l;
3207  int num;
3208  //WORD flag1, flag2;
3209  //char buff[128];
3210  char *ptr, *pmax;
3211 
3212  //return dumpMenu (psz, size);
3213 
3214  ptr = *psz;
3215 
3216  if (strncmp (ptr, ":::::::::::", 11) != 0)
3217  {
3218  printf ("\n#### I don't know why!!!");
3219  dumpMenu (psz, 1024);
3220  exit (0);
3221  }
3222 
3223  ptr += 12;
3224  num = *(int *) ptr;
3225  ptr += 4;
3226  pmax = ptr + num;
3227 
3228  *psz = ptr;
3229  return dumpMenu (psz, num);
3230 
3231  // I will write some code later...
3232 
3233 }
static PVOID ptr
Definition: dispmode.c:27
int strncmp(const char *String1, const char *String2, ACPI_SIZE Count)
Definition: utclib.c:534
GLuint GLuint num
Definition: glext.h:9618
int WINAPI dumpMenu(char **psz, int size)
Definition: pedump.c:3327
void exit(int exitcode)
Definition: _exit.c:33
#define printf
Definition: config.h:203

Referenced by main().

◆ RetrieveModuleName()

int WINAPI RetrieveModuleName ( LPVOID  lpFile,
char **  pszModule 
)

Definition at line 3834 of file pedump.c.

3837 {
3838 
3840  PIMAGE_DEBUG_MISC pdm = NULL;
3841  int nCnt;
3842 
3844  return 0;
3845 
3846  while (pdd->SizeOfData)
3847  {
3848  if (pdd->Type == IMAGE_DEBUG_TYPE_MISC)
3849  {
3850  pdm = (PIMAGE_DEBUG_MISC) ((DWORD) pdd->PointerToRawData + (DWORD) lpFile);
3851  *pszModule = (char *) calloc ((nCnt = (strlen ((char *)pdm->Data))) + 1, 1);
3852  // may need some unicode business here...above
3853  bcopy (pdm->Data, *pszModule, nCnt);
3854 
3855  break;
3856  }
3857 
3858  pdd++;
3859  }
3860 
3861  if (pdm != NULL)
3862  return nCnt;
3863  else
3864  return 0;
3865 }
ACPI_SIZE strlen(const char *String)
Definition: utclib.c:269
struct _IMAGE_DEBUG_MISC * PIMAGE_DEBUG_MISC
unsigned long DWORD
Definition: pedump.c:62
#define IMAGE_DIRECTORY_ENTRY_DEBUG
Definition: pedump.c:265
#define IMAGE_DEBUG_TYPE_MISC
Definition: pedump.c:727
unsigned long DWORD
Definition: ntddk_ex.h:95
#define NULL
Definition: pedump.c:76
LPVOID WINAPI ImageDirectoryOffset(LPVOID, DWORD)
Definition: pedump.c:1097
#define calloc
Definition: rosglue.h:14
BYTE Data[1]
Definition: compat.h:162
#define bcopy(s, d, z)
Definition: pedump.c:54

◆ StrangeMenuFill()

void WINAPI StrangeMenuFill ( char **  psz,
WORD **  pMenu,
int  size 
)

Definition at line 2710 of file pedump.c.

2714 {
2715  WORD *pwd;
2716  WORD *ptr, *pmax;
2717 
2718  pwd = *pMenu;
2719  pmax = (WORD *) ((DWORD) pwd + size);
2720  ptr = (WORD *) (*psz);
2721 
2722  while (pwd < pmax)
2723  {
2724  *ptr++ = *pwd++;
2725  }
2726  *psz = (char *) ptr;
2727  *pMenu = pwd;
2728 }
void pwd(int argc, const char *argv[])
Definition: cmds.c:1401
static PVOID ptr
Definition: dispmode.c:27
GLsizeiptr size
Definition: glext.h:5919
unsigned short WORD
Definition: ntddk_ex.h:93
unsigned long DWORD
Definition: ntddk_ex.h:95

Referenced by GetContentsOfDialog(), and GetContentsOfMenu().

◆ StringExpands()

BOOL WINAPI StringExpands ( char **  ppin,
char **  ppout,
char **  pps,
Str_P pcstr 
)

Definition at line 1679 of file pedump.c.

1684  {
1685 // int n;
1686  // char c;
1687  char *pin, *pout, *ps;
1688  Str_P c_str;
1689  BOOL stringMode = TRUE;
1690 
1691  pin = *ppin;
1692  pout = *ppout;
1693  ps = *pps;
1694  c_str = *pcstr;
1695 
1696  if (strncmp (pin, "bctr", 4) == 0)
1697  {
1698  strncpy (pout, c_str.pos, c_str.length);
1699  pout += c_str.length;
1700  pin += 4;
1701  }
1702  else if (strncmp (pin, "bdtr", 4) == 0)
1703  {
1704  *pout++ = '~';
1705  strncpy (pout, c_str.pos, c_str.length);
1706  pout += c_str.length;
1707  pin += 4;
1708  }
1709  else if (*pin == 'o')
1710  {
1711  strcpy (pout, "const ");
1712  pout += 6;
1713  pin++;
1714  stringMode = FALSE;
1715  }
1716  else if (*pin == 'q')
1717  {
1718  *pout++ = '(';
1719  pin++;
1720  *ps++ = 'q';
1721  stringMode = FALSE;
1722  }
1723  else if (*pin == 't')
1724  {
1725  //if (*(ps-1) == 't') { *pout++ = ','; pin++; } // this also got me...
1726  //else october 12 .. sang
1727  {
1728  *pout++ = '<';
1729  pin++;
1730  *ps++ = 't';
1731  }
1732  stringMode = FALSE;
1733  }
1734  else if (strncmp (pin, "xq", 2) == 0)
1735  {
1736  *pout++ = '(';
1737  pin += 2;
1738  *ps++ = 'x';
1739  *ps++ = 'q';
1740  stringMode = FALSE;
1741  }
1742  else if (strncmp (pin, "bcall", 5) == 0)
1743  {
1744  strcpy (pout, "operator ()");
1745  pout += 11;
1746  pin += 5;
1747  }
1748  else if (strncmp (pin, "bsubs", 5) == 0)
1749  {
1750  strcpy (pout, "operator []");
1751  pout += 11;
1752  pin += 5;
1753  }
1754  else if (strncmp (pin, "bnwa", 4) == 0)
1755  {
1756  strcpy (pout, "operator new[]");
1757  pout += 14;
1758  pin += 4;
1759  }
1760  else if (strncmp (pin, "bdla", 4) == 0)
1761  {
1762  strcpy (pout, "operator delete[]");
1763  pout += 17;
1764  pin += 4;
1765  }
1766  else if (strncmp (pin, "bnew", 4) == 0)
1767  {
1768  strcpy (pout, "operator new");
1769  pout += 12;
1770  pin += 4;
1771  }
1772  else if (strncmp (pin, "bdele", 5) == 0)
1773  {
1774  strcpy (pout, "operator delete");
1775  pout += 15;
1776  pin += 5;
1777  }
1778  else if (strncmp (pin, "blsh", 4) == 0)
1779  {
1780  strcpy (pout, "operator <<");
1781  pout += 11;
1782  pin += 4;
1783  }
1784  else if (strncmp (pin, "brsh", 4) == 0)
1785  {
1786  strcpy (pout, "operator >>");
1787  pout += 11;
1788  pin += 4;
1789  }
1790  else if (strncmp (pin, "binc", 4) == 0)
1791  {
1792  strcpy (pout, "operator ++");
1793  pout += 11;
1794  pin += 4;
1795  }
1796  else if (strncmp (pin, "bdec", 4) == 0)
1797  {
1798  strcpy (pout, "operator --");
1799  pout += 11;
1800  pin += 4;
1801  }
1802  else if (strncmp (pin, "badd", 4) == 0)
1803  {
1804  strcpy (pout, "operator +");
1805  pout += 10;
1806  pin += 4;
1807  }
1808  else if (strncmp (pin, "brplu", 5) == 0)
1809  {
1810  strcpy (pout, "operator +=");
1811  pout += 11;
1812  pin += 5;
1813  }
1814  else if (strncmp (pin, "bdiv", 4) == 0)
1815  {
1816  strcpy (pout, "operator /");
1817  pout += 10;
1818  pin += 4;
1819  }
1820  else if (strncmp (pin, "brdiv", 5) == 0)
1821  {
1822  strcpy (pout, "operator /=");
1823  pout += 11;
1824  pin += 5;
1825  }
1826  else if (strncmp (pin, "bmul", 4) == 0)
1827  {
1828  strcpy (pout, "operator *");
1829  pout += 10;
1830  pin += 4;
1831  }
1832  else if (strncmp (pin, "brmul", 5) == 0)
1833  {
1834  strcpy (pout, "operator *=");
<