Annotation of mstools/samples/sdktools/walker/pwalk.h, revision 1.1.1.1

1.1       root        1: #include <windows.h>
                      2: #include <stdlib.h>
                      3: #include <stdio.h>
                      4: #include "pefile.h"
                      5: 
                      6: 
                      7: #define IDR_MAINICON                20
                      8: #define IDR_SYSSTATICON             21
                      9: #define IDR_PROSTATICON             22
                     10: #define IDR_WALKERMENU              30
                     11: 
                     12: #define IDS_WALKERCLASS             11000
                     13: #define IDS_SYSSTATCLASS            11001
                     14: #define IDS_PROSTATCLASS            11002
                     15: #define IDS_STATUSCLASS             11004
                     16: #define IDS_MEMVIEWCLASS            11005
                     17: #define IDS_SYSSTATTITLE            11010
                     18: #define IDS_PROSTATTITLE            11011
                     19: #define IDS_MEMVIEWTITLE            11013
                     20: #define IDS_CAPTION                 11020
                     21: #define IDS_UNAVAILABLE             11021
                     22: #define IDS_LISTBOX                 11022
                     23: #define IDS_EXEFILEEXT              11023
                     24: #define IDS_FILEOPENTITLE           11024
                     25: #define IDS_SELF                    11025
                     26: #define IDS_ERROR                   11030
                     27: #define IDS_NOTENOUGHMEM            11031
                     28: #define IDS_HEAPCREATEFAILED        11032
                     29: #define IDS_DBGEVNTACTIVE           11042
                     30: #define IDS_DBGEVNTCLOSE            11043
                     31: #define IDS_DBGEVNTSTOP             11044
                     32: #define IDS_DBGEVNTSTART            11045
                     33: #define IDS_DBGEVNTREAD             11046
                     34: #define IDS_DBGEVNTWRITE            11047
                     35: #define IDS_DBGEVNTACK              11048
                     36: #define IDS_EXCEPTION               11050
                     37: #define IDS_APPEXCEPTION            11051
                     38: #define IDS_CHILDAPPEXCEPTION       11052
                     39: #define IDS_ERRDUPLICATEHANDLE      11060
                     40: #define IDS_ERRGETTHREADCONTEXT      11061
                     41: #define IDS_ERRCREATEPROCESS        11062
                     42: #define IDS_ERROPENPROCESS          11063
                     43: #define IDS_ERRCREATEFILEMAPPING     11064
                     44: #define IDS_ERRHEAPALLOC            11065
                     45: #define IDS_ERRREADPROCESSMEMORY     11066
                     46: #define IDS_ERRCREATEWINDOW         11067
                     47: #define IDS_ERRVIRTUALFREE          11068
                     48: #define IDS_ERRVIRTUALALLOC         11069
                     49: #define IDS_STATUSREADY             11070
                     50: #define IDS_NOTCOMMITTEDMEMORY      11071
                     51: #define IDS_ERRWRITEPROCESSMEMORY    11072
                     52: #define IDS_COULDNOTREADPROCESS      11073
                     53: #define IDS_ERRSETTHREADCONTEXT      11074
                     54: #define IDS_EXITPROCESS             12000
                     55: #define IDS_EXITTHREAD              12001
                     56: #define IDS_CREATEPROCESS           12002
                     57: #define IDS_CREATETHREAD            12003
                     58: #define IDS_LOADDLL                 12004
                     59: #define IDS_UNLOADDLL               12005
                     60: #define IDS_OUTPUTDEBUGSTRING       12006
                     61: #define IDS_RIPEVENT                12007
                     62: #define IDS_BREAKPOINTEXCEPTION      12008
                     63: #define IDS_ACCESSVIOLATIONEXCEPTION 12009
                     64: #define IDS_UNHANDLEDEXCEPTION      12010
                     65: #define IDS_PROCESSSUSPENDED        12011
                     66: #define IDS_PROCESSRESUMED          12012
                     67: #define IDS_PROCESSINIT             12013
                     68: #define IDS_MAPFILENAME             12014
                     69: #define IDS_INITPROCESSFAILURE      12015
                     70: #define IDS_INITPROBE               12016
                     71: #define IDS_HOOKPROCESS             12017
                     72: 
                     73: #define IDC_LISTBOX                 100
                     74: #define IDC_STATUSWND               101
                     75: #define IDC_REFRESH                 200
                     76: #define IDC_CANCEL                  201
                     77: #define IDC_REWALK                  202
                     78: 
                     79: #define IDM_POPUPMENUS              1000
                     80: #define IDM_POPUPPROCESS            1000
                     81: #define IDM_POPUPSORT               1001
                     82: #define IDM_POPUPVIEW               1002
                     83: #define IDM_POPUPOPTIONS            1003
                     84: #define MENUPOPUPS                  4
                     85: 
                     86: #define IDM_PROCESSREWALK           2000
                     87: #define IDM_PROCESSLOAD             2001
                     88: #define IDM_PROCESSUNLOAD           2002
                     89: #define IDM_PROCESSSUSPEND          2003
                     90: #define IDM_PROCESSRESUME           2004
                     91: #define IDM_EXIT                    2010
                     92: #define IDM_SORTADDRESS             2020
                     93: #define IDM_SORTSTATE               2021
                     94: #define IDM_SORTPROTECTION          2022
                     95: #define IDM_SORTSIZE                2023
                     96: #define IDM_SORTBASEADDRESS         2024
                     97: #define IDM_VIEWSYSSTAT             2030
                     98: #define IDM_VIEWPROSTAT             2031
                     99: #define IDM_VIEWMEMORY              2033
                    100: #define IDM_VIEWADDRESS             2034
                    101: #define IDM_OPTBYTES                 2040
                    102: #define IDM_OPTPAGES                 2041
                    103: 
                    104: #define IDD_ADDR                    3000
                    105: #define IDC_ADDR                    3001
                    106: #define IDC_HEX                     3002
                    107: 
                    108: #define IDD_INITIALIZING            4000
                    109: #define UM_ENDDIALOG                WM_USER+2
                    110: 
                    111: #define TOTALVMRESERVE              0x00100000
                    112: #define PAGESIZE                    0x1000
                    113: #define IDM_REMOVEVIEWWND           WM_USER+0
                    114: 
                    115: #define IDT_STATUS                  3000
                    116: #define UM_UPDATE                   WM_USER+1
                    117: #define UM_STARTINITDIALOG          WM_USER+3
                    118: 
                    119: #define STATUSWXB                   12
                    120: #define WXB_HPENHILITE              0
                    121: #define WXB_HPENSHADOW              4
                    122: #define WXB_LPWINDOWTEXT            8
                    123: 
                    124: #define VIEWWXB                     8
                    125: #define WXB_LPMEMVIEW               0
                    126: #define WXB_LPOLDMEMVIEW            4
                    127: 
                    128: /* define event handle array indeces */
                    129: #define CLOSEDEBUGGER               0
                    130: #define SUSPENDDEBUGGER             1
                    131: #define RESUMEDEBUGGER              2
                    132: #define READMEMORY                  3
                    133: #define WRITEMEMORY                 4
                    134: #define DEBUGACTIVE                 5
                    135: #define ACKNOWLEDGE                 6
                    136: #define nDEBUGEVENTS                7
                    137: 
                    138: 
                    139: typedef struct DBGTHREAD    *LPDBGTHREAD;
                    140: typedef struct tagDbgThread
                    141:     {
                    142:     HANDLE                   hThread;
                    143:     DWORD                    dwThreadID;
                    144:     LPTHREAD_START_ROUTINE    lpStartAddress;
                    145:     int                      nPriority;
                    146:     LPDBGTHREAD              Next;
                    147:     }DBGTHREAD;
                    148: 
                    149: typedef struct DBGDLL   *LPDBGDLL;
                    150: typedef struct tagDbgDll
                    151:     {
                    152:     HANDLE       hFile;
                    153:     LPVOID       lpBaseOfDll;
                    154:     DWORD        dwDebugInfoFileOffset;
                    155:     DWORD        nDebugInfoSize;
                    156:     char         szImageName[MAX_PATH];
                    157:     WORD         fUnicode;
                    158:     LPDBGDLL     Next;
                    159:     SECTIONINFO   *lpSection;  /* from PEFILE.H */
                    160:     }DBGDLL;
                    161: 
                    162: typedef struct DBGEXCEPTREC    *LPDBGEXCEPTREC;
                    163: typedef struct tagDbgExcept
                    164:     {
                    165:     EXCEPTION_RECORD   ExceptRecord;
                    166:     CONTEXT            Context;
                    167:     DWORD              dwThreadId;
                    168:     DWORD              dwFirstChance;
                    169:     LPDBGEXCEPTREC     Next;
                    170:     }DBGEXCEPTREC;
                    171: 
                    172: typedef struct tagDbgProcess
                    173:     {
                    174:     HANDLE      hDbgHeap;
                    175:     DWORD       dwProcessID;
                    176:     HANDLE      hProcess;
                    177:     HANDLE      hFile;
                    178:     LPVOID      lpImage;
                    179:     DWORD       dwDbgInfoOffset;
                    180:     DWORD       nDbgInfoSize;
                    181:     DBGTHREAD   *lpThreads;
                    182:     DBGDLL      *lpDlls;
                    183:     SECTIONINFO  *lpSection;
                    184:     HWND        hWnd;
                    185:     DWORD       dwPriority;
                    186:     BOOL        bActive;
                    187:     char        szModule[MAX_PATH];
                    188:     DBGEXCEPTREC *lpERs;
                    189:     }DBGPROCESS;
                    190: 
                    191: typedef struct tagVMObject
                    192:     {
                    193:     MEMORY_BASIC_INFORMATION   mbi;
                    194:     char                       szObjType[12];
                    195:     char                       szModule[MAX_PATH];
                    196:     char                       szSection[IMAGE_SIZEOF_SHORT_NAME];
                    197:     BOOL                       bNew;
                    198:     }VMOBJECT, * LPVMOBJECT;
                    199: 
                    200: 
                    201: /* struct for memory view window */
                    202: typedef struct tagMemView
                    203:     {
                    204:     LPVOID    lpMem;
                    205:     int       nBase;
                    206:     int       nSize;
                    207:     int       xWin, yWin;
                    208:     int       PosV, RangeV;
                    209:     long      nLines;
                    210:     int       nExtraBytes;
                    211: } MEMVIEW, * LPMEMVIEW;
                    212: 
                    213: 
                    214: /* struct for process probe dll */
                    215: typedef struct tagProbe
                    216:     {
                    217:     HANDLE      hProcess;
                    218:     HANDLE      hDefHeap;
                    219:     }PROBE, * LPPROBE;
                    220: 
                    221: 
                    222: /* struct representing process state */
                    223: typedef struct tagProcessState
                    224:     {
                    225:     CONTEXT    Context;
                    226:     LPVOID     Esp;
                    227:     LPVOID     pStackPage;
                    228:     BYTE       Stack[PAGESIZE];
                    229:     LPVOID     Eip;
                    230:     LPVOID     pCodePage;
                    231:     BYTE       Code[PAGESIZE];
                    232:     }PROCESS_STATE, * LPPROCESS_STATE;
                    233: 
                    234: 
                    235: /* prototypes for functions in pwalk.c */
                    236: LONG   WINAPI WalkerWndProc (HWND, UINT, WPARAM, LPARAM);
                    237: int    WINAPI NotifyUser (HWND, int, int, char *, UINT);
                    238: void   WINAPI ReportError (int);
                    239: BOOL   WINAPI GetFreeDiskSpace (LPDWORD, LPDWORD);
                    240: BOOL   WINAPI InitDlgProc (HWND, UINT, WPARAM, LPARAM);
                    241: 
                    242: /* prototypes for functions in pwalkio.c */
                    243: BOOL   WINAPI GetFileName (HWND, char *, char *);
                    244: void   WINAPI GetFileFromPath (char *, char *);
                    245: BOOL   WINAPI GetCmdLine (char *, char *, BOOL *);
                    246: BOOL   WINAPI IsValidFile (char *);
                    247: 
                    248: /* prototypes for functions in pstat.c */
                    249: LONG   WINAPI SysStatWndProc (HWND, UINT, WPARAM, LPARAM);
                    250: LONG   WINAPI ProStatWndProc (HWND, UINT, WPARAM, LPARAM);
                    251: LONG   WINAPI StatusWndProc (HWND, UINT, WPARAM, LPARAM);
                    252: void   WINAPI SetStatusText (HWND, int, COLORREF);
                    253: 
                    254: /* prototypes for functions in pview.c */
                    255: HWND   WINAPI ViewMemory (HWND, char *, LPVOID, int, int);
                    256: LONG   WINAPI MemWndProc (HWND, UINT, WPARAM, LPARAM);
                    257: void   WINAPI ActivateViewWindow (ATOM);
                    258: HWND   WINAPI EnumViewWindows (HWND, HWND);
                    259: BOOL   WINAPI AddrDlgProc (HWND, UINT, WPARAM, LPARAM);
                    260: 
                    261: /* prototypes for functions in pdebug.c */
                    262: DBGPROCESS* WINAPI StartChildProcess (HWND, char *, LPHANDLE);
                    263: void   WINAPI CloseChildProcess (DBGPROCESS *, LPHANDLE);
                    264: int    WINAPI WhereIsStack (HANDLE);
                    265: int    WINAPI WalkProcess (HANDLE, LPVOID *, LPINT *);
                    266: void   WINAPI AnalyzeProcess (DBGPROCESS *, LPVMOBJECT, int);
                    267: void   WINAPI IdentifyNewObjects (LPVMOBJECT, int, LPVMOBJECT, int);
                    268: BOOL   WINAPI CommittedMemoryRange (int, int, LPVMOBJECT, int *);
                    269: BOOL   WINAPI AccessProcessMemory (HANDLE, HANDLE, LPVOID, LPVOID, DWORD *);
                    270: 
                    271: /* prototypes for functions in probe.c, a DLL */
                    272: void   WINAPI ResetProbe ();
                    273: LPPROBE WINAPI RetrieveProbeData ();

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.