我知道有一些工具可以识别代码中的通用密码和哈希算法,但是对于通用压缩算法(例如gzip,deflate等),是否有任何类似的脚本/工具/插件?主要针对x86和Windows,但也欢迎针对其他平台的答案。

请注意,我要查找的是代码,而不是数据。

评论

许多压缩/解压缩工具都具有此功能,我不会感到惊讶,因为7zip经常可以打开文件而不管扩展名如何。尽管有可能依赖于元数据。

诸如7zip之类的工具仅依靠可执行文件中的元数据来检测SFX二进制文件,但是即使使用启发式算法,它也会寻找压缩数据,而不是压缩算法。我正在寻找检测常见压缩算法代码地址的方法。

1 /我不知道有什么工具可以做到这一点2 /确实取决于您要匹配C代码还是经过优化的ASM代码:如果要匹配已编译的代码,最好为特定代码使用类似于FLIRT的签名职能。要匹配手动优化的ASM(在复制/粘贴时人们很少改变的东西),则要么匹配完整的块,要么至少匹配特定的常量(示例)

#1 楼

Luigi Auriemma的signsrch具有常用压缩库(zlib等)中使用的表的签名。



它已被移植为ImmDbg和IDA的插件。

他还有offzip工具,该工具试图识别和解压缩压缩流。在二进制文件中。

评论


这个工具很棒。看起来也跨平台。甜!

–多项式
13年4月2日在7:32

#2 楼

我是binwalk的忠实拥护者,但遗憾的是,它在Windows上并没有太大帮助。

评论


他们的发行说明说:“版本1.0是用Python完全重写的,包括新功能和可编写脚本的Python模块。”尽管他们的常见问题解答提到它尚未在Windows上进行过测试,但如果未在Windows上进行测试,则需要花费很多精力。没错

– ixje
13年4月2日在6:35



#3 楼

如果二进制文件使用deflate或gzip(使用deflate),则代码通常以库的形式链接进来,因此易于根据字符串伪像进行检测。当然,这可以是自动化的,例如,您可以简单地搜索相应的字符串。手动将功能与源代码进行匹配是一个繁琐的过程,但通常效果很好。对于不常用的算法或没有任何工件的情况,此过程要困难得多。在这种情况下,您必须通过算法的语义来识别该算法(诸如字长,常量,数据结构之类的内容可能会提供提示)。

除了已经提到的FLIRT签名之外:如果将IDA Pro与Hex-Rays插件,很幸运,您可以在http://crowd.re上找到算法。有一些可用的压缩算法注释。除此之外,我不知道有什么工具或脚本可以满足您的需求。