Sometimes when I am figuring out a struct in IDA, there will be a really big offset and IDA will decide the struct is an array.
Consider this from ALPC:
if ( (_Message[1].u1.Length & 0x200) != 0 && (PortObject->MainQueueLength & 0x2000) != 0 )
{
v46 = _InterlockedCompareExchange64((volatile signed __int64 *)&PortObject[1], (signed __int64)_Message, 0i64);
_Message = (_PORT_MESSAGE64 *)Message;
I appear to have the struct offsets wrong for port object. It thinks that portobject is an array because it sees an offset off the end of the struct I defined. PortObject is definitely an object best interpreted as a struct - zero chance it's an array.
How can I make hexrays show the offset in the format of PortObject+0xsomeoffset rather than defaulting to the annoying array notation? It makes it much easier to flip back and forth and figure out what's wrong if things aren't being displayed as an array.
int
instead of things likevoid*
(which hides the cast). This seems to result in displaying the offset, but is likely a terrible idea.