Ассемблер и Си для Хакера #3. Как уменьшить размер *.EXE файла.

YOUTUBE · 01.12.2025 09:39

Ключевые темы и таймкоды

Введение

0:17
  • Рассматриваются способы уменьшения размера исполняемого файла.
  • Уменьшение размера файла важно для хакерского программирования.
  • Информация предназначена для правомерных целей и освоения перспективных способов кодирования.

Объединение секций

1:12
  • Линкер создает секции для кода, данных, импорта, экспорта и ресурсов.
  • Секции можно объединять или удалять, что уменьшает размер файла.
  • Объединение данных в секцию кода затрудняет отладку, что является защитой от взлома.

Выравнивание секций

2:17
  • Секции выравниваются в памяти на значение, кратное 4096.
  • Изменение кратности выравнивания уменьшает размер файла.
  • Для 32-битной системы минимальное выравнивание - 16 байт.

Удаление секции DOS

3:23
  • В начале исполняемого файла Windows есть секция с текстом для DOS.
  • Удаление этой секции уменьшает размер файла.
  • Реализуется через линкер и файл-затычку.

Использование системных функций

4:13
  • Использование функций из библиотек DLL уменьшает размер кода.
  • Пример: функции Win32 API вместо самописных процедур.

Динамическое выделение памяти

4:51
  • Динамическое выделение памяти или размещение неинициализированных данных в секции .data уменьшает размер программы.
  • Применение неординарных способов уменьшения размера программ.

Практика на MASM 32

5:24
  • Использование шаблона для создания крохотных файлов.
  • Перенос секции данных в секцию кода с помощью джампов.
  • Объединяем секции .data и .text, выравниваем секции и удаляем секцию .rel.

Использование файла-затычки

9:37
  • Использование файла-затычки .stab для удаления секции .rel.
  • Линкер link2.exe подходит для наших целей.
  • Размер файла уменьшен до 592 байт.

Обрезка файла

13:56
  • Обрезка нулевых байтов в конце файла с помощью WinHex.
  • Размер файла уменьшен до 577 байт.

Практика на Pelles

15:17
  • Использование Pelles для уменьшения размера файла.
  • Настройка выравнивания секций и удаление точки входа.
  • Размер файла уменьшен до 800 байт.

Финальное уменьшение

18:10
  • Применение тех же методов, что