【问题标题】:Why does it seem to be that several different hexadecimal numbers represented as the dot (".") symbol?为什么看起来有几个不同的十六进制数字表示为点(“.”)符号?
【发布时间】:2017-11-02 12:14:26
【问题描述】:

当我尝试调整在 VirusTotal 上运行的 YARA 规则时,我注意到符号 . 不代表相同的十六进制数字。当我试图排除产生误报的文本字符串.sample.时,它不会被排除,因为在这种情况下,从文本表示转换而来的.2E,同时在字符串中,它实际上包含在误报中,. 代表00

我假设当文件匹配时,文本被转换为十六进制,然后十六进制字符串在文件的 hexdump 中匹配,整个 hexdump 在 VT 预览中被转换为文本。

然后我注意到在VirusTotal 的文本预览中实际上有更多的十六进制数字表示为.。例如,0A9909(屏幕截图)。

我尝试使用在线转换器 (http://www.unit-conversion.info/texttools/hexadecimal/) 查看这些十六进制数字的文本表示,其中一些表示为 或空白符号(不是 space 符号,作为数字 20 ,但只是一个空格)。

所以我的问题是 - 为什么不同的数字似乎代表同一个符号?另外,文件的 hexdump 中的“空格”代表什么?

【问题讨论】:

    标签: hex static-analysis yara


    【解决方案1】:

    0A 字符是换行字符,从this doc 中的表格可以看出,而2E 字符是实际句点。

    根据this answer 在同一问题上:

    这些是空白字符,如果按字面意思包含会弄乱 ASCII 表。这就是为什么它们(以及低于 32 的不可打印的控制字符,以及高于 127 的任何二进制值,它们不是由 ASCII 定义的,需要另一个字符集才能正确解释)由 .

    表示。

    本质上,'.'字符是无法在表格中正确显示的东西的总称。

    至于在线转换器,它似乎会生成字符直到7F,之后不再定义 ASCII 的 128 位实现,并且翻译器提供了一个 � 符号。即使从007F,我们也发现翻译器存在一些十六进制值的问题,包括换行符0A

    前面链接的 ASCII 表提示了翻译器可能遇到问题的几个字符,例如 DEL 字符 (7F)、铃铛 (07) 和 ENQ (05)。

    我希望空格是空白字符,这应该可以在 ASCII 表中验证。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-21
      • 2017-04-12
      • 2016-06-09
      • 1970-01-01
      • 1970-01-01
      • 2023-04-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多