Replace undocumented.h with ntdll header and libs (#1620)
* Remove undocumented.h and replace it with header and .lib files for ntdll * Replace ntdll function typedef + GetProcAddress combos with static imports
This commit is contained in:
parent
7f471c9768
commit
ca060c17c1
|
@ -1,14 +1,22 @@
|
|||
#pragma once
|
||||
|
||||
#ifdef _WIN64
|
||||
#define _WIN32_WINNT 0x0502 // XP x64 is version 5.2
|
||||
#else
|
||||
#define _WIN32_WINNT 0x0501
|
||||
#endif
|
||||
|
||||
#ifdef WINVER // Overwrite WINVER if given on command line
|
||||
#undef WINVER
|
||||
#endif
|
||||
#define WINVER 0x0501
|
||||
#define WINVER _WIN32_WINNT
|
||||
|
||||
#define _WIN32_IE 0x0500
|
||||
|
||||
// Allow including Windows.h without bringing in a redefined and outdated subset of NTSTATUSes.
|
||||
// To get NTSTATUS defines, #undef WIN32_NO_STATUS after Windows.h and then #include <ntstatus.h>
|
||||
#define WIN32_NO_STATUS
|
||||
|
||||
#include "../dbg_types.h"
|
||||
#include "../dbg_assert.h"
|
||||
#include "../bridge/bridgemain.h"
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
#include "cmd-analysis.h"
|
||||
#include "ntdll/ntdll.h"
|
||||
#include "linearanalysis.h"
|
||||
#include "memory.h"
|
||||
#include "exceptiondirectoryanalysis.h"
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
#include "cmd-debug-control.h"
|
||||
#include "ntdll/ntdll.h"
|
||||
#include "console.h"
|
||||
#include "debugger.h"
|
||||
#include "animate.h"
|
||||
|
|
|
@ -1,72 +1,9 @@
|
|||
#include "handles.h"
|
||||
#include "undocumented.h"
|
||||
#include "ntdll/ntdll.h"
|
||||
#include "exception.h"
|
||||
#include "debugger.h"
|
||||
#include <functional>
|
||||
|
||||
typedef struct _OBJECT_NAME_INFORMATION
|
||||
{
|
||||
UNICODE_STRING Name;
|
||||
} OBJECT_NAME_INFORMATION, *POBJECT_NAME_INFORMATION;
|
||||
|
||||
typedef struct _OBJECT_TYPE_INFORMATION
|
||||
{
|
||||
UNICODE_STRING TypeName;
|
||||
ULONG TotalNumberOfObjects;
|
||||
ULONG TotalNumberOfHandles;
|
||||
ULONG TotalPagedPoolUsage;
|
||||
ULONG TotalNonPagedPoolUsage;
|
||||
ULONG TotalNamePoolUsage;
|
||||
ULONG TotalHandleTableUsage;
|
||||
ULONG HighWaterNumberOfObjects;
|
||||
ULONG HighWaterNumberOfHandles;
|
||||
ULONG HighWaterPagedPoolUsage;
|
||||
ULONG HighWaterNonPagedPoolUsage;
|
||||
ULONG HighWaterNamePoolUsage;
|
||||
ULONG HighWaterHandleTableUsage;
|
||||
ULONG InvalidAttributes;
|
||||
GENERIC_MAPPING GenericMapping;
|
||||
ULONG ValidAccessMask;
|
||||
BOOLEAN SecurityRequired;
|
||||
BOOLEAN MaintainHandleCount;
|
||||
UCHAR TypeIndex; // since WINBLUE
|
||||
CHAR ReservedByte;
|
||||
ULONG PoolType;
|
||||
ULONG DefaultPagedPoolCharge;
|
||||
ULONG DefaultNonPagedPoolCharge;
|
||||
} OBJECT_TYPE_INFORMATION, *POBJECT_TYPE_INFORMATION;
|
||||
|
||||
#define STATUS_INFO_LENGTH_MISMATCH 0xC0000004
|
||||
#define STATUS_SUCCESS 0x00000000
|
||||
|
||||
#define SystemHandleInformation 16
|
||||
|
||||
#define ObjectNameInformation 1
|
||||
#define ObjectTypeInformation 2
|
||||
|
||||
typedef enum _SYSTEM_HANDLE_FLAGS
|
||||
{
|
||||
PROTECT_FROM_CLOSE = 1,
|
||||
INHERIT = 2
|
||||
} SYSTEM_HANDLE_FLAGS;
|
||||
|
||||
typedef struct _SYSTEM_HANDLE_TABLE_ENTRY_INFO // Size=16
|
||||
{
|
||||
USHORT UniqueProcessId; // Size=2 Offset=0
|
||||
USHORT CreatorBackTraceIndex; // Size=2 Offset=2
|
||||
UCHAR ObjectTypeIndex; // Size=1 Offset=4
|
||||
UCHAR HandleAttributes; // Size=1 Offset=5 (SYSTEM_HANDLE_FLAGS)
|
||||
USHORT HandleValue; // Size=2 Offset=6
|
||||
PVOID Object; // Size=4 Offset=8
|
||||
ULONG GrantedAccess; // Size=4 Offset=12
|
||||
} SYSTEM_HANDLE_TABLE_ENTRY_INFO, *PSYSTEM_HANDLE_TABLE_ENTRY_INFO;
|
||||
|
||||
typedef struct _SYSTEM_HANDLE_INFORMATION // Size=20
|
||||
{
|
||||
ULONG NumberOfHandles; // Size=4 Offset=0
|
||||
SYSTEM_HANDLE_TABLE_ENTRY_INFO Handles[1]; // Size=16 Offset=4
|
||||
} SYSTEM_HANDLE_INFORMATION, *PSYSTEM_HANDLE_INFORMATION;
|
||||
|
||||
typedef NTSTATUS(NTAPI* ZWQUERYSYSTEMINFORMATION)(
|
||||
IN LONG SystemInformationClass,
|
||||
OUT PVOID SystemInformation,
|
||||
|
@ -84,14 +21,11 @@ typedef NTSTATUS(NTAPI* ZWQUERYOBJECT)(
|
|||
|
||||
bool HandlesEnum(duint pid, std::vector<HANDLEINFO> & handles)
|
||||
{
|
||||
static auto ZwQuerySystemInformation = ZWQUERYSYSTEMINFORMATION(GetProcAddress(GetModuleHandleW(L"ntdll.dll"), "ZwQuerySystemInformation"));
|
||||
if(!ZwQuerySystemInformation)
|
||||
return 0;
|
||||
Memory<PSYSTEM_HANDLE_INFORMATION> HandleInformation(16 * 1024, "_dbg_enumhandles");
|
||||
NTSTATUS ErrorCode = ERROR_SUCCESS;
|
||||
for(;;)
|
||||
{
|
||||
ErrorCode = ZwQuerySystemInformation(SystemHandleInformation, HandleInformation(), ULONG(HandleInformation.size()), nullptr);
|
||||
ErrorCode = NtQuerySystemInformation(SystemHandleInformation, HandleInformation(), ULONG(HandleInformation.size()), nullptr);
|
||||
if(ErrorCode != STATUS_INFO_LENGTH_MISMATCH)
|
||||
break;
|
||||
HandleInformation.realloc(HandleInformation.size() * 2, "_dbg_enumhandles");
|
||||
|
@ -123,28 +57,25 @@ static DWORD WINAPI getNameThread(LPVOID lpParam)
|
|||
|
||||
bool HandlesGetName(HANDLE hProcess, HANDLE remoteHandle, String & name, String & typeName)
|
||||
{
|
||||
static auto ZwQueryObject = ZWQUERYOBJECT(GetProcAddress(GetModuleHandleW(L"ntdll.dll"), "ZwQueryObject"));
|
||||
if(!ZwQueryObject)
|
||||
return false;
|
||||
HANDLE hLocalHandle;
|
||||
if(DuplicateHandle(hProcess, remoteHandle, GetCurrentProcess(), &hLocalHandle, 0, FALSE, 0))
|
||||
{
|
||||
ULONG ReturnSize = 0;
|
||||
if(ZwQueryObject(hLocalHandle, ObjectTypeInformation, nullptr, 0, &ReturnSize) == STATUS_INFO_LENGTH_MISMATCH)
|
||||
if(NtQueryObject(hLocalHandle, ObjectTypeInformation, nullptr, 0, &ReturnSize) == STATUS_INFO_LENGTH_MISMATCH)
|
||||
{
|
||||
ReturnSize += 0x2000;
|
||||
Memory<OBJECT_TYPE_INFORMATION*> objectTypeInfo(ReturnSize + sizeof(WCHAR) * 16, "_dbg_gethandlename:objectTypeInfo");
|
||||
if(ZwQueryObject(hLocalHandle, ObjectTypeInformation, objectTypeInfo(), ReturnSize, nullptr) == STATUS_SUCCESS)
|
||||
if(NtQueryObject(hLocalHandle, ObjectTypeInformation, objectTypeInfo(), ReturnSize, nullptr) == STATUS_SUCCESS)
|
||||
typeName = StringUtils::Utf16ToUtf8(objectTypeInfo()->TypeName.Buffer);
|
||||
}
|
||||
|
||||
std::function<void()> getName = [&]()
|
||||
{
|
||||
if(ZwQueryObject(hLocalHandle, ObjectNameInformation, nullptr, 0, &ReturnSize) == STATUS_INFO_LENGTH_MISMATCH)
|
||||
if(NtQueryObject(hLocalHandle, ObjectNameInformation, nullptr, 0, &ReturnSize) == STATUS_INFO_LENGTH_MISMATCH)
|
||||
{
|
||||
ReturnSize += 0x2000;
|
||||
Memory<OBJECT_NAME_INFORMATION*> objectNameInfo(ReturnSize + sizeof(WCHAR) * 16, "_dbg_gethandlename:objectNameInfo");
|
||||
if(ZwQueryObject(hLocalHandle, ObjectNameInformation, objectNameInfo(), ReturnSize, nullptr) == STATUS_SUCCESS)
|
||||
if(NtQueryObject(hLocalHandle, ObjectNameInformation, objectNameInfo(), ReturnSize, nullptr) == STATUS_SUCCESS)
|
||||
name = StringUtils::Utf16ToUtf8(objectNameInfo()->Name.Buffer);
|
||||
}
|
||||
};
|
||||
|
|
|
@ -663,24 +663,15 @@ bool MemDecodePointer(duint* Pointer, bool vistaPlus)
|
|||
{
|
||||
// Decode a pointer that has been encoded with a special "process cookie"
|
||||
// http://doxygen.reactos.org/dd/dc6/lib_2rtl_2process_8c_ad52c0f8f48ce65475a02a5c334b3e959.html
|
||||
typedef NTSTATUS(NTAPI * pfnNtQueryInformationProcess)(
|
||||
IN HANDLE ProcessHandle,
|
||||
IN LONG ProcessInformationClass,
|
||||
OUT PVOID ProcessInformation,
|
||||
IN ULONG ProcessInformationLength,
|
||||
OUT PULONG ReturnLength
|
||||
);
|
||||
|
||||
static auto NtQIP = (pfnNtQueryInformationProcess)GetProcAddress(GetModuleHandleW(L"ntdll.dll"), "NtQueryInformationProcess");
|
||||
|
||||
// Verify
|
||||
if(!NtQIP || !Pointer)
|
||||
if(!Pointer)
|
||||
return false;
|
||||
|
||||
// Query the kernel for XOR key
|
||||
ULONG cookie;
|
||||
|
||||
if(NtQIP(fdProcessInfo->hProcess, /* ProcessCookie */36, &cookie, sizeof(ULONG), nullptr) < 0)
|
||||
if(!NT_SUCCESS(NtQueryInformationProcess(fdProcessInfo->hProcess, ProcessCookie, &cookie, sizeof(ULONG), nullptr)))
|
||||
{
|
||||
if(!fallbackCookie)
|
||||
return false;
|
||||
|
|
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
|
@ -7,7 +7,7 @@
|
|||
#include "thread.h"
|
||||
#include "memory.h"
|
||||
#include "threading.h"
|
||||
#include "undocumented.h"
|
||||
#include "ntdll/ntdll.h"
|
||||
#include "debugger.h"
|
||||
|
||||
static std::unordered_map<DWORD, THREADINFO> threadList;
|
||||
|
@ -173,7 +173,7 @@ bool ThreadIsValid(DWORD ThreadId)
|
|||
bool ThreadGetTib(duint TEBAddress, NT_TIB* Tib)
|
||||
{
|
||||
// Calculate offset from structure member
|
||||
TEBAddress += offsetof(TEB, Tib);
|
||||
TEBAddress += offsetof(TEB, NtTib);
|
||||
|
||||
memset(Tib, 0, sizeof(NT_TIB));
|
||||
return MemReadUnsafe(TEBAddress, Tib, sizeof(NT_TIB));
|
||||
|
@ -347,15 +347,6 @@ ULONG64 ThreadQueryCycleTime(HANDLE hThread)
|
|||
|
||||
void ThreadUpdateWaitReasons()
|
||||
{
|
||||
typedef NTSTATUS(NTAPI * NTQUERYSYSTEMINFORMATION)(
|
||||
/*SYSTEM_INFORMATION_CLASS*/ ULONG SystemInformationClass,
|
||||
PVOID SystemInformation,
|
||||
ULONG SystemInformationLength,
|
||||
PULONG ReturnLength);
|
||||
static auto NtQuerySystemInformation = (NTQUERYSYSTEMINFORMATION)GetProcAddress(GetModuleHandleW(L"ntdll.dll"), "NtQuerySystemInformation");
|
||||
if(NtQuerySystemInformation == NULL)
|
||||
return;
|
||||
|
||||
ULONG size;
|
||||
if(NtQuerySystemInformation(SystemProcessInformation, NULL, 0, &size) != STATUS_INFO_LENGTH_MISMATCH)
|
||||
return;
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
#define _THREAD_H
|
||||
|
||||
#include "_global.h"
|
||||
#include "undocumented.h"
|
||||
#include "ntdll/ntdll.h"
|
||||
|
||||
void ThreadCreate(CREATE_THREAD_DEBUG_INFO* CreateThread);
|
||||
void ThreadExit(DWORD ThreadId);
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
#include <ntstatus.h>
|
||||
#include "threading.h"
|
||||
|
||||
static HANDLE waitArray[WAITID_LAST];
|
||||
|
|
|
@ -1,301 +0,0 @@
|
|||
#ifndef _UNDOCUMENTED_H
|
||||
#define _UNDOCUMENTED_H
|
||||
|
||||
#include <windows.h>
|
||||
|
||||
//Thanks to: https://github.com/zer0fl4g/Nanomite
|
||||
|
||||
typedef LONG NTSTATUS;
|
||||
#define NT_SUCCESS(Status) ((NTSTATUS)(Status) >= 0)
|
||||
#define STATUS_INFO_LENGTH_MISMATCH 0xC0000004
|
||||
|
||||
typedef struct _UNICODE_STRING
|
||||
{
|
||||
USHORT Length;
|
||||
USHORT MaximumLength;
|
||||
PWSTR Buffer;
|
||||
} UNICODE_STRING;
|
||||
|
||||
typedef struct _CLIENT_ID
|
||||
{
|
||||
HANDLE UniqueProcess;
|
||||
HANDLE UniqueThread;
|
||||
} CLIENT_ID;
|
||||
|
||||
typedef struct _RTL_USER_PROCESS_PARAMETERS
|
||||
{
|
||||
BYTE Reserved1[16];
|
||||
PVOID Reserved2[10];
|
||||
UNICODE_STRING ImagePathName;
|
||||
UNICODE_STRING CommandLine;
|
||||
} RTL_USER_PROCESS_PARAMETERS, *PRTL_USER_PROCESS_PARAMETERS;
|
||||
|
||||
#pragma pack(push)
|
||||
#pragma pack(1)
|
||||
template <class T>
|
||||
struct LIST_ENTRY_T
|
||||
{
|
||||
T Flink;
|
||||
T Blink;
|
||||
};
|
||||
|
||||
template <class T>
|
||||
struct UNICODE_STRING_T
|
||||
{
|
||||
union
|
||||
{
|
||||
struct
|
||||
{
|
||||
WORD Length;
|
||||
WORD MaximumLength;
|
||||
};
|
||||
T dummy;
|
||||
};
|
||||
T _Buffer;
|
||||
};
|
||||
template <class T, class NGF, int A>
|
||||
struct _PEB_T
|
||||
{
|
||||
union
|
||||
{
|
||||
struct
|
||||
{
|
||||
BYTE InheritedAddressSpace;
|
||||
BYTE ReadImageFileExecOptions;
|
||||
BYTE BeingDebugged;
|
||||
BYTE BitField;
|
||||
};
|
||||
T dummy01;
|
||||
};
|
||||
T Mutant;
|
||||
T ImageBaseAddress;
|
||||
T Ldr;
|
||||
T ProcessParameters;
|
||||
T SubSystemData;
|
||||
T ProcessHeap;
|
||||
T FastPebLock;
|
||||
T AtlThunkSListPtr;
|
||||
T IFEOKey;
|
||||
T CrossProcessFlags;
|
||||
T UserSharedInfoPtr;
|
||||
DWORD SystemReserved;
|
||||
DWORD AtlThunkSListPtr32;
|
||||
T ApiSetMap;
|
||||
T TlsExpansionCounter;
|
||||
T TlsBitmap;
|
||||
DWORD TlsBitmapBits[2];
|
||||
T ReadOnlySharedMemoryBase;
|
||||
T HotpatchInformation;
|
||||
T ReadOnlyStaticServerData;
|
||||
T AnsiCodePageData;
|
||||
T OemCodePageData;
|
||||
T UnicodeCaseTableData;
|
||||
DWORD NumberOfProcessors;
|
||||
union
|
||||
{
|
||||
DWORD NtGlobalFlag;
|
||||
NGF dummy02;
|
||||
};
|
||||
LARGE_INTEGER CriticalSectionTimeout;
|
||||
T HeapSegmentReserve;
|
||||
T HeapSegmentCommit;
|
||||
T HeapDeCommitTotalFreeThreshold;
|
||||
T HeapDeCommitFreeBlockThreshold;
|
||||
DWORD NumberOfHeaps;
|
||||
DWORD MaximumNumberOfHeaps;
|
||||
T ProcessHeaps;
|
||||
T GdiSharedHandleTable;
|
||||
T ProcessStarterHelper;
|
||||
T GdiDCAttributeList;
|
||||
T LoaderLock;
|
||||
DWORD OSMajorVersion;
|
||||
DWORD OSMinorVersion;
|
||||
WORD OSBuildNumber;
|
||||
WORD OSCSDVersion;
|
||||
DWORD OSPlatformId;
|
||||
DWORD ImageSubsystem;
|
||||
DWORD ImageSubsystemMajorVersion;
|
||||
T ImageSubsystemMinorVersion;
|
||||
T ActiveProcessAffinityMask;
|
||||
T GdiHandleBuffer[A];
|
||||
T PostProcessInitRoutine;
|
||||
T TlsExpansionBitmap;
|
||||
DWORD TlsExpansionBitmapBits[32];
|
||||
T SessionId;
|
||||
ULARGE_INTEGER AppCompatFlags;
|
||||
ULARGE_INTEGER AppCompatFlagsUser;
|
||||
T pShimData;
|
||||
T AppCompatInfo;
|
||||
UNICODE_STRING_T<T> CSDVersion;
|
||||
T ActivationContextData;
|
||||
T ProcessAssemblyStorageMap;
|
||||
T SystemDefaultActivationContextData;
|
||||
T SystemAssemblyStorageMap;
|
||||
T MinimumStackCommit;
|
||||
T FlsCallback;
|
||||
LIST_ENTRY_T<T> FlsListHead;
|
||||
T FlsBitmap;
|
||||
DWORD FlsBitmapBits[4];
|
||||
T FlsHighIndex;
|
||||
T WerRegistrationData;
|
||||
T WerShipAssertPtr;
|
||||
T pContextData;
|
||||
T pImageHeaderHash;
|
||||
T TracingFlags;
|
||||
};
|
||||
|
||||
typedef _PEB_T<DWORD, DWORD64, 34> PEB32;
|
||||
typedef _PEB_T<DWORD64, DWORD, 30> PEB64;
|
||||
|
||||
#pragma pack(pop)
|
||||
|
||||
#ifdef _WIN64 //x64
|
||||
typedef PEB64 PEB;
|
||||
#else //x86
|
||||
typedef PEB32 PEB;
|
||||
#endif //_WIN64
|
||||
|
||||
typedef PEB* PPEB;
|
||||
|
||||
typedef struct _TEB
|
||||
{
|
||||
NT_TIB Tib;
|
||||
PVOID EnvironmentPointer;
|
||||
CLIENT_ID Cid;
|
||||
PVOID ActiveRpcInfo;
|
||||
PVOID ThreadLocalStoragePointer;
|
||||
PPEB Peb;
|
||||
ULONG LastErrorValue;
|
||||
ULONG CountOfOwnedCriticalSections;
|
||||
PVOID CsrClientThread;
|
||||
PVOID Win32ThreadInfo;
|
||||
ULONG Win32ClientInfo[0x1F];
|
||||
PVOID WOW32Reserved;
|
||||
ULONG CurrentLocale;
|
||||
ULONG FpSoftwareStatusRegister;
|
||||
PVOID SystemReserved1[0x36];
|
||||
PVOID Spare1;
|
||||
ULONG ExceptionCode;
|
||||
ULONG SpareBytes1[0x28];
|
||||
PVOID SystemReserved2[0xA];
|
||||
ULONG GdiRgn;
|
||||
ULONG GdiPen;
|
||||
ULONG GdiBrush;
|
||||
CLIENT_ID RealClientId;
|
||||
PVOID GdiCachedProcessHandle;
|
||||
ULONG GdiClientPID;
|
||||
ULONG GdiClientTID;
|
||||
PVOID GdiThreadLocaleInfo;
|
||||
PVOID UserReserved[5];
|
||||
PVOID GlDispatchTable[0x118];
|
||||
ULONG GlReserved1[0x1A];
|
||||
PVOID GlReserved2;
|
||||
PVOID GlSectionInfo;
|
||||
PVOID GlSection;
|
||||
PVOID GlTable;
|
||||
PVOID GlCurrentRC;
|
||||
PVOID GlContext;
|
||||
NTSTATUS LastStatusValue;
|
||||
UNICODE_STRING StaticUnicodeString;
|
||||
WCHAR StaticUnicodeBuffer[0x105];
|
||||
PVOID DeallocationStack;
|
||||
PVOID TlsSlots[0x40];
|
||||
LIST_ENTRY TlsLinks;
|
||||
PVOID Vdm;
|
||||
PVOID ReservedForNtRpc;
|
||||
PVOID DbgSsReserved[0x2];
|
||||
ULONG HardErrorDisabled;
|
||||
PVOID Instrumentation[0x10];
|
||||
PVOID WinSockData;
|
||||
ULONG GdiBatchCount;
|
||||
ULONG Spare2;
|
||||
ULONG Spare3;
|
||||
ULONG Spare4;
|
||||
PVOID ReservedForOle;
|
||||
ULONG WaitingOnLoaderLock;
|
||||
PVOID StackCommit;
|
||||
PVOID StackCommitMax;
|
||||
PVOID StackReserved;
|
||||
} TEB, *PTEB;
|
||||
|
||||
// https://stackoverflow.com/questions/36961152/detect-windows-kit-8-0-and-windows-kit-8-1-sdks
|
||||
#if defined(WINAPI_PARTITION_APP)
|
||||
#if (WINAPI_PARTITION_APP == 0x00000002)
|
||||
#define USING_WINDOWS_8_0_SDK
|
||||
#define USING_WINDOWS_8_x_SDK
|
||||
#endif
|
||||
#if defined(WINAPI_FAMILY_SYSTEM)
|
||||
#define USING_WINDOWS_10_SDK
|
||||
#else
|
||||
#if (WINAPI_PARTITION_APP == 1)
|
||||
#define USING_WINDOWS_8_1_SDK
|
||||
#define USING_WINDOWS_8_x_SDK
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// This struct was included in winnt.h starting in the windows 8 toolkit
|
||||
#if !(defined(USING_WINDOWS_8_x_SDK) || defined(USING_WINDOWS_10_SDK))
|
||||
typedef struct _EXCEPTION_REGISTRATION_RECORD
|
||||
{
|
||||
_EXCEPTION_REGISTRATION_RECORD* Next;
|
||||
_EXCEPTION_DISPOSITION Handler;
|
||||
} EXCEPTION_REGISTRATION_RECORD, *PEXCEPTION_REGISTRATION_RECORD;
|
||||
#endif
|
||||
|
||||
typedef struct _SYSTEM_THREAD_INFORMATION
|
||||
{
|
||||
LARGE_INTEGER KernelTime;
|
||||
LARGE_INTEGER UserTime;
|
||||
LARGE_INTEGER CreateTime;
|
||||
ULONG WaitTime;
|
||||
PVOID StartAddress;
|
||||
CLIENT_ID ClientId;
|
||||
LONG Priority;
|
||||
LONG BasePriority;
|
||||
ULONG ContextSwitches;
|
||||
ULONG ThreadState;
|
||||
ULONG WaitReason;
|
||||
} SYSTEM_THREAD_INFORMATION, *PSYSTEM_THREAD_INFORMATION;
|
||||
|
||||
typedef struct _SYSTEM_PROCESS_INFORMATION
|
||||
{
|
||||
ULONG NextEntryOffset;
|
||||
ULONG NumberOfThreads;
|
||||
LARGE_INTEGER SpareLi1;
|
||||
LARGE_INTEGER SpareLi2;
|
||||
LARGE_INTEGER SpareLi3;
|
||||
LARGE_INTEGER CreateTime;
|
||||
LARGE_INTEGER UserTime;
|
||||
LARGE_INTEGER KernelTime;
|
||||
UNICODE_STRING ImageName;
|
||||
LONG BasePriority;
|
||||
HANDLE UniqueProcessId;
|
||||
HANDLE InheritedFromUniqueProcessId;
|
||||
ULONG HandleCount;
|
||||
ULONG SessionId;
|
||||
ULONG_PTR PageDirectoryBase;
|
||||
SIZE_T PeakVirtualSize;
|
||||
SIZE_T VirtualSize;
|
||||
ULONG PageFaultCount;
|
||||
SIZE_T PeakWorkingSetSize;
|
||||
SIZE_T WorkingSetSize;
|
||||
SIZE_T QuotaPeakPagedPoolUsage;
|
||||
SIZE_T QuotaPagedPoolUsage;
|
||||
SIZE_T QuotaPeakNonPagedPoolUsage;
|
||||
SIZE_T QuotaNonPagedPoolUsage;
|
||||
SIZE_T PagefileUsage;
|
||||
SIZE_T PeakPagefileUsage;
|
||||
SIZE_T PrivatePageCount;
|
||||
LARGE_INTEGER ReadOperationCount;
|
||||
LARGE_INTEGER WriteOperationCount;
|
||||
LARGE_INTEGER OtherOperationCount;
|
||||
LARGE_INTEGER ReadTransferCount;
|
||||
LARGE_INTEGER WriteTransferCount;
|
||||
LARGE_INTEGER OtherTransferCount;
|
||||
SYSTEM_THREAD_INFORMATION Threads[1];
|
||||
} SYSTEM_PROCESS_INFORMATION, *PSYSTEM_PROCESS_INFORMATION;
|
||||
|
||||
#define SystemProcessInformation 5 // For use with NtQuerySystemInformation
|
||||
|
||||
#endif // _UNDOCUMENTED_H
|
|
@ -251,7 +251,7 @@
|
|||
<ClInclude Include="thread.h" />
|
||||
<ClInclude Include="threading.h" />
|
||||
<ClInclude Include="TitanEngine\TitanEngine.h" />
|
||||
<ClInclude Include="undocumented.h" />
|
||||
<ClInclude Include="ntdll\ntdll.h" />
|
||||
<ClInclude Include="value.h" />
|
||||
<ClInclude Include="variable.h" />
|
||||
<ClInclude Include="x64dbg.h" />
|
||||
|
@ -416,7 +416,7 @@
|
|||
<SubSystem>Windows</SubSystem>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<AdditionalDependencies>keystone\keystone_x86.lib;$(ProjectDir)..\capstone_wrapper\bin\x32\capstone_wrapper.lib;$(ProjectDir)..\capstone_wrapper\capstone\capstone_x86.lib;yara\yara_x86.lib;lz4\lz4_x86.lib;jansson\jansson_x86.lib;DeviceNameResolver\DeviceNameResolver_x86.lib;XEDParse\XEDParse_x86.lib;$(SolutionDir)bin\x32\x32bridge.lib;dbghelp\dbghelp_x86.lib;TitanEngine\TitanEngine_x86.lib;ws2_32.lib;psapi.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>ntdll\ntdll_x86.lib;keystone\keystone_x86.lib;$(ProjectDir)..\capstone_wrapper\bin\x32\capstone_wrapper.lib;$(ProjectDir)..\capstone_wrapper\capstone\capstone_x86.lib;yara\yara_x86.lib;lz4\lz4_x86.lib;jansson\jansson_x86.lib;DeviceNameResolver\DeviceNameResolver_x86.lib;XEDParse\XEDParse_x86.lib;$(SolutionDir)bin\x32\x32bridge.lib;dbghelp\dbghelp_x86.lib;TitanEngine\TitanEngine_x86.lib;ws2_32.lib;psapi.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
|
@ -437,7 +437,7 @@
|
|||
<SubSystem>Windows</SubSystem>
|
||||
<EnableCOMDATFolding>false</EnableCOMDATFolding>
|
||||
<OptimizeReferences>false</OptimizeReferences>
|
||||
<AdditionalDependencies>keystone\keystone_x86.lib;$(ProjectDir)..\capstone_wrapper\bin\x32d\capstone_wrapper.lib;$(ProjectDir)..\capstone_wrapper\capstone\capstone_x86.lib;yara\yara_x86.lib;lz4\lz4_x86.lib;jansson\jansson_x86.lib;DeviceNameResolver\DeviceNameResolver_x86.lib;XEDParse\XEDParse_x86.lib;$(SolutionDir)bin\x32d\x32bridge.lib;dbghelp\dbghelp_x86.lib;TitanEngine\TitanEngine_x86.lib;ws2_32.lib;psapi.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>ntdll\ntdll_x86.lib;keystone\keystone_x86.lib;$(ProjectDir)..\capstone_wrapper\bin\x32d\capstone_wrapper.lib;$(ProjectDir)..\capstone_wrapper\capstone\capstone_x86.lib;yara\yara_x86.lib;lz4\lz4_x86.lib;jansson\jansson_x86.lib;DeviceNameResolver\DeviceNameResolver_x86.lib;XEDParse\XEDParse_x86.lib;$(SolutionDir)bin\x32d\x32bridge.lib;dbghelp\dbghelp_x86.lib;TitanEngine\TitanEngine_x86.lib;ws2_32.lib;psapi.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
|
@ -464,7 +464,7 @@
|
|||
<SubSystem>Windows</SubSystem>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<AdditionalDependencies>keystone\keystone_x64.lib;$(ProjectDir)..\capstone_wrapper\bin\x64\capstone_wrapper.lib;$(ProjectDir)..\capstone_wrapper\capstone\capstone_x64.lib;yara\yara_x64.lib;lz4\lz4_x64.lib;jansson\jansson_x64.lib;DeviceNameResolver\DeviceNameResolver_x64.lib;XEDParse\XEDParse_x64.lib;$(SolutionDir)bin\x64\x64bridge.lib;dbghelp\dbghelp_x64.lib;TitanEngine\TitanEngine_x64.lib;ws2_32.lib;psapi.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>ntdll\ntdll_x64.lib;keystone\keystone_x64.lib;$(ProjectDir)..\capstone_wrapper\bin\x64\capstone_wrapper.lib;$(ProjectDir)..\capstone_wrapper\capstone\capstone_x64.lib;yara\yara_x64.lib;lz4\lz4_x64.lib;jansson\jansson_x64.lib;DeviceNameResolver\DeviceNameResolver_x64.lib;XEDParse\XEDParse_x64.lib;$(SolutionDir)bin\x64\x64bridge.lib;dbghelp\dbghelp_x64.lib;TitanEngine\TitanEngine_x64.lib;ws2_32.lib;psapi.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
|
@ -488,7 +488,7 @@
|
|||
<SubSystem>Windows</SubSystem>
|
||||
<EnableCOMDATFolding>false</EnableCOMDATFolding>
|
||||
<OptimizeReferences>false</OptimizeReferences>
|
||||
<AdditionalDependencies>keystone\keystone_x64.lib;$(ProjectDir)..\capstone_wrapper\bin\x64d\capstone_wrapper.lib;$(ProjectDir)..\capstone_wrapper\capstone\capstone_x64.lib;yara\yara_x64.lib;lz4\lz4_x64.lib;jansson\jansson_x64.lib;DeviceNameResolver\DeviceNameResolver_x64.lib;XEDParse\XEDParse_x64.lib;$(SolutionDir)bin\x64d\x64bridge.lib;dbghelp\dbghelp_x64.lib;TitanEngine\TitanEngine_x64.lib;ws2_32.lib;psapi.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>ntdll\ntdll_x64.lib;keystone\keystone_x64.lib;$(ProjectDir)..\capstone_wrapper\bin\x64d\capstone_wrapper.lib;$(ProjectDir)..\capstone_wrapper\capstone\capstone_x64.lib;yara\yara_x64.lib;lz4\lz4_x64.lib;jansson\jansson_x64.lib;DeviceNameResolver\DeviceNameResolver_x64.lib;XEDParse\XEDParse_x64.lib;$(SolutionDir)bin\x64d\x64bridge.lib;dbghelp\dbghelp_x64.lib;TitanEngine\TitanEngine_x64.lib;ws2_32.lib;psapi.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
|
|
|
@ -30,6 +30,9 @@
|
|||
<Filter Include="Header Files\Third Party">
|
||||
<UniqueIdentifier>{d2362bf7-ff20-493d-be01-0fb7e6dca8c9}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Header Files\Third Party\ntdll">
|
||||
<UniqueIdentifier>{aea02a5a-fad2-4cf4-a932-80c0d43f621e}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Header Files\Third Party\TitanEngine">
|
||||
<UniqueIdentifier>{23226861-3b20-42db-8dd6-c5d276ba7a83}</UniqueIdentifier>
|
||||
</Filter>
|
||||
|
@ -436,6 +439,9 @@
|
|||
<ClInclude Include="XEDParse\XEDParse.h">
|
||||
<Filter>Header Files\Third Party\XEDParse</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="ntdll\ntdll.h">
|
||||
<Filter>Header Files\Third Party\ntdll</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="TitanEngine\TitanEngine.h">
|
||||
<Filter>Header Files\Third Party\TitanEngine</Filter>
|
||||
</ClInclude>
|
||||
|
@ -526,9 +532,6 @@
|
|||
<ClInclude Include="handle.h">
|
||||
<Filter>Header Files\Utilities</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="undocumented.h">
|
||||
<Filter>Header Files\Debugger Core</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="stringutils.h">
|
||||
<Filter>Header Files\Utilities</Filter>
|
||||
</ClInclude>
|
||||
|
|
|
@ -363,7 +363,7 @@ HEADERS += \
|
|||
dbg/thread.h \
|
||||
dbg/threading.h \
|
||||
dbg/TraceRecord.h \
|
||||
dbg/undocumented.h \
|
||||
dbg/ntdll/ntdll.h \
|
||||
dbg/value.h \
|
||||
dbg/variable.h \
|
||||
dbg/watch.h \
|
||||
|
|
Loading…
Reference in New Issue