Exepack.NET 0.02 alpha
Posted in Программирование, Программы on Январь 25th, 2010 by yallie – 2 Comments
Не прошло и года, как я доделал Windows-версию упаковщика Exepack.NET. Правда, помимо интерфейса WinForms тут добавлена еще целая куча разных улучшений.
Консольную и GUI-версии программы вместе с исходниками можно взять на сайте проекта. Среди прочего в исходниках лежит и концептуальная версия (минимальный скелет программы без каких-либо наворотов), по которой можно разобраться, как все это работает. Концептуальная версия описана в нескольких прошлых постах: часть 1, часть 2, часть 3.
Системные требования:
- .NET Framework версии 2.0 или выше (используется DeflateStream)
- Windows XP или выше (используются системные процедуры для загрузки ресурсов)
Новые возможности версии 0.02 alpha:
- Исполняемый файл генерируется с помощью Reflection.Emit
- Ресурсы иконок и VersionInfo копируются из исходного файла
- В Windows-версии можно добавлять в список дополнительные сборки для упаковки в тот же исполняемый файл
- Добавлена защита от дизассемблирования Red Gate .NET Reflector-ом
- Ну и, разумеется, добавлены новые исправлены старые ошибки.
Справа — скриншот Рефлектора, который пытается декомпилировать упакованный файл. Попытка декомпилировать в C# (и любой другой высокоуровневый язык) приводит к ошибке. Дизассемблирование в IL, разумеется, работает, как и ILDasm (любую программу, которая загружается и запускается под .NET Framework, можно дизассемблировать в IL-код).
P.S. Стоит иметь в виду, что это по-прежнему альфа-версия. Любое использование исключительно на свой страх и риск. Замечания об ошибках и неполадках приветствуются.
С загрузчиком все понятно, осталось сделать сам упаковщик. Задача упаковщика в двух словах такова: определить список файлов, упаковать их, скомпилировать загрузчик и приклеить к нему упакованные файлы в виде ресурсов. Пока я писал загрузчик, мне нужно было делать это вручную, теперь же моя задача это автоматизировать.
