用于解密函数的IDA Pro C转储
至此。这个人使用的加密几乎是XOR并带有一些欺骗性,因此加密功能与解密几乎相同。在解密器中拥有20个字节的密钥,我通过将4个不同的解密器进行比较,发现受害者所支付的全部费用在同一区域内只有20个字节的差异,并且后来在IDA中将其推入到IDA中进行确认后,发现了这一点。
即使密钥为20个字节,加密中也仅使用16个字节,而每个加密文件仅使用4个字节生成头,以便解密器以后可以找到它们。因此在ida中看起来像这样:
Dword:C4 67 0E 46
Dword:99 2F D3 E4 40 BD 87 EB 8F 35 04 96 3B CE 8D 73 br />我的猜测是,每512个加密块中使用4个字节,将两个512个块相互CFB生成2 1024个加密数据块。很抱歉,如果那没有道理。永远花时间找到解密功能。
对代码来说,这是解密(还加密)功能的清理代码。
br />从16个字节中以某种方式生成了2个名为nonce的INT。
因此,基本上,我和其他许多人都在想,这是否像常规的XOR一样可以蛮力破解或破解?当然我不知道我的密钥,但是如果可能的话,几乎每个人都会至少有一个纯文本文件,以进行XOR之类的纯文本攻击。此解密程序附带的加密文件,以及解密程序本身作为资源。上面的示例密钥也是该解密器中的密钥。 (可悲的是,没有特殊顺序)
解密(纯文本)文件
加密文件
解密器EXE
(这个EXE绝不是恶意的,并且在运行时不会检测任何文件,因为它检测到加密的文件。我已经在我的个人计算机上运行了数百次,没有任何故障。它可以连接到调试器,并且可以安全运行。再说一遍,就是因为它是一个已知的exe文件,并且带有感染。 >对于这么长的时间感到抱歉,很难一次全部解释。
#1 楼
我目前没有时间制定适当的解决方案,但我会提供一些提示,希望对您有所帮助。减少到更少的位。例如,您可以采用算法并对其进行修改,使其能够与8位随机数一起使用,然后将旋转量降低到2位(随机数大小的四分之一)。然后,您也将掩码从8位切换为2位,并将密码异或为2位。这样,您就可以处理一个更易于管理的问题。您甚至可以将其简化为4位随机数和1位密码。通过这个简化的问题,您可以为从明文到密文的每个比特制定方程式。将其插入Z3之类的东西可能是获得答案的最简单方法。这是一篇使用Z3攻击简单哈希函数的文章。
浏览一下,看起来如果您具有纯文本和密文就可以解决密钥(nonce1和nonce2)。由于nonce2的实际模数为2 ^ 32,因此可能会引起问题。由于这是一个加法运算,由于对nonce2和x的约束,实际上只有两个值可以映射到相同的值,因此反转并非不可能。方程式自己解决后,我就会将问题带到math.stackexchange.com。
评论
这么说让我感到非常难过,有点尴尬,但是我觉得很多事情都困扰着我。我对反汇编进行了细微的修改,并编写了很多代码,但是数学和密码学已使我望而却步,所以我将尽一切可能对您的答案以及Z3进行研究。如果您确实有时间分解公式,我可以理解,也将不胜感激。我现在开始阅读,希望能更好地掌握这个答案。但是,诚实的回答很快,您认为通过足够的工作,这实际上是可逆的吗?
–user3546043
2014年5月4日,3:12
#2 楼
如果确实执行ch=*prt++
(而不是ch=*++ptr
),则ch
是刚写在前面的行中的字符,而不是注释所建议的下一个字符。无论如何,与您编写此方法相反,它不是非自愿的:nonce1
= nonce2
= 0
将明文1,2,3,4,5,6,7,8转换为1,3,0,4,1 5,0,8(如果我没记错的话)会转换为(1,2,2,...)评论
您是什么意思,它不是“非自愿的”?
–user3546043
14年5月4日在16:43
@ user3546043他可能是指渐开线,这是它自己的逆函数的术语。这是您的陈述所隐含的内容:“这个人使用的加密几乎是XOR,而且有些技巧,因此加密功能与解密几乎相同”。
– Iwillnotexist Idonotexist
2014年5月5日下午3:36
好吧,我从一个朋友那里得到的关于加密方案的注释在他不得不离开一个月之前帮助了我,他声称解密和加密是相同的,但是它们都使用不同的密钥。现在我不确定这有多正确,但他对我到目前为止发现的内容还没有错。他告诉我不要将其与非对称密钥混淆
–user3546043
2014年5月5日15:48
评论
您可能会发现此问题很有用:检测和破坏xor加密的最有效方法是什么?遗憾的是,这不是传统的XOR加密,我尝试了每种xor工具,甚至制作了自己的工具。但是由于缺乏密码学,我无法掌握如何为这种类型的自定义异或运算法制作暴力/破解应用程序,因为这里使用了一种怪异的CFB类型方法。有趣的是它很容易加密,但同时又很强大。