我在 IDA v7 中打开了一个 DLL。在一个子程序中,有一个PathAllocCombine()函数。伪代码在其中显示了六个参数。但是文档显示有四个参数,即PathAllocCombine(PCWSTR, PCWSTR, unsigned long, PWSTR);
伪代码如下:
_QWORD *__fastcall sub_180040994(_QWORD *a1, __int64 a2, __int64 a3)
{
_QWORD *v3; // rbx
signed int v4; // ST20_4
unsigned int v5; // eax
void *retaddr; // [rsp+38h] [rbp+0h]
v3 = a1;
v4 = 1;
*a1 = 0i64;
v5 = PathAllocCombine(a2, a3, 1i64, a1, v4, -2i64);
if ( (v5 & 0x80000000) != 0 )
{
sub_18000A7A4(retaddr, 106i64, "unknown.cpp", v5);
JUMPOUT(*(_QWORD *)&byte_1800409F9);
}
return v3;
}
这是该子程序的图形视图(删除了条件跳转):
那么,这是 IDA 的内部错误吗?还是我做错了什么?
