成功解密的提示

时间:2011-03-25 12:28:17

标签: algorithm reverse-engineering encryption

我有一个可执行文件解密用户输入的二进制数据。我的任务是恢复解密算法,而不会看到可执行文件的源代码。我已经完成了大约50次解密尝试,并且根据结果判断算法显然很容易(类似于XOR,但改变输入数据的一个字节通常会影响输出的两个字节),并且密钥的长度肯定是16字节,但我仍然无法恢复它。

所以,我的问题是:是否有成功恢复解密算法的提示?一些指南或任何其他帮助将不胜感激。

以下是一些实例,我可以看到那里的规律性,但我无法理解整个算法。如果我输入超过16个字节(例如17个零字节),则重复输出字节序列。左边的部分是我输入的,右边是我得到的(一切都是十六进制):

00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -> 73 36 15 B9 95 5D 8E EA 01 72 1C F4 FA 76 AA 65
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 -> 94 36 15 B9 95 5D 8E EA 01 72 1C F4 FA 76 AA 66
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 10 -> 93 36 15 B9 95 5D 8E EA 01 72 1C F4 FA 76 AA 75
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 11 -> 83 36 15 B9 95 5D 8E EA 01 72 1C F4 FA 76 AA 76
00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 -> 83 36 15 B9 95 5D 8E EA 01 72 1C F4 FA 76 A9 64
00 00 00 00 00 00 00 00 00 00 00 00 00 00 10 00 -> 94 36 15 B9 95 5D 8E EA 01 72 1C F4 FA 76 BA 55
00 00 00 00 00 00 00 00 00 00 00 00 00 00 11 00 -> 94 36 15 B9 95 5D 8E EA 01 72 1C F4 FA 76 B9 54
00 00 00 00 00 00 00 00 00 00 00 00 00 01 01 00 -> 94 36 15 B9 95 5D 8E EA 01 72 1C F4 FA 75 A8 64
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 -> 73 36 15 B9 95 5D 8E EA 01 72 1C F4 FA 76 AA 63

P.S。这不是常识中的“黑客”。我正在为一个不寻常的格式(.bmd)编写一个3D模型查看器,但是有些模型是加密的,所以我想实现自己的内部解密器,而不是使用外部可执行文件。

3 个答案:

答案 0 :(得分:2)

你的方法非常正确。如果我们假设它是一个16字节的块加密并且它确实是一个xor代码,你可以按如下方式进行(注意所有的计算都是以模2完成的):

  • 输入块为128位,输出块也为
  • 加密可以通过128x128二进制矩阵来描述E:out = e(in)= E * in + e(0)
  • 如果更改输入中的相应位,E中的每一行基本上都会告诉您哪些位将在输出中翻转。
  • 您可以使用您的方法获得E和e(0)并分别设置一位并计算输出。因此,您逐行获得矩阵E,即您需要128个输入值来收集整个矩阵。 e(0)只是零串的编码。
  • 然后用d(out)= D *(out-e(0))用矩阵D定义解密。
  • 如果我们将两者都插在一起,我们得到= d(out)= D *(E * in + e(0)-e(0))= D * E * in。
  • 因此,我们必须计算加密矩阵E的二进制逆。已知有针对此问题的算法(参见例如http://en.literateprograms.org/Binary_matrix_%28Java%29)。

编辑:我检查了您提供的示例是否符合假设。如果是普通的XOR代码,我们在输入和输出上会有XOR [第1行,第2行,第3行,第4行] = 0。相同的XOR [第1行,第5行,第6行,第7行] = 0.在提供的有限数据中,它对所有位都适用,但输出中的前8位(由于只有少数位受到影响,因此并不多见)。不幸的是,由于数据有限,我现在无法告诉你更多信息。

答案 1 :(得分:1)

可执行文件有多大 - 您可以对其进行反汇编并对其进行反向解密吗?

也许发布一些例子,说明为什么你认为它的工作方式与你想象的一样 - 别人可能会发现某些东西......

答案 2 :(得分:0)

您想要的是最有可能使用格雷码来解密文件。可以使用以下某些xors解密格雷码:http://www.morkalork.com/mork/article/74/How_to_understand_and_use_Gray_code.htm