我最近正在学习编译器,并将从官方网站下载的FFmpeg-1.0.10源代码编译为macOS 10.13.6上的二进制文件。我使用命令“字符串”在二进制文件中显示可打印的字符串。但是,有些奇怪的字符串在源文件中不存在。字符串的一些示例如下:
IMAS
TXTR
VbuS
...
theora
vorbis
'hb7=
... {next three examples start with whitespace character}
(8H8h8
h8H8(8
8!8"8
...
$h%h&h
$X%X&X
$X%X&X
...
那些字符串是什么?
它们来自何时何地?
它们是用来干什么的?
如何在源代码中用字符串常量来区分这些奇怪的字符串?
答案 0 :(得分:0)
strings
是一个非常幼稚的程序。它假定看起来像字符串的任何字节序列实际上都是一个字符串。没有尝试反编译,也没有任何其他智能算法。因此,有时您会打印一些随机字符。
查看ASCII值,我们看到'8'
是0x28,'8'
是0x38,'H'
是0x48,而'h'
是0x68。这可能是一些查找表,低半字节始终为8。