Назад к обновлениям
New releaseAug 12, 2026

TinyLoad v7.3

Паковщик и криптер с открытым исходным кодом для Windows x64 PE. Сжимает и шифрует исполняемые файлы с помощью пользовательской виртуальной машины, помещая их в самораспаковывающуюся заглушку.

Поделиться
github-social-preview

TinyLoad v7.3 - упаковщик PE для Windows

Version Actively Maintained Mentioned in Awesome

TinyLoad — это криптор/упаковщик PE для исполняемых файлов x64. Он упаковывает входной exe с несколькими уровнями защиты, чтобы предотвратить реверс-инжиниринг. Это один-единственный файл .cpp без внешних зависимостей.

как это работает

TinyLoad дописывает вашу полезную нагрузку в свою собственную копию. Когда упакованный exe запускается, он извлекает полезную нагрузку, расшифровывает её и выполняет напрямую в памяти, ни разу не записывая оригинал на диск. Каждый раз, когда вы что-то упаковываете, опкоды VM случайным образом изменяются и помещаются в 4 подтаблицы с независимыми ключами, поэтому двух одинаковых сборок не бывает.

загрузка

Возьмите готовый бинарник из releases или соберите его самостоятельно.

сборка из исходников

Вам понадобится MinGW (g++). Просто запустите:

g++ -o TinyLoad.exe TinyLoad.cpp -static -O2 -s

или используйте build.bat.

использование

TinyLoad.exe --i <input> [--o <output>] [--vm] [--c] [--veh]
флагчто делает
--i <file>входной exe для упаковки
--o <file>путь к выходному файлу (по умолчанию: input_packed.exe)
--vmVM-шифрование
--cсжатие LZ77
--vehрасшифровка по page fault через VEH
--noconsoleGUI-подсистема

Вам нужен как минимум один из --vm, --c или --veh.

примеры

2026-08-1118-55-14-ezgif com-video-to-gif-converter

изображения DIE

die-gui-packed die-gui-entropy

сжатие

Кастомное сжатие LZ77 с сопоставлением по хеш-цепочкам и скользящим окном 64 КБ. Сначала выполняется сжатие, затем поверх него накладывается VM-шифрование, так что любые закономерности в сжатых данных тоже скрываются.

VM-шифрование

Кастомная виртуальная машина с 28 опкодами, работающая внутри стаба. Опкоды случайным образом распределяются по 4 подтаблицам по 8 штук, и каждая подтаблица XOR-зашифрована своим ключом, полученным из данных полезной нагрузки. Взлом одной подтаблицы раскрывает максимум 8 из 28 опкодов. Сам шифр — это 128-битный потоковый шифр с перемешиванием ключа через rotl и rotr, выполняемый целиком внутри интерпретатора VM. Полезная нагрузка шифруется с помощью XXTEA.

расшифровка по page fault через VEH

При включённом --veh все страницы секций PE отображаются как PAGE_NOACCESS. Когда программа пытается обратиться к странице, возникает исключение; векторизованный обработчик исключений расшифровывает только эту одну страницу и устанавливает корректную защиту. В фоне работает поток-сторож (watchdog), который повторно шифрует любую страницу, к которой не было обращений в течение 200 мс. В любой момент времени большая часть вашей программы остаётся зашифрованной в памяти, поэтому дампы памяти захватывают только то, к чему недавно обращались.

защита от дампа

4 наиболее критичных API (GetModuleHandleA, GetProcAddress, ExitProcess, VirtualAlloc) перенаправляются через функции-обёртки внутри стаба. После загрузки полезной нагрузки весь каталог импорта зануляется, чтобы дампы памяти не могли восстановить таблицу импорта.

Граф:

631688071-324a4b82-29fb-40cf-9b01-15687aba7cae-mh

лицензия

MIT

примечания

  • Многие функции не попали в readme — можете почитать код самостоятельно или заглянуть в changelog.md
  • это работает с большинством протестированных файлов; если что-то сломается на вашем, откройте issue, и я разберусь
  • предложения и идеи функций тоже можно оформлять через issues
  • если пользуетесь им — звёздочка очень помогает <3
  • следите за обновлениями в блоге: https://iamsopotatoe-coder.github.io/TinyLoad/#blog
  • да, антивирусы помечают упаковщики, это ожидаемо (сейчас 9 детектов на VirusTotal — любой файл, который вы упакуете, получит 9 детектов, содержимое не важно)
  • пожалуйста, не упаковывайте с его помощью вредоносное ПО — он создан для легитимных целей

Категории