是否可以在不更改其哈希值的情况下修改文件

时间:2010-07-28 01:09:12

标签: winapi cryptography

我需要为应用程序编辑一些cfg文件,但事情是应用程序如果我这样做就不会启动,因为它必须匹配。我没有应用程序的来源。

我猜如果散列与exe的散列不匹配,它会退出。

你能以某种方式绕过这个吗?

7 个答案:

答案 0 :(得分:7)

实际上,有一种方法:

while(hash of malicious config file does not match original)
{
  make random, non-functional change to malicious config file.
}

这可能需要一段时间。

答案 1 :(得分:3)

使用某些哈希算法,您可以将数据附加到文件的末尾(如果是xml文件,例如注释标记内)。但它可能比它的价值更麻烦。例如,http://www.schneier.com/blog/archives/2005/06/more_md5_collis.html

答案 2 :(得分:3)

如果程序使用了良好的哈希,那么在不破坏哈希值的情况下很难进行更改。某些应用使用相对较差的哈希值。例如,如果您能够将文件的32位设置为任意值,则编辑文件而不影响CRC-32相对容易。知道使用什么类型的哈希函数?

答案 3 :(得分:2)

您可以让应用程序退出检查,但不,没有办法复制现有文件的加密哈希。这就是重点。

答案 4 :(得分:1)

是否存在具有所需设置且具有相同哈希值的文件?可能

你能找到它吗?几乎肯定不是

答案 5 :(得分:1)

现在是时候打破你的反汇编程序并拆开应用程序以摆脱我害怕的哈希检查。没有其他解决方案可以及时做到你想要的。

答案 6 :(得分:0)

这种验证有意难以规避。哈希通常起作用,使得输入中的微小变化产生广泛变化的输出。不幸的是,根据您的情况,本案中的支票正在履行职责。

虽然理论上还有其他输入可以与同一个东西相提并论,但它们与你的输入有很大的不同,而不仅仅是有点不同。找到这些输入也将像黑客加密数据一样耗时且困难。所以基本上没有。

正如其他一些帖子所提到的,如果你冒险并且生死攸关,你可以反汇编应用程序二进制文件并实际删除哈希的机器语言检查。这是大学 - 忍者的工作。