当我用IDA分析二进制文件时,我看到了以下函数:
Function::Function(void *, unsigned int, void *, unsigned int)
因此,正如您所看到的,IDA显示我们有4个参数。但在此之下,在摘要视图中,IDA显示我们有5个参数。在下面你可以看到IDA的摘要视图,其中通常显示参数和局部变量(在这种情况下,我们没有局部变量。):
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_8 = dword ptr 10h
arg_C = dword ptr 14h
arg_10 = dword ptr 18h
所以,我在问:为什么会这样?这是IDA的错吗?或者,arg_10是一个全局变量而不是传递给该函数的参数吗?
我的假设是IDA无法解析第五个参数的类型,因此它在函数声明中将其保留。
答案 0 :(得分:2)
调用对象的方法时,指向该对象的指针将作为参数隐式传递给该函数。 (这是this
关键字代表的内容)
arg_0
很可能是this
指针。