strings
This commit is contained in:
parent
1ae2c4c40b
commit
545848e0d0
107
content/posts/2024/linux/strings.md
Normal file
107
content/posts/2024/linux/strings.md
Normal file
@ -0,0 +1,107 @@
|
||||
---
|
||||
title: "🎹 Команда strings"
|
||||
date: 2024-08-17T22:45:47+03:00
|
||||
draft: false
|
||||
tags: [linux, tips]
|
||||
---
|
||||
|
||||
## ℹ️ strings == строки
|
||||
|
||||
## Пример
|
||||
|
||||
Накидаю простую программу на Си, которая инициализирует массив символов `ololo_str`
|
||||
со значением `It's unique text`,
|
||||
а также выводит в консоль `GrindCore \m/`.
|
||||
|
||||
Листинг `strings.c`
|
||||
|
||||
```c
|
||||
#include <stdio.h>
|
||||
|
||||
int main(int argc, char const *argv[]) {
|
||||
char * ololo_str = "It's unique text";
|
||||
|
||||
puts("GrindCore \\m/");
|
||||
|
||||
return 0;
|
||||
}
|
||||
```
|
||||
|
||||
Сборка и запуск
|
||||
|
||||
```sh
|
||||
tcc -o string string.c # Компиляция
|
||||
./string # Запуск
|
||||
```
|
||||
|
||||
Выхлоп программы:
|
||||
|
||||
```text
|
||||
GrindCore \m/
|
||||
```
|
||||
|
||||
|
||||
## О `strings`
|
||||
|
||||
Двоичные файлы, такие как программные файлы, могут содержать строки читаемого человеком текста.
|
||||
Но как мы их видим? Если использовать `cat` или `less`, то, скорее всего,
|
||||
зависнет окно терминала. Программы, предназначенные для работы с текстовыми файлами,
|
||||
не могу обрабатывать исполняемые файлы, содержащие непечатаемые символы.
|
||||
|
||||
_Спизжено [отсюда](https://wiki.merionet.ru/articles/kak-ispolzovat-komandu-strings-v-linux)._
|
||||
|
||||
|
||||
## Пример работы
|
||||
|
||||
Давай натравим `strings` на исполняемый файл `string`?
|
||||
|
||||
Выполняю команду:
|
||||
|
||||
```sh
|
||||
strings ./string
|
||||
```
|
||||
|
||||
и вижу следующий результат:
|
||||
|
||||
```text
|
||||
/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
|
||||
```
|
||||
|
||||
Много всего, да, но обе строки из программы присутсвуют.
|
||||
|
||||
**Вывод:** Утилита очень полезная! Применение?... много.
|
||||
Я вот сегодня вытащил из бинарника пароль администратора от устройства,
|
||||
к которому осуществлялось подключение и на котором была очень ценная информация.
|
||||
(🥲 шучу).
|
Loading…
Reference in New Issue
Block a user