我用 C 语言编写了一个程序,它将从自己的地址空间读取特定内存地址的字节。
它是这样工作的:
- 首先它从文件中读取一个 DWORD。
- 然后它使用这个 DWORD 作为内存地址,并在当前进程的地址空间中从这个内存地址读取一个字节。
以下是代码摘要:
FILE *fp;
char buffer[4];
fp=fopen("input.txt","rb");
// buffer will store the DWORD read from the file
fread(buffer, 1, 4, fp);
printf("the memory address is: %x", *buffer);
// I have to do all these type castings so that it prints only the byte example:
// 0x8b instead of 0xffffff8b
printf("the byte at this memory address is: %x\n", (unsigned)(unsigned char)(*(*buffer)));
// And I perform comparisons this way
if((unsigned)(unsigned char)(*(*buffer)) == 0x8b)
{
// do something
}
虽然该程序有效,但我想知道是否有另一种方法可以从特定内存地址读取字节并执行比较?因为每次,我都需要编写所有的类型转换。
另外,现在当我尝试使用以下语法将字节写入文件时:
// fp2 is the file pointer for the output file
fwrite(fp2, 1, 1, (unsigned)(unsigned char)(*(*buffer)));
我收到警告:
test.c(64) : warning C4047: 'function' : 'FILE *' differs in levels of indirectio
n from 'unsigned int'
test.c(64) : warning C4024: 'fwrite' : different types for formal and actual para
meter 4
谢谢。