【问题标题】:How to find bytes in binary file C如何在二进制文件C中查找字节
【发布时间】:2021-08-09 23:08:41
【问题描述】:

如何在二进制文件中查找字节。 我将二进制文件读入字符串并尝试执行“strstr()” 它不起作用。如果我将循环中的字符串打印为 %c ,则字符串看起来不一样,但如果我打印为 %x 或 %02hhX ,它看起来是一样的。 我打开两个二进制文件并尝试查看一个文件是否隐藏在另一个文件中。种防病毒代码。

我的代码:

    FILE* file = fopen(filePath, "rb");
    FILE* signature = fopen(signaturePath, "rb"); 

    fread(fileStr, fileSize, 1, file);

    fread(signatureStr, signatureSize, 1, signature);

    int in = strstr(fileStr, signatureStr);

    if (in)
    {
        printf("bytes found.\n");
    }
    else
    {
        printf("sorry...\n");
    }

【问题讨论】:

  • 由于代码不完整而被否决。

标签: c file binary antivirus strstr


【解决方案1】:

我把二进制文件读成一个字符串

你不知道。您只需将其读入字符数组即可。你怎么能?字符串的结尾用零字节标记,二进制文件中可能包含零字节。因此,除非您执行某种转义任何零字节的转换,否则您没有有一个字符串。

str* 函数仅对字符串有用。它们对任意二进制数据没有用。相反,请使用 mem* 函数。如果没有memmem,也可以轻松实现。 one written by an engineer at Apple 是开源的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-20
    • 1970-01-01
    • 1970-01-01
    • 2015-06-13
    • 1970-01-01
    • 1970-01-01
    • 2014-06-20
    相关资源
    最近更新 更多