跨平台方式进行简单的二进制(可执行)自检

时间:2013-07-07 09:43:32

标签: c security cross-platform

所以问题是:如何使用标准C库以跨平台方式实现简单的自检可执行文件?

这里我正在寻找技术,而不是特定的检查方法(如CRC或哈希码),但该技术可能包含更适合某些方法的元素(例如见下文)。

目的是提供一种方法来指示二进制文件可能最有可能因某些病毒的操作或传输失败而被破坏,并且可能无法按预期执行。它并非旨在防止故意篡改目标,尤其是有问题的可执行文件。

它应该是合理的跨平台。理想情况下,它应该只使用标准的C库,但是如果无法通过无关的条件编译实现,那么能够在大多数使用的系统(Linux变体,Android,Mac OS,Windows)上运行的方法也可能适用。

我目前的想法是简单地打开二进制文件,仅使用标准文件I / O进行读取,使用传递给程序的第一个参数(argv),该程序是已启动的可执行文件的名称,并对独立的应用程序应用检查算法一些支票代码的位置。 (简单校验和通过提供一个否则未使用的位置来满足此要求,以使完整二进制的总和评估为零。也可以使用CRC算法,但在二进制的任意点插入合适的值并不是那么简单)

即使是这种技术could fail,尽管argv [0]中的信息可能足以始终可靠地找到可执行文件本身的二进制文件。

1 个答案:

答案 0 :(得分:0)

我认为您应该在代码中插入一个静态字符缓冲区,用于存储二进制文件的CRC。您应该使用一些已知的MAGIC序列来缓存您的缓冲区,以便在扫描二进制文件时识别它...这样您就可以跳过二进制文件中的CRC数据,这样您的CRC校验就不依赖于它。

相关问题