C# DllImport - 参数数量不匹配
C# DllImport - number of parameters doesn't match
我尝试使用 .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。
在此先致谢并致以最诚挚的问候
马库斯
所以我查看了 func
的程序集,发现该函数只使用了 3 个参数。这就是 IDA 只识别 3 个参数的原因。
为了验证这一点,我写了一个带有 5 个参数的小函数,它只使用前 3 个参数。然后我用 5 个参数调用该函数。我反编译了一下,结果是一样的:IDA只识别了3个参数
我尝试使用 .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。
在此先致谢并致以最诚挚的问候
马库斯
所以我查看了 func
的程序集,发现该函数只使用了 3 个参数。这就是 IDA 只识别 3 个参数的原因。
为了验证这一点,我写了一个带有 5 个参数的小函数,它只使用前 3 个参数。然后我用 5 个参数调用该函数。我反编译了一下,结果是一样的:IDA只识别了3个参数