Как найти скрытые строки и компоненты в .exe-файле с помощью strings

Как найти скрытые строки и компоненты в .exe-файле с помощью strings

Ты скачал .exe-файл — может быть, с форума, из письма или с сайта, где не очень чисто. Ты не хочешь его запускать, но хочешь понять: что внутри? Не вирус ли? Не шпионская утилита? Не кейген, который крадёт пароли? Ты не один. Многие аналитики, системные администраторы и даже просто внимательные пользователи сталкиваются с этой задачей. И самый простой, быстрый и надёжный способ — не запускать файл, а просто посмотреть, какие текстовые строки в нём спрятаны. Это называется strings-анализ.

Не нужно быть хакером. Не нужно грузить IDA Pro или Ghidra. Достаточно команды strings — и ты уже видишь то, что разработчик не хотел, чтобы ты увидел: ссылки на серверы, ключи шифрования, пути к файлам, даже фрагменты кода. Я покажу, как это делать правильно, чтобы не пропустить ничего важного и не попасться на удочку ложных срабатываний.

Что такое strings и зачем он нужен

strings — это утилита, которая сканирует бинарный файл (вроде .exe) и вытаскивает все последовательности печатаемых символов длиной больше 4–5 символов. Это не декомпиляция. Это не анализ кода. Это просто «вылов» текста, который был встроен в файл как есть — например, сообщения об ошибках, URL, имена файлов, строки логирования, лицензионные ключи, даже пароли, если разработчик был ленив.

Почему это работает? Потому что даже самые «запутанные» .exe-файлы содержат кучу текстовых данных. Даже если программа скомпилирована с оптимизацией, даже если она упакована — строки остаются. Они не удаляются, потому что это не вредит производительности, а экономит место в коде. Вместо того чтобы генерировать строки в памяти во время выполнения, разработчики просто вставляют их в бинарник как есть.

Пример: ты видишь в результатах https://api.update-checker[.]com/v1/validate. Это не случайность. Это реальный адрес, который программа будет пытаться вызвать при запуске. Если ты не знаешь, что это за домен — значит, тебе нужно проверить его. Это уже почти половина ответа на вопрос: «А что он делает?»

Как запустить strings — пошагово

Ты можешь делать это на Windows, Linux или macOS. Все три системы поддерживают strings, но способ запуска отличается.

  1. На Windows — используй Sysinternals Suite от Microsoft. Скачай strings.exe оттуда. Он бесплатный, легальный и не содержит вредоносного кода. Распакуй архив, открой командную строку (cmd) в папке с strings.exe и введи:
strings.exe -n 5 ваш_файл.exe > output.txt

Флаг -n 5 означает: «вытаскивай только строки длиной 5 и более символов». Это убирает мусор вроде случайных одиночных букв. Результат сохраняется в output.txt — так проще искать.

  1. На Linux или macOSstrings уже есть в системе. Открой терминал и введи:
strings -n 5 ваш_файл.exe | grep -i "http\|api\|key\|token\|password"

Эта команда сразу фильтрует результаты по ключевым словам: HTTP-адреса, API, ключи, токены, пароли. Это экономит время. Если хочешь посмотреть всё — просто убери | grep ....

Что искать в результатах — 7 ключевых категорий

Не смотри на все строки подряд. Это как искать иголку в стоге сена. Лучше знать, на что смотреть. Вот что чаще всего говорит о проблеме:

  • URL и IP-адреса — любые ссылки, особенно на неизвестные домены. Если вижу http://185.143.221.44/submit — это тревожный знак. Нормальные программы используют известные домены вроде update.microsoft.com.
  • Ключи шифрования и токены — строки вроде sk_live_abc123xyz, API_KEY=XXXXXXXX, secret_key: "mypass123". Если ключ встроен в бинарник — это ужасная практика. Это значит, что любой, кто распакует файл, получит доступ к сервису.
  • Имена файлов и пути — например, C:\Users\Public\temp\keylogger.dat или /tmp/.cache/hidden.bin. Это показывает, куда программа пишет данные. Если путь выглядит как скрытая директория — подозрительно.
  • Строки из библиотек — если ты видишь libcurl, WinHttp, OpenSSL — это нормально. Но если видишь librat, injector, hook — это красный флаг. Эти библиотеки используются для внедрения в другие процессы.
  • Имена процессов — строки вроде svchost.exe, explorer.exe — могут означать попытку маскировки. Программа может пытаться выглядеть как системный процесс.
  • Коды ошибок и сообщенияFailed to connect to license server — это может быть ложный сценарий, но если там же есть URL, то это и есть сервер лицензирования. А если его нет в документации — значит, он не легальный.
  • Комментарии и имена разработчиков// Debug build - DO NOT RELEASE, Author: Ivan@corp.local. Это не вредоносно, но показывает, что файл был собран с отладочной информацией — а значит, разработчик не соблюдал базовые правила безопасности.

Сравнение: strings vs другие методы

Если ты хочешь глубже — можно использовать декомпиляторы, дебаггеры, анализаторы поведения. Но они требуют времени, опыта и ресурсов. Вот как strings сравнивается с другими подходами:

Метод Скорость Точность Сложность Когда использовать
strings Секунды Средняя — видит только текст Очень низкая Первый шаг, быстрая проверка
PE-bear / CFF Explorer 1–3 минуты Высокая — видит секции, импорты Средняя Когда нужно понять, какие DLL подгружаются
IDA Pro / Ghidra 10–60 минут Очень высокая Высокая Когда нужно разобрать логику работы
Сандалия (Sandbox) 5–15 минут Высокая — видит поведение Средняя Когда нужно увидеть, что файл делает в реальном времени

Понимаешь разницу? strings — это как посмотреть, что написано на этикетке бутылки. А Ghidra — это как вскрыть бутылку, разобрать химический состав и понять, откуда взялось каждое вещество. Ты не обязан делать всё сразу. Начни с этикетки.

Частые ошибки — и как их избежать

Люди делают три ошибки, которые сводят на нет всю пользу strings-анализа:

  1. Смотрят только на первые 10 строк. Скрытые строки могут быть в конце файла. Всегда прокручивай до конца. Особенно если файл большой — до 10 МБ и больше.
  2. Полагаются на автоматические сканеры. Многие антивирусы и онлайн-сервисы (VirusTotal, Hybrid Analysis) тоже используют strings. Но они не всегда показывают всё. Иногда они фильтруют «мусор». А тебе нужен полный список. Скачай файл, запусти strings сам — и сравни.
  3. Игнорируют шифрованные или base64-строки. Иногда ключи или URL записаны в base64. Пример: bmV3LWFwaS5leGFtcGxlLmNvbS92MS9kYXRh. Скопируй эту строку в любой онлайн-декодер (например, base64decode.org) — и ты увидишь new-api.example.com/v1/data. Это критично. Не пропускай такие строки.

Ещё одна ошибка — думать, что если строк нет, то файл безопасен. Это не так. Некоторые вредоносные программы используют шифрование или динамическое формирование строк в памяти. Тогда strings не поможет. Но это редкость. 90% реальных угроз оставляют текстовые следы.

Когда использовать strings — сценарии

Не все ситуации одинаковы. Вот как действовать в разных случаях:

  • Случай 1: Ты скачал .exe с сайта, который выглядит подозрительно — запусти strings сразу. Ищи URL, ключи, пути. Если есть хотя бы один неизвестный домен — не запускай. Удали файл. Пример: http://update[.]malware[.]xyz — это почти всегда вредоносный сервер.
  • Случай 2: Ты получил .exe от коллеги, но не знаешь, что он делает — проверь строки. Если в них есть registry, HKCU\Software, StartUp — это может быть персистентный скрипт. Если есть clipboard — возможно, он крадёт буфер обмена. Спроси коллегу: «А что за функция?» — и покажи ему строки. Часто он сам не знает, что в нём есть.
  • Случай 3: Ты анализируешь старую утилиту, которую не могли найти в интернете — используй strings + PE-анализ. Иногда в строках можно найти имя автора, версию, дату сборки — и найти оригинальный источник. Это помогает понять, легальный ли это софт.
  • Случай 4: Ты подозреваешь, что программа «звонит домой» — ищи все HTTP-запросы. Сравни их с тем, что написано в лицензионном соглашении. Если в соглашении нет упоминания о связи с сервером — это нарушение. Даже если программа «бесплатная».

Как сделать это правильно — рекомендации

Вот что я делаю всегда:

  1. Скачиваю файл в изолированную папку (не на рабочий компьютер).
  2. Запускаю strings -n 5 файл.exe > output.txt.
  3. Открываю output.txt в Notepad++ или VS Code — и ищу по ключевым словам: http, api, key, token, secret, password, registry, hook, inject.
  4. Если вижу что-то подозрительное — проверяю домены через Whois и VirusTotal. Если домен зарегистрирован на анонимного владельца в России или Китае — это тревожный знак.
  5. Если строк много, но все они нормальные (например, только системные DLL и стандартные сообщения) — файл, скорее всего, безопасен. Но не запускаю его до тех пор, пока не проверю через VirusTotal хотя бы.

И ещё один важный совет: никогда не запускай .exe, если ты не понимаешь, что в нём есть. Даже если он «от надёжного источника». Потому что источник мог быть взломан. А strings — это твой первый и самый простой щит.

Что делать дальше

Если ты нашёл подозрительные строки — не паникуй. Не удаляй файл сразу, если он тебе нужен. Сохрани его, сделай дамп строк, и если есть возможность — передай его в ИБ-отдел или специалисту по кибербезопасности. Если ты не эксперт — не пытайся разбирать глубже. Ты уже сделал свою работу: выявил потенциальную угрозу.

Если строк нет — это не значит, что всё хорошо. Это значит, что ты не видишь ничего. Но ты не видишь и ничего плохого. В этом случае — проверь файл через VirusTotal. Если там 0/70 детектов — скорее всего, это чистый файл. Если 10+ — даже без строк, он вредоносный. Детектирование по поведению может быть точнее, чем по строкам.

Всё, что ты хочешь знать о .exe-файле — часто лежит прямо в нём. Никаких сложных инструментов не нужно. Никаких хакерских знаний. Достаточно команды strings и немного внимания. Это не магия — это просто работа с текстом. И если ты умеешь искать по ключевым словам — ты уже эксперт в этой области.

Запусти strings на первом же подозрительном .exe — и ты увидишь, насколько просто можно понять, что скрывается в бинарнике. Это как прочитать письмо, не вскрывая конверт. И это работает. Попробуй. Сегодня.

Информация в этой статье носит ознакомительный характер. Анализ исполняемых файлов может быть связан с юридическими и техническими рисками. Принимать решения о запуске или удалении файлов следует только после консультации с квалифицированным специалистом по информационной безопасности.

Оцените статью
PEFile — Безопасность и технологии простым языком