首页
社区
课程
招聘
[求助]一个实参被改变的奇怪问题
发表于: 2013-11-1 16:30 4406

[求助]一个实参被改变的奇怪问题

2013-11-1 16:30
4406
#include "windows.h"

BOOL func1(LPCSTR a, DWORD b, INT c, INT d, INT e, DWORD f, DWORD g, LPCSTR h, LPCSTR i, INT j)
{
	printf("g=%d\n",g);
	/*return 前还有一些其它的代码*/
	return TRUE;
}

int main(int argc,char **argv)
{
	func1("", 1, 2, 3, 4, 5, 0, "0.0.0.0", "1.1.1.1", 10000);
	return 0;
}


在我的一个项目中,有一个函数有10个参数,倒数第4个参数传入0,可是函数收到的是-1,函数原型与以上相同,通过反汇编查看到编译器生成的压栈代码正常,请帮忙看看是什么问题。

编译环境:win7 x64 sp1 + vc2003 sp1
运行环境:windows 2003 r2 sp2

[课程]Linux pwn 探索篇!

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 25
活跃值: (28)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
不是-1是0xffffffff吧,楼主能不能把代码贴全啊……
2013-11-1 17:26
0
雪    币: 47
活跃值: (34)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
对,是0xffffffff。
2013-11-1 17:33
0
雪    币: 185
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
上面的代码没有问题。 我试了。也单步跟了。

可能是你DWORD、INT宏定义冲突了

上传的附件:
2013-11-1 17:42
0
雪    币: 112
活跃值: (57)
能力值: ( LV12,RANK:200 )
在线值:
发帖
回帖
粉丝
5
LZ将出错的Demo传上来,让大家看看。
你帖的代码运行正常


#include "windows.h"
#include <stdio.h>

BOOL func1(LPCSTR a, DWORD b, INT c, INT d, INT e, DWORD f, DWORD g, LPCSTR h, LPCSTR i, INT j)
{
printf("g=%d\n",g);
/*return 前还有一些其它的代码*/
return TRUE;
}

int main(int argc,char **argv)
{
func1("", 1, 2, 3, 4, 5, 0, "0.0.0.0", "1.1.1.1", 10000);

/** run results
g=0
*/
getchar();
return 0;
}
2013-11-1 17:48
0
雪    币: 238
活跃值: (55)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
6
用vc调试一下,不要再浪费时间
2013-11-1 18:41
0
雪    币: 441
活跃值: (149)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
7
调用时,在所有实参前,强制加类型转换试试。
2013-11-1 19:06
0
游客
登录 | 注册 方可回帖
返回
//