如何在二进制文件C中查找字节

Posted

技术标签:

【中文标题】如何在二进制文件C中查找字节【英文标题】:How to find bytes in binary file 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");
    

【问题讨论】:

由于代码不完整而被否决。 【参考方案1】:

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

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

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

【讨论】:

以上是关于如何在二进制文件C中查找字节的主要内容,如果未能解决你的问题,请参考以下文章

C语言如何实现拷贝图片?几行代码即可搞定

用C++写的二进制文件,用JAVA怎么读取?

C语言二进制流写入文件

用C++写的二进制文件,用JAVA怎么读取?

通过学习学生信息管理系统软件,C程序中,如何设计和编写一个应用系统?

如何在 C++ 或 Python 中快速将二进制文件划分为 6 字节块? [关闭]