作为我的计算机安全课程的一部分,我正在解析 hiberfil.sys 文件,寻找 PNG 文件。我正在 C 中尝试这个。我已经准备好了逻辑,当涉及到指针和 CI 时,我完全感到困惑。我无法编译以下代码:
#include<stdio.h>
#include<string.h>
int main(void)
{
FILE* fd = NULL;
FILE* out = NULL;
unsigned char* buff;
unsigned char* chunk[1024];
fd = fopen("hiberfil.sys","r");
out = fopen("a.png","w+");
if(NULL == fd)
{
printf("\n fopen() Error!!!\n");
return 1;
}
fread(buff,2,1,fd);
while(1){
if(*buff==137){
fread(buff,2,1,fd);
if(*buff==80){
fread(buff,2,1,fd);
if(*buff==78){
fread(buff,2,1,fd);
if(*buff==71){
fread(buff,2,1,fd);
if(*buff==13){
fread(buff,2,1,fd);
if(*buff==10){
fread(buff,2,1,fd);
if(*buff==26){
fread(buff,2,1,fd);
if(*buff==10){
int * a,b,c,d,e,f,g,h,i;
*a=137;
*b=80;
*c=78;
*d=71;
*e=13;
*f=10;
*g=26;
*h=10;
fwrite(a,2,1,out);
fwrite(b,2,1,out);
fwrite(c,2,1,out);
fwrite(d,2,1,out);
fwrite(e,2,1,out);
fwrite(f,2,1,out);
fwrite(g,2,1,out);
fwrite(h,2,1,out);
break;
}
else continue;
}
else continue;
}
else continue;
}
else continue;
}
else continue;
}
else continue;
}
else fread(buff,2,1,fd);
}
}
unsigned char type[4]=0;
while(type[0]!=73 || type[1]!=69 || type[2]!=78 || type[3]!=68){
fread(length,sizeof(int),1,fd);
fread(type,4,1,fd);
fread(chunk,length+4,1,fd);
fwrite(length,sizeof(int),1,out);
fwrite(type,4,1,out);
fwrite(chunk,length+8,1,out);
}
fclose(fd);
fclose(out);
return 0;
}
非常感谢!PS:有人可以帮我格式化代码块!
编辑错误
错误:一元'*'的无效类型参数(有'int')<<<<引用int *指针
错误:初始化“size_t fwrite(const void*, size_t, size_t, FILE*)”的参数 1 <<<< 我相信指的是 int 长度。
它们现在对我来说似乎微不足道,但少量的解释仍然会对我有所帮助。这些指针是怎么回事?