Some codes in IDA are not clear enough. Especially when they do reference after calculation
while ( dx33[rdi24] );
if ( rax35 != &WPP_GLOBAL_Control && (*((_BYTE *)rax35 + 68) & 2) != 0 && *((_BYTE *)rax35 + 65) >= 4u )
{
WPP_SF_sd(
(unsigned int)rax35[7],
22,
(unsigned int)&WPP_b7e02e4f98cc3b1bbc566e561d210229_Traceguids,
(_DWORD)dx33,
rdi24 - 1);
dx33 = Str;
}
if ( (_DWORD)rdi24 != 1 && dx33[(int)rdi24 - 1] == 46 && dx33[(int)rdi24 - 2] == 46 )
{
dx33[(int)rdi24 - 1] = 0;
dx33 = Str;
}
For some parts like
(*((_BYTE *)rax35 + 68) & 2)
Can I change it to a more human-readable form? I remember changing the function argument type like int a1 to JNIEnv* can make the pointer reference more readable because it recovers some JNI function names so that
...(_DWORD)(a1+312)(a1,v9)
will become something like
->func(a1,v9)
But I'm not sure how to do this for other types.
if
condition. I am almost certain that this is pretty much some idiomatic way of how the respective WPP macros get expanded. The GUIDs will vary across different pieces of software (or even within a single software). I.e. this would be a piece you don't want to reverse engineer normally. Is this KM or UM?