我不知道加密是什么,尽管一个论坛上的一个人说这是AES-128(不确定如何得出结论)。
我在应用程序上使用KANAL插件运行PEiD,它没有检测到任何加密签名。
因为我可以访问该程序,并且在使用ASM的一些知识的基础上拥有一些在WinXP上利用BO的经验,所以我想可以使用调试器进行尝试。
#1 楼
通常有很多开始的方法,要使用哪种取决于您的经验。同样,对一个目标有效的方法可能对另一个目标无效,反之亦然。我首先要使用的是:使用signsrch检查可执行文件是否链接了标准加密算法。请注意,这可能会产生误报(如果应用程序链接openssl,对于例如,即使仅使用一种或两种算法,您也可能会发现许多算法的签名。
检查文件中与加密有关的字符串,然后用google搜索它们。也许这有助于查找使用了哪个加密库。例如,字符串
SHA-%d test #%d:
会迅速导致polarssl
源代码。在运行procmon时跟踪应用程序。写入加密文件时,您可能会发现一个序列
CreateFile
,多个WriteFile
和一个CloseFile
调用,以及在读取加密文件时与ReadFile
相同。在某些情况下,这些调用的参数已经为您提供了提示。例如,如果第一个WriteFile
的字节数为32,并且随后的每个调用4096,则可能暗示前32个字节是256位密钥。调用
ReadFile
或发生WriteFile
时,您可以通过在调试器下运行应用程序时在该处放置一个断点来实现此目的,或者(更简单的恕我直言)查看几个procmon
调用的堆栈。这样可以提示您使用哪个功能链来加密文件并将其写入。请注意
CreateFile
,WriteFile
以及可能的其他形式的WriteFile
的堆栈差异。这些也可能会提示您哪个是加密功能。例如:加密文件的
CreateFile
具有堆栈ABCDEFGH
加密文件的
WriteFile
具有堆栈ABCIJKLM
用于其他内容的
WriteFile
具有堆栈ABNOPKLM
其中每个字母是一个堆栈条目。在这种情况下,我假设
KLM
是运行时库的一部分(fwrite
,write
,...。),因为无关的WriteFile
共享它,所以C
是主要的写函数(因为这是最后一次调用CreateFile
和WriteFile
),I
和J
加密和写入的函数。将文件加载到IDA或OllyDbg中,并仔细查看
C
,I
和J
。他们还调用其他哪些功能?这些功能是否与您先前使用signsrch识别的功能相同?在IDA或OllyDbg的控制下运行文件,并将断点放在
C
,I
,J
上,也许还有一些您通过signsrch找到的功能。检查这些功能的进入和退出参数。他们中有些人会打铃吗?其中一个函数是否具有一个参数,该参数是一个指向缓冲区的指针,该缓冲区在调用该函数之前看起来像XML,而在调用该函数之后看起来是垃圾?反之亦然?恭喜,您刚刚找到了执行加密的功能。当您发现执行加密的功能时,与其找出其工作方式,不如直接将其调用替换为一个序列,这可能会更容易一些。
NOP
的值(尽管要注意返回码,也许您需要将eax
设置为某些值)。宾果(Bingo),您有一个程序现在可以编写纯XML而不是加密XML,而无需弄清楚加密的细节,也不必编写一行代码(除非考虑了一系列NOP
的代码)。 br /> 评论
您忘记告诉如何删除混淆了加密阶段的垃圾
– Abr001am
15年6月20日在13:11
评论
我们需要了解更多信息,这可能有助于跟踪AES进程