最近给0cchext添加了一个实用的逆向命令,dttoc,这个命令可以把dt命令输出的结构体转化为C的结构,方便我们做逆向还原工作。
0:000> !0cchext.dttoc nt!_peb struct _PEB { BYTE InheritedAddressSpace; BYTE ReadImageFileExecOptions; BYTE BeingDebugged; union { BYTE BitField; struct { BYTE ImageUsesLargePages:1; BYTE IsProtectedProcess:1; BYTE IsImageDynamicallyRelocated:1; BYTE SkipPatchingUser32Forwarders:1; BYTE IsPackagedProcess:1; BYTE IsAppContainer:1; BYTE IsProtectedProcessLight:1; BYTE IsLongPathAwareProcess:1; }; }; VOID* Mutant; VOID* ImageBaseAddress; _PEB_LDR_DATA* Ldr; _RTL_USER_PROCESS_PARAMETERS* ProcessParameters; VOID* SubSystemData; VOID* ProcessHeap; _RTL_CRITICAL_SECTION* FastPebLock; _SLIST_HEADER* AtlThunkSListPtr; VOID* IFEOKey; union { DWORD CrossProcessFlags; struct { DWORD ProcessInJob:1; DWORD ProcessInitializing:1; DWORD ProcessUsingVEH:1; DWORD ProcessUsingVCH:1; DWORD ProcessUsingFTH:1; DWORD ReservedBits0:27; }; }; union { VOID* KernelCallbackTable; VOID* UserSharedInfoPtr; }; DWORD SystemReserved[1]; _SLIST_HEADER* AtlThunkSListPtr32; VOID* ApiSetMap; DWORD TlsExpansionCounter; VOID* TlsBitmap; DWORD TlsBitmapBits[2]; VOID* ReadOnlySharedMemoryBase; VOID* SparePvoid0; VOID** ReadOnlyStaticServerData; VOID* AnsiCodePageData; VOID* OemCodePageData; VOID* UnicodeCaseTableData; DWORD NumberOfProcessors; DWORD NtGlobalFlag; _LARGE_INTEGER CriticalSectionTimeout; DWORD HeapSegmentReserve; DWORD HeapSegmentCommit; DWORD HeapDeCommitTotalFreeThreshold; DWORD HeapDeCommitFreeBlockThreshold; DWORD NumberOfHeaps; DWORD MaximumNumberOfHeaps; VOID** ProcessHeaps; VOID* GdiSharedHandleTable; VOID* ProcessStarterHelper; DWORD GdiDCAttributeList; _RTL_CRITICAL_SECTION* LoaderLock; DWORD OSMajorVersion; DWORD OSMinorVersion; WORD OSBuildNumber; WORD OSCSDVersion; DWORD OSPlatformId; DWORD ImageSubsystem; DWORD ImageSubsystemMajorVersion; DWORD ImageSubsystemMinorVersion; DWORD ActiveProcessAffinityMask; DWORD GdiHandleBuffer[34]; void* PostProcessInitRoutine; VOID* TlsExpansionBitmap; DWORD TlsExpansionBitmapBits[32]; DWORD SessionId; _ULARGE_INTEGER AppCompatFlags; _ULARGE_INTEGER AppCompatFlagsUser; VOID* pShimData; VOID* AppCompatInfo; _UNICODE_STRING CSDVersion; _ACTIVATION_CONTEXT_DATA* ActivationContextData; _ASSEMBLY_STORAGE_MAP* ProcessAssemblyStorageMap; _ACTIVATION_CONTEXT_DATA* SystemDefaultActivationContextData; _ASSEMBLY_STORAGE_MAP* SystemAssemblyStorageMap; DWORD MinimumStackCommit; _FLS_CALLBACK_INFO* FlsCallback; _LIST_ENTRY FlsListHead; VOID* FlsBitmap; DWORD FlsBitmapBits[4]; DWORD FlsHighIndex; VOID* WerRegistrationData; VOID* WerShipAssertPtr; VOID* pUnused; VOID* pImageHeaderHash; union { DWORD TracingFlags; struct { QWORD HeapTracingEnabled:1; QWORD CritSecTracingEnabled:1; QWORD LibLoaderTracingEnabled:1; QWORD SpareTracingBits:29; }; }; QWORD CsrServerReadOnlySharedMemoryBase; DWORD TppWorkerpListLock; _LIST_ENTRY TppWorkerpList; VOID* WaitOnAddressHashTable[128]; };
|