Blog/content/posts/2024/linux/strings.md
2024-08-17 22:58:41 +03:00

2.5 KiB
Raw Blame History

title date draft tags
🎹 Команда strings 2024-08-17T22:45:47+03:00 false
linux
tips

strings == строки

Пример

Накидаю простую программу на Си, которая инициализирует массив символов ololo_str со значением It's unique text, а также выводит в консоль GrindCore \m/.

Листинг strings.c

#include <stdio.h>

int main(int argc, char const *argv[]) {
  char * ololo_str = "It's unique text";

  puts("GrindCore \\m/");

  return 0;
}

Сборка и запуск

tcc -o string string.c # Компиляция
./string               # Запуск

Выхлоп программы:

GrindCore \m/

О strings

Двоичные файлы, такие как программные файлы, могут содержать строки читаемого человеком текста. Но как мы их видим? Если использовать cat или less, то, скорее всего, зависнет окно терминала. Программы, предназначенные для работы с текстовыми файлами, не могу обрабатывать исполняемые файлы, содержащие непечатаемые символы.

Спизжено отсюда.

Пример работы

Давай натравим strings на исполняемый файл string?

Выполняю команду:

strings ./string

и вижу следующий результат:

/lib64/ld-linux-x86-64.so.2
__libc_start_main
puts
main
__gmon_start__
libc.so.6
GLIBC_2.34
GLIBC_2.2.5
libc.so.6
PTE1
It's unique text
GrindCore \m/
.text
.data
.bss
.rodata.cst4
.eh_frame
.init
.fini
.preinit_array
.init_array
.fini_array
.interp
.dynsym
.dynstr
.hash
.dynamic
.got
.rela.got
.plt
.gnu.version
.gnu.version_r
.shstrtab

Много всего, да, но обе строки из программы присутсвуют.

Вывод: Утилита очень полезная! Применение?... много.
Я вот сегодня вытащил из бинарника пароль администратора от устройства, к которому осуществлялось подключение и на котором была очень ценная информация.
(🥲 шучу).