扫描文件以查找签名(使用fread)

伊藤男

该功能的重点是获取2个文件流,一个签名和一个扫描文件。它应该扫描扫描的文件,并且如果签名在其中,它将返回1(文件被感染)。我尝试使用与两个参数相同的文件,但仍返回0,我尝试调试,但无法解决问题。

(sizeOfFile函数返回文件的大小,以字节为单位)

int scanFile(FILE* signatureFile, FILE* scannedFile)
{
    const size_t signatureSize = sizeOfFile(signatureFile);
    const size_t scannedFileSize = sizeOfFile(scannedFile);
    size_t l1 = 0;
    size_t l2 = 0;
    unsigned char currChar = ' ';
    unsigned char currSignatureChar = ' ';
    int i = 0;
    unsigned char signatureFirstChar = fread(&signatureFirstChar, 1, 1, signatureFile);
    if (scannedFileSize >= signatureSize)
    {
        while ((l1 = fread(&currChar, 1, 1, scannedFile)) != 0)
        {
            if (currChar == signatureFirstChar)
            {
                fseek(scannedFile, -1, SEEK_CUR);
                fseek(signatureFile, 0, SEEK_SET);
                currSignatureChar = signatureFirstChar;
                while (currChar == currSignatureChar)
                {
                    if ((l1 = fread(&currChar, 1, 1, scannedFile)) != 0 && (l2 = fread(&currSignatureChar, 1, 1, signatureFile)) != 0)
                    {
                        i++;
                        if (i == signatureSize)
                        {
                            return 1;
                        }
                    }
                    else
                    {
                        break;
                    }
                }
            }
        }

    }
    else
    {
        return 0;
    }
    return 0;
}

任何帮助将不胜感激。

约翰逊

fread()函数返回读取的对象数。您将signatureFirstChar在执行此操作时将该返回值分配给自己

unsigned char signatureFirstChar = fread(&signatureFirstChar, 1, 1, signatureFile);

更改为

unsigned char signatureFirstChar;
fread(&signatureFirstChar, 1, 1, signatureFile);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

扫描文件以查找签名(使用fread)

来自分类Dev

使用Java扫描病毒签名

来自分类Dev

使用fread找不到文件

来自分类Dev

Java扫描程序查找标签,然后使用定界符将该标签中的内容写入文件

来自分类Dev

查找签名丢失或过旧的文件

来自分类Dev

无法使用文件扫描功能

来自分类Dev

使用ClamAV扫描大文件

来自分类Dev

使用扫描仪查找字母

来自分类Dev

在C中使用fread读取文件

来自分类Dev

在C中使用fread读取文件

来自分类Dev

使用 fseek 、 fread 和指针读取文件

来自分类Dev

使用在线扫描仪扫描PDF文件

来自分类Dev

扫描目录和子目录以查找.txt文件

来自分类Dev

检测图像文件的内容:在图片中查找扫描的文档

来自分类Dev

使用C程序扫描USB驱动器(fopen,fread,fwrite)

来自分类Dev

使用C程序扫描USB驱动器(fopen,fread,fwrite)

来自分类Dev

使用扫描仪从文件读取

来自分类Dev

使用lua扫描文件夹

来自分类Dev

如何使用fscanf在C中扫描文件

来自分类Dev

使用sed文件添加扫描线

来自分类Dev

如何使用Windows Defender扫描单个文件?

来自分类Dev

使用扫描仪和方法从文件读取

来自分类Dev

使用Java扫描文本文件

来自分类Dev

使用lua扫描文件夹

来自分类Dev

使用iTextSharp对pdf文件签名后更改签名外观

来自分类Dev

我应该让apk签名还是使用调试未签名的文件?

来自分类Dev

基于签名的rootkit扫描程序?

来自分类Dev

基于签名的rootkit扫描程序?

来自分类Dev

如何使用扫描仪在Java中查找客户列表: