Dailydave mailing list archives
How to get heap head structure?
From: "Lei Zhao" <as2001o2004 () gmail com>
Date: Fri, 16 Jun 2006 10:22:06 +0800
Hi guys, Here is the heap head structure. ================================================== struct _XP2600_2180_HEAP /* sizeof 00000588 1416 */ { /* off 0x00000000 */ struct _XP2600_2180_HEAP_ENTRY Entry; /* off 0x00000008 */ unsigned long Signature; /* off 0x0000000C */ unsigned long Flags; /* off 0x00000010 */ unsigned long ForceFlags; /* off 0x00000014 */ unsigned long VirtualMemoryThreshold; /* off 0x00000018 */ unsigned long SegmentReserve; /* off 0x0000001C */ unsigned long SegmentCommit; /* off 0x00000020 */ unsigned long DeCommitFreeBlockThreshold; /* off 0x00000024 */ unsigned long DeCommitTotalFreeThreshold; /* off 0x00000028 */ unsigned long TotalFreeSize; /* off 0x0000002C */ unsigned long MaximumAllocationSize; /* off 0x00000030 */ unsigned short ProcessHeapsListIndex; /* off 0x00000032 */ unsigned short HeaderValidateLength; /* off 0x00000034 */ void* HeaderValidateCopy; /* off 0x00000038 */ unsigned short NextAvailableTagIndex; /* off 0x0000003A */ unsigned short MaximumTagIndex; /* off 0x0000003C */ struct _XP2600_2180_HEAP_TAG_ENTRY* TagEntries; /* off 0x00000040 */ struct _XP2600_2180_HEAP_UCR_SEGMENT* UCRSegments; /* off 0x00000044 */ struct _XP2600_2180_HEAP_UNCOMMMTTED_RANGE* UnusedUnCommittedRanges; /* off 0x00000048 */ unsigned long AlignRound; /* off 0x0000004C */ unsigned long AlignMask; /* off 0x00000050 */ struct _XP2600_2180_LIST_ENTRY VirtualAllocdBlocks; /* off 0x00000058 */ struct _XP2600_2180_HEAP_SEGMENT* Segments[64]; /* off 0x00000158 */ union _XP2600_2180__unnamed_0000026A u; /* off 0x00000168 */ union _XP2600_2180__unnamed_0000026B u2; /* off 0x0000016A */ unsigned short AllocatorBackTraceIndex; /* off 0x0000016C */ unsigned long NonDedicatedListLength; /* off 0x00000170 */ void* LargeBlocksIndex; /* off 0x00000174 */ struct _XP2600_2180_HEAP_PSEUDO_TAG_ENTRY* PseudoTagEntries; /* off 0x00000178 */ struct _XP2600_2180_LIST_ENTRY FreeLists[128]; /* off 0x00000578 */ struct _XP2600_2180_HEAP_LOCK* LockVariable; /* off 0x0000057C */ long( __stdcall *CommitRoutine)(void*,void**,unsigned long*); /* off 0x00000580 */ void* FrontEndHeap; /* off 0x00000584 */ unsigned short FrontHeapLockCount; /* off 0x00000586 */ unsigned char FrontEndHeapType; /* off 0x00000587 */ unsigned char LastSegmentIndex; }; ============================================================ Who knows how to get the pointer to this structure? In normal heap overflow, we usually use the 8 byte _XP2600_2180_HEAP_ENTRY structure. But it semms that there is no way to get the _XP2600_2180_HEAP structure. I have traced PEB structure, but the "processheap"pointer doesn't point to this structure. Thanks a lot & Regards as2001o2004
_______________________________________________ Dailydave mailing list Dailydave () lists immunitysec com http://lists.immunitysec.com/mailman/listinfo/dailydave
Current thread:
- How to get heap head structure? Lei Zhao (Jun 15)