PWALK.H
上传用户:bangxh
上传日期:2007-01-31
资源大小:42235k
文件大小:8k
源码类别:

Windows编程

开发平台:

Visual C++

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