我尝试使用.NET Reflector反转C#程序集。我在外部函数func
中进行了求解,它被声明为:
[SuppressUnmanagedCodeSecurity]
public class Class
{
...
[DllImport("extern.dll")]
public static extern uint func(IntPtr a, ulong b, int c, int d, int e);
...
}
所以我用IDA打开了extern.dll
并搜索了函数func
。反编译看起来像这样:
int __fastcall func(__int64 a1, __int64 a2, unsigned int a3) {...}
在C#代码中,使用5个参数调用该函数:
uint ret = Class.func(this.a, b, this.c, this.d, e);
在C#程序集中有5个参数,在外部dll中只有3个参数。所以我的问题是这如何运作? 我完全不知道5个参数如何映射到3个。
我希望有人可以帮助我,这样我就可以继续扭转外部dll。
提前致谢并提出最好的问候
马库斯
答案 0 :(得分:0)
所以我查看了func
的程序集,注意到函数只使用了3个参数。这就是为什么IDA只承认3个参数。
为了验证这一点,我写了一个带有5个参数的小函数,它仅使用前3个参数。然后我用5个参数调用该函数。我反编译它,结果是一样的:IDA只识别3个参数。