首页
社区
课程
招聘
[旧帖] 麻烦帮忙看一下一小段VC转VS代码,谢谢 0.00雪花
发表于: 2013-3-28 16:13 5587

[旧帖] 麻烦帮忙看一下一小段VC转VS代码,谢谢 0.00雪花

2013-3-28 16:13
5587
我有一段VC代码可以编译,现在想转换到VS,但对VS语法不是很懂,编译的时候出现了错误。麻烦帮忙看一下。谢谢,错误代码和VS代码在下面

ULONG GetKeStackAttachProcessHookAddr() //申请子程序 GetNt_Old_SSDTAddr() 返回无符号长整型数据。
{
UNICODE_STRING Old_KeStackAttachProcess; //申请局部变量 Old_NtOpenProcess存放" NtOpenProcess " Unicode字符串
ULONG Old_KeStackAttachProcess_Addr; //申请无符号长整型局部变量Old_SSDT_Addr 存放 原始 SSDT 地址

RtlInitUnicodeString(&Old_KeStackAttachProcess,L"KeStackAttachProcess"); //利用命令“初始化Unicode字符串”来初始化 NtOpenProcess 给Old_NtOpenProcess
Old_KeStackAttachProcess_Addr=(ULONG)MmGetSystemRoutineAddress(&Old_KeStackAttachProcess);//利用命令“获取系统程序地址”取得NtOpenProcess的起源地址 给 局部变量 Old_SSDT_Addr
DbgPrint("取得函数KeStackAttachProcess起源地址为 %x \n\r",Old_KeStackAttachProcess_Addr); //%x 以16进制输出显示。\n空格 \r 回车。
return Old_KeStackAttachProcess_Addr; //返回 SSDT NtOpenProcess 原始地址


char s=(char)0xe8;
return SearchFeature(Old_KeStackAttachProcess_Addr,&s,1);

}


ULONG SearchFeature(ULONG nAddr,char* pFeature,int nLeng)
{
char szStatus[256]="";
int i=5000;

while(i--)
{
RtlMoveMemory(szStatus,(char*)nAddr,nLeng);

if (RtlCompareMemory(pFeature,szStatus,nLeng)==nLeng)
{
return nAddr+nLeng;
}
nAddr++;
}

return 0;
}

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (17)
雪    币: 508
活跃值: (89)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
2
提示是语法错误了,好好找找不难解决。
下面的错误有可能是上面的错误造成的。
2013-3-28 16:32
0
雪    币: 195
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
我也知道是语法错误啊老大,但VS不会修改
2013-3-28 16:33
0
雪    币: 2120
活跃值: (73)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
ULONG SearchFeature(ULONG nAddr,char* pFeature,int nLeng)
在ULONG GetKeStackAttachProcessHookAddr()前声明一下
2013-3-28 16:43
0
雪    币: 195
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
声明了还是不行哦,能附上修改的代码吗?谢谢
2013-3-28 18:35
0
雪    币: 185
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
你这么贴。 都不知道报错的是哪一行的。 而且 明显是你用的函数未声明啊~~~
2013-3-28 18:40
0
雪    币: 134
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
在cpp中最前列加上#include "stdafx.h"。要是有完整代码我帮你试试。我用vs2010
2013-3-28 18:51
0
雪    币: 195
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
代码:

错误代码

谢谢
2013-3-28 18:53
0
雪    币: 134
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
再仔细看看,显然是";"的语法问题,复制粘贴时不小心改动了什么地方吧。
2013-3-28 18:54
0
雪    币: 195
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
39那个未声明,啥意思呢?不是很懂
2013-3-28 19:03
0
雪    币: 185
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
应该是char s = (char)0xe8;

前面哪个位置有问题。你把中间的空格检查一下,是不是有半码与全码的问题存在 。 还有楼上说的; 与;的区别。
2013-3-28 19:14
0
雪    币: 134
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
这样转换,还不如直接 char s = (char)"0xe8";试试。没调试,不一定行。二群群聊吧。(加解密二群)
2013-3-28 19:16
0
雪    币: 134
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
你前35行都return了,后面还有用吗?
2013-3-28 19:20
0
雪    币: 30
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
两个返回,你都返回了后面的代码还有毛用啊。。。
2013-3-31 00:37
0
雪    币: 43
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
15
楼主还没有找到问题所在?

仔细看看ascii表,最多只有0x7f。你这么赋值明显溢出了,vc6.0的检测没有vs上严谨。所有会将溢出的部分放在临近的一个字节。但是vs会当作错误。定义成双字节,一个自己赋值127或128,另一个赋值0xe8-127  或0xe8-128    注意两个字节的赋值顺序(高地址、低地址)。

还有你的代码明显编写的有问题,一个函数怎么可能同时有两个合理的返回。
2013-4-1 16:03
0
雪    币: 165
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
其实楼上都错了,主要是vs对c语法的支持有点问题,你把char s声明放函数头就行了。
2013-4-1 16:14
0
雪    币: 65
活跃值: (112)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
17
都写程序也先学好语法好不好!

CPP可以随时需要变量随时搞一个出来,C的也可以这么搞么?

再者,到处申明变量,这个是个极为垃圾的习惯
2013-4-1 16:50
0
雪    币: 35
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
36 37行里不知道有什么看不到的东西,35行的分号设置好输入法重新输一次。
s目测没有定义,结合2个return可以推测楼主是粘贴的时候出了问题。
2013-4-4 15:27
0
游客
登录 | 注册 方可回帖
返回
//