PsGetCurrentProcess调用时出错请高帮忙解决急啊

ghghg008 2013-09-03 04:48:44
一调用这个函数就出错,不知道怎么回事,vs2010(只有这么多分了请见凉,急)
BOOL PanDuanProcessName(char *szName)
{
int nEProcess;

nEProcess=(int)PsGetCurrentProcess();
int a=1;//这里是其实没有问题但显示这里出错,删掉就到下一行我怀疑是上面错了
char szProessaName[16];

strcpy(szProessaName,(char*)(nEProcess+0x174));

//DbgPrint("------%s------\n",szProessaName);

if(strcmp(szProessaName,szName)==0)
{
//DbgPrint("冒险岛调用了此函数\n");
return true;
}

return false;
}


错误代码
1>d:\documents and settings\administrator\my documents\visual studio 2010\projects\passp\passp\函数.h(33): error C2143: 语法错误 : 缺少“;”(在“类型”的前面)
1>d:\documents and settings\administrator\my documents\visual studio 2010\projects\passp\passp\函数.h(34): error C2143: 语法错误 : 缺少“;”(在“类型”的前面)
1>d:\documents and settings\administrator\my documents\visual studio 2010\projects\passp\passp\函数.h(36): error C2065: “szProessaName”: 未声明的标识符
1>d:\documents and settings\administrator\my documents\visual studio 2010\projects\passp\passp\函数.h(36): warning C4047: “函数”:“char *”与“int”的间接级别不同
1>d:\documents and settings\administrator\my documents\visual studio 2010\projects\passp\passp\函数.h(36): warning C4024: “strcpy”: 形参和实参 1 的类型不同
1>d:\documents and settings\administrator\my documents\visual studio 2010\projects\passp\passp\函数.h(40): error C2065: “szProessaName”: 未声明的标识符
1>d:\documents and settings\administrator\my documents\visual studio 2010\projects\passp\passp\函数.h(40): warning C4047: “函数”:“const char *”与“int”的间接级别不同
1>d:\documents and settings\administrator\my documents\visual studio 2010\projects\passp\passp\函数.h(40): warning C4024: “strcmp”: 形参和实参 1 的类型不同
1>d:\documents and settings\administrator\my documents\visual studio 2010\projects\passp\passp\函数.h(43): error C2065: “true”: 未声明的标识符
1>d:\documents and settings\administrator\my documents\visual studio 2010\projects\passp\passp\函数.h(46): error C2065: “false”: 未声明的标识符
...全文
336 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2013-09-03
  • 打赏
  • 举报
回复
偶遇到类似问题都是用 “每次用/*...*/注释掉不同部分再重新编译,直到定位到具体语法出错的位置。” 的方法解决的。 有时需要微调#incldue语句的先后顺序 以及
VC6:
工程、设置、C/C++、分类:Preprocessor、附加包含路径:填写附加头文件所在目录 逗号间隔多项
VS20xx:
项目、属性、C/C++、附加包含目录:填写附加头文件所在目录 分号间隔多项
的先后顺序
ghghg008 2013-09-03
  • 打赏
  • 举报
回复
谢谢 看了,但是没找到解决我的问题方法。
max_min_ 2013-09-03
  • 打赏
  • 举报
回复
引用 5 楼 ghghg008 的回复:
也没用,换成字母,也是这样的错误,不调用这个函数就没问题,中文的也行

PsGetCurrentProcess();//这接口
看看这个
ghghg008 2013-09-03
  • 打赏
  • 举报
回复
就是写入hook
max_min_ 2013-09-03
  • 打赏
  • 举报
回复
引用 6 楼 ghghg008 的回复:
还 有我是不是这里错了
void InLineHookEngine(int nRHookAddr,int nMyFunctionAddr)
{
	int nJmpAddr=nMyFunctionAddr-nRHookAddr-5;//放到这正常,是不是因为这里错了
	MemoryWritable();
        //int nJmpAddr=nMyFunctionAddr-nRHookAddr-5;这是原来的位置,但在这就出错
	__asm
	{
		mov eax,nRHookAddr
			mov byte ptr ds:[eax],0xe9
			mov ebx,nJmpAddr
			mov dword ptr ds:[eax+1],ebx
	}

	MemoryNotWritable();
}
 MemoryWritable();
//这个函数作了什么处理可?是不是它的实现影响的?
ghghg008 2013-09-03
  • 打赏
  • 举报
回复
还 有我是不是这里错了
void InLineHookEngine(int nRHookAddr,int nMyFunctionAddr)
{
	int nJmpAddr=nMyFunctionAddr-nRHookAddr-5;//放到这正常,是不是因为这里错了
	MemoryWritable();
        //int nJmpAddr=nMyFunctionAddr-nRHookAddr-5;这是原来的位置,但在这就出错
	__asm
	{
		mov eax,nRHookAddr
			mov byte ptr ds:[eax],0xe9
			mov ebx,nJmpAddr
			mov dword ptr ds:[eax+1],ebx
	}

	MemoryNotWritable();
}
ghghg008 2013-09-03
  • 打赏
  • 举报
回复
也没用,换成字母,也是这样的错误,不调用这个函数就没问题,中文的也行
max_min_ 2013-09-03
  • 打赏
  • 举报
回复
引用 3 楼 max_min_ 的回复:
头文件不要用中文吧!改成英文的试试吧!
头文件名字改成英文的试试!
max_min_ 2013-09-03
  • 打赏
  • 举报
回复
头文件不要用中文吧!改成英文的试试吧!
ghghg008 2013-09-03
  • 打赏
  • 举报
回复
#include <ntddk.h> #include <windef.h> 调用了
woshinia 2013-09-03
  • 打赏
  • 举报
回复
头文件中,没加好PsGetCurrentProcess对应的头文件的包含,都提示你错误在头文件中了。

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧