-
-
[求助]hook api 调用约定出错
-
发表于:
2009-9-6 14:58
3990
-
我想hook一个存在与dll中的函数 函数的导出类型为(ida):
.text:10001630 ; void __cdecl ZNet2::DWordDecode(unsigned char *, int, __int64 &)
.text:10001630 public ?DWordDecode@ZNet2@@YAXPAEHAA_J@Z
我在VC中 声明 :
class ZNet2
{
public:
void __cdecl ZNet2::DWordDecode(unsigned char *, int, __int64 &);
ZNet2();
virtual ~ZNet2();
};
调用:
编译时提示:
unresolved external symbol "public: void __cdecl ZNet2::DWordDecode(unsigned char *,int,__int64 &)" ()
发现编译的类型与导出的类型不同
?DWordDecode@ZNet2@@YAXPAEHAA_J@Z
?DWordDecode@ZNet2@@QAAXPAEHAA_J@Z
查看相关资料__cdecl调用约定:
1、以“?”标识函数名的开始,后跟函数名;
2、函数名后面以“@@YA”标识参数表的开始,后跟参数表;
3、参数表以代号表示:
X--void ,
D--char,
E--unsigned char,
F--short,
H--int,
I--unsigned int,
J--long,
K--unsigned long,
M--float,
N--double,
_N--bool,
PA--表示指针,后面的代号表明指针类型,如果相同类型的指针连续出现,以“0”代替,一个“0”代表一次重复;
4、参数表的第一项为该函数的返回值类型,其后依次为参数的数据类型,指针标识在其所指数据类型前;
5、参数表后以“@Z”标识整个名字的结束,如果该函数无参数,则以“Z”标识结束
不知道在vc中怎样修改才可以通过 ?希望各位大侠指点一二,不胜感激
[课程]Android-CTF解题方法汇总!