enumhandles.h 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. #include <windows.h>
  2. #define NT_SUCCESS(x) ((x) >= 0)
  3. #define STATUS_INFO_LENGTH_MISMATCH 0xc0000004
  4. #define SystemHandleInformation 16
  5. #define ObjectBasicInformation 0
  6. #define ObjectNameInformation 1
  7. #define ObjectTypeInformation 2
  8. #define QUERY_PROC 0x08
  9. #define QUERY_THREAD 0x10
  10. //GetHandles
  11. typedef NTSTATUS (NTAPI * NtQuerySystemInformation_t)(ULONG SystemInformationClass, PVOID SystemInformation, ULONG SystemInformationLength, PULONG ReturnLength);
  12. typedef NTSTATUS (NTAPI * NtDuplicateObject_t)(HANDLE SourceProcessHandle, HANDLE SourceHandle, HANDLE TargetProcessHandle, PHANDLE TargetHandle, ACCESS_MASK DesiredAccess, ULONG Attributes, ULONG Options);
  13. typedef NTSTATUS (NTAPI * NtQueryObject_t)(HANDLE ObjectHandle, ULONG ObjectInformationClass, PVOID ObjectInformation, ULONG ObjectInformationLength, PULONG ReturnLength);
  14. WINBASEAPI void* __cdecl MSVCRT$malloc(size_t _Size);
  15. WINBASEAPI void* __cdecl MSVCRT$realloc(void* _Memory, size_t _NewSize);
  16. DECLSPEC_IMPORT HANDLE WINAPI KERNEL32$OpenProcess(DWORD dwDesiredAccess, BOOL bInheritHandle, DWORD dwProcessId);
  17. DECLSPEC_IMPORT DWORD WINAPI KERNEL32$K32GetProcessImageFileNameA(HANDLE hProcess, LPSTR lpImageFileName, DWORD nSize);
  18. DECLSPEC_IMPORT HANDLE WINAPI KERNEL32$GetCurrentProcess();
  19. DECLSPEC_IMPORT HANDLE WINAPI KERNEL32$GetCurrentProcessId();
  20. DECLSPEC_IMPORT BOOL WINAPI KERNEL32$CloseHandle (HANDLE hObject);
  21. DECLSPEC_IMPORT LPWSTR WINAPI KERNEL32$StrStrIW(LPCWSTR lpFirst, LPCWSTR lpSrch);
  22. DECLSPEC_IMPORT PCWSTR WINAPI SHLWAPI$StrStrIW(PCWSTR pszFirst, PCWSTR pszSrch);
  23. //WINBASEAPI void __cdecl MSVCRT$free(void* _Memory);
  24. DECLSPEC_IMPORT DWORD WINAPI KERNEL32$GetProcessId(HANDLE Process);
  25. DECLSPEC_IMPORT DWORD WINAPI KERNEL32$GetProcessIdOfThread(HANDLE Thread);
  26. WINBASEAPI int __cdecl MSVCRT$sprintf_s(char *_Dst,size_t _SizeInBytes,const char *_Format,...);
  27. WINBASEAPI int __cdecl MSVCRT$swprintf_s(wchar_t *_Dst,size_t _SizeInWords,const wchar_t *_Format,...);
  28. DECLSPEC_IMPORT LPCSTR WINAPI SHLWAPI$PathFindFileNameA(LPCSTR pszPath);
  29. WINBASEAPI int __cdecl MSVCRT$printf(const char * _Format,...);
  30. WINBASEAPI int __cdecl MSVCRT$strcmp(const char *str1, const char *str2);
  31. //bofstart + internal_printf + printoutput
  32. WINBASEAPI void *__cdecl MSVCRT$calloc(size_t number, size_t size);
  33. WINBASEAPI int WINAPI MSVCRT$vsnprintf(char* buffer, size_t count, const char* format, va_list arg);
  34. WINBASEAPI void __cdecl MSVCRT$memset(void *dest, int c, size_t count);
  35. WINBASEAPI void* WINAPI MSVCRT$memcpy(void* dest, const void* src, size_t count);
  36. WINBASEAPI HANDLE WINAPI KERNEL32$GetProcessHeap();
  37. WINBASEAPI LPVOID WINAPI KERNEL32$HeapAlloc(HANDLE hHeap, DWORD dwFlags, SIZE_T dwBytes);
  38. WINBASEAPI void __cdecl MSVCRT$free(void *memblock);
  39. WINBASEAPI BOOL WINAPI KERNEL32$HeapFree(HANDLE, DWORD, PVOID);
  40. typedef struct _UNICODE_STRING {
  41. USHORT Length;
  42. USHORT MaximumLength;
  43. PWSTR Buffer;
  44. } UNICODE_STRING, *PUNICODE_STRING;
  45. typedef struct _SYSTEM_HANDLE_TABLE_ENTRY_INFO {
  46. USHORT UniqueProcessId;
  47. USHORT CreatorBackTraceIndex;
  48. UCHAR ObjectTypeIndex;
  49. UCHAR HandleAttributes;
  50. USHORT HandleValue;
  51. PVOID Object;
  52. ULONG GrantedAccess;
  53. } SYSTEM_HANDLE_TABLE_ENTRY_INFO, *PSYSTEM_HANDLE_TABLE_ENTRY_INFO;
  54. typedef struct _SYSTEM_HANDLE_INFORMATION {
  55. ULONG NumberOfHandles;
  56. SYSTEM_HANDLE_TABLE_ENTRY_INFO Handles[1];
  57. } SYSTEM_HANDLE_INFORMATION, *PSYSTEM_HANDLE_INFORMATION;
  58. typedef enum _POOL_TYPE {
  59. NonPagedPool,
  60. PagedPool,
  61. NonPagedPoolMustSucceed,
  62. DontUseThisType,
  63. NonPagedPoolCacheAligned,
  64. PagedPoolCacheAligned,
  65. NonPagedPoolCacheAlignedMustS
  66. } POOL_TYPE, *PPOOL_TYPE;
  67. typedef struct _OBJECT_TYPE_INFORMATION {
  68. UNICODE_STRING Name;
  69. ULONG TotalNumberOfObjects;
  70. ULONG TotalNumberOfHandles;
  71. ULONG TotalPagedPoolUsage;
  72. ULONG TotalNonPagedPoolUsage;
  73. ULONG TotalNamePoolUsage;
  74. ULONG TotalHandleTableUsage;
  75. ULONG HighWaterNumberOfObjects;
  76. ULONG HighWaterNumberOfHandles;
  77. ULONG HighWaterPagedPoolUsage;
  78. ULONG HighWaterNonPagedPoolUsage;
  79. ULONG HighWaterNamePoolUsage;
  80. ULONG HighWaterHandleTableUsage;
  81. ULONG InvalidAttributes;
  82. GENERIC_MAPPING GenericMapping;
  83. ULONG ValidAccess;
  84. BOOLEAN SecurityRequired;
  85. BOOLEAN MaintainHandleCount;
  86. USHORT MaintainTypeList;
  87. POOL_TYPE PoolType;
  88. ULONG PagedPoolUsage;
  89. ULONG NonPagedPoolUsage;
  90. } OBJECT_TYPE_INFORMATION, *POBJECT_TYPE_INFORMATION;