如何将病毒签名与必须从大于病毒签名的文件中提取的二进制字符串进行比较

时间:2019-05-08 19:11:52

标签: c

主要,我有一个for循环来更改从文件开始读取的起点,即(int start)size是要检查的文件的大小,而vsize是病毒的大小。 我在fseek上遇到了例外。

int normalScan(FILE * file,FILE* virus, int start,int size,int vsize)
{
    int found = 0;
    char* buffer = (char*)malloc((vsize + 1) * sizeof(char));
    char* virusSig = (char*)malloc((vsize + 1) * sizeof(char));
    if (start + vsize <= size+1)
    {
        fseek(file, vsize, start + 1);
        fread(buffer, sizeof(char), vsize, file);
        fread(virusSig, sizeof(char), vsize, virus);
        rewind(file);
        int result = memcmp(buffer, virusSig,vsize);
        if (result == 0)
        {
            found = 1;
        }
        else
        {
            found = -1;
        }
    }
    if (found != 0)
    {
        free(virusSig);
        free(buffer);
        return found;
    }
    else
    {
        free(virusSig);
        free(buffer);
        return -1;
    }
}

0 个答案:

没有答案