-
-
[求助]来看看 这是语法问题吗? 还是C基础不过关
-
发表于:
2015-7-3 13:39
3576
-
[求助]来看看 这是语法问题吗? 还是C基础不过关
遇到个奇怪的问题....
先代码
unsigned int GetCrc32(PCHAR chText, int len)
{
//生成Crc32的查询表
unsigned int Crc32Table[256];
int i, j;
unsigned int Crc;
for (i = 0; i < 256; i++){
Crc = i;
for (j = 0; j < 8; j++){
if (Crc & 1)
Crc = (Crc >> 1) ^ 0xEDB88320;
else
Crc >>= 1;
}
Crc32Table[i] = Crc;
}
//开始计算CRC32校验值
Crc = 0xffffffff;
for (i = 0; i < (int)len; i++){
Crc = (Crc >> 8) ^ Crc32Table[(Crc & 0xFF) ^ chText[i]];
}
Crc ^= 0xFFFFFFFF;
return Crc;
}
那么问题来了
在用户层程序
void Check()
{
ULONG64 tick = GetTickCount64();
GetCrc32((PCHAR)&tick,8); 毫无问题.
}
但是在驱动中. 直接
PAGE_FAULT_IN_NONPAGE_AREA 切直接忽视 try.except
但是如果把GetCrc32的参数
PCHAR chText 改成
PBYTE chText,
切调用的时候改成
GetCrc32((
PBYTE)&tick,8); 就毫无问题.
看了驱动<WINDEF.H>
typedef unsigned char BYTE;
typedef BYTE near *PBYTE;
<ntedf.h>
typedef char CHAR;
typedef CHAR *PCHAR, *LPCH, *PCH;
x64系统
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)