Я не уверен, о чем вы думаете, но «правильный способ» проверки двоичного файла ELF - это использование HASH, такого как SHA-1, MD5 и т. Д.
Когда вы создаете файл ELF, вы также создаете «файл подписи», используя этот алгоритм HASH, то есть MD5, и проверяете результат.
Например, в Solaris вы можете создать дайджест MD5, SHA1, SHA256 с помощью команды
# digest -a [algorithm] [/path/to/file] {-v}
Итак, чтобы проверить "/ bin / sh" для предотвращения модификаций, вы должны сделать
# digest -v -a md5 /bin/sh
md5 (/bin/sh) = f4ad35f5246f817d68f4895463d79b09
# digest -v -a sha1 /bin/sh
sha1 (/bin/sh) = aa3843a19f2225458d7e3e765f44e229a09c0ad0
# digest -v -a sha256 /bin/sh
sha256 (/bin/sh) = a5e1a0062bb6600f06e029ce58f500169e966400b173b7fba504d5cd4635f291
Здесь у вас есть больше примеров на испанском Где MD5 в Solaris и как его использовать
Если хеширование не является решением, вы можете использовать (в Solaris) команды для проверки ELF как
elfdump и ldd
Вы можете использовать ldd с -iv для проверки инициализации общих библиотек
itily@openzooey:~/hello.world$ ldd -iv hello
find object=libc.so.1; required by hello
libc.so.1 => /lib/libc.so.1
find version=libc.so.1
libc.so.1 (SYSVABI_1.3) => /lib/libc.so.1
libc.so.1 (SUNWprivate_1.1) => /lib/libc.so.1
object=/lib/libc.so.1; filter for /usr/lib/ld.so.1
object=/lib/libc.so.1; filter for libm.so.2
find object=libm.so.2; required by /lib/libc.so.1
libm.so.2 => /lib/libm.so.2
find object=libc.so.1; required by /lib/libm.so.2
find version=libc.so.1
libc.so.1 (SUNW_1.1) => /lib/libc.so.1
libc.so.1 (SUNWprivate_1.1) => /lib/libc.so.1
init object=/lib/libc.so.1
Для генерации контрольной суммы ELF вы можете использовать опцию -k
itily@openzooey:~/hello.world$ elfdump -k hello
elf checksum: 0x8922
Но, если у вас нет доверенного ELF для сравнения, я думаю, это немного сложно.
Надеюсь, это то, что вы ищете,
Urko