我一直在老版本的c ++ mfc42应用程序上用雪人反编译器练习反编译。我很难理解循环中的这两行。
似乎正在将一个void对象添加到一个整数。然后乘以4。
有人能大致告诉我这两行中发生了什么吗?而考虑到MYOBJECT只是一个空值,这是什么条件?
我已经排除了易于理解的部分,以减少头痛!
while (!*reinterpret_cast<void>(MYOBJECT + 60) &&
*reinterpret_cast<void>(MYOBJECT + 8) != NULL) {
MYOBJECT_HANDLE = *reinterpret_cast<void>(MYOBJECT + 16);
MYOBJECT_HANDLE_PTR_1 =
*reinterpret_cast<void>(*reinterpret_cast<void>(MYOBJECT + 24) +
reinterpret_cast<unsigned char>(*reinterpret_cast<void>(MYOBJECT + 96)) * 4);
}
这不是有效的C ++代码,因此它实际上没有做任何事情。
但是,如果这是一些输出破损代码的自动化工具的输出,我的猜测是,它们是某些对象(即某些字段)的偏移量。
没有更多信息,就无法解释它在做什么。