2.5 KiB
title | date | draft | tags | ||
---|---|---|---|---|---|
🎹 Команда strings | 2024-08-17T22:45:47+03:00 | false |
|
ℹ️ 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
Много всего, да, но обе строки из программы присутсвуют.
Вывод: Утилита очень полезная! Применение?... много.
Я вот сегодня вытащил из бинарника пароль администратора от устройства,
к которому осуществлялось подключение и на котором была очень ценная информация.
(🥲 шучу).