是否可以检查ELF可执行文件的"GNU_HASH"部分中的哈希值?

Bob*_*421 2 linux hash elf digital-signature

当我反汇编ELF可执行文件时,我看到一个GNU_HASH似乎包含哈希的部分.我认为这是一个签名,以检查可执行文件是否被病毒修补或感染.

有没有办法检查这个签名?Linux在运行程序时是否会自动检查此签名?

sle*_*ske 9

当我反汇编elf可执行文件时,我看到一个包含GNU哈希的部分.我认为这是一个签名,以检查可执行文件是否是补丁或被病毒感染.

不它不是.您混淆了哈希函数的两种常见用法:

  • 使用加密哈希函数对数据进行数字签名,以及
  • 使用(通常是非加密的)散列函数来允许快速查找数据,通常是通过散列表

ELF二进制文件包含一个"散列部分",允许快速查找ELF符号表中的符号,以加快链接速度.此部分称为"哈希部分",因为它包含哈希表.它与完整性检查无关.

引用ELF规范:

哈希表

Elf32_Word对象的哈希表支持符号表访问.

来源:SYSTEM V APPLICATION BINARY INTERFACE,第94页

  • `.gnu_hash` 中内容的详细信息:https://blogs.oracle.com/ali/entry/gnu_hash_elf_sections。请注意,`.gnu_hash` 与 `.hash` 不同,二进制文件可以包含其中之一,也可以包含两者。 (2认同)