К сожалению, переход к точке входа вашего кода - это наименьшее количество ваших забот.Файл Portable Executable (PE) (формат файлов, используемый для файлов EXE и DLL в Windows) - это не то, что вы можете просто загрузить в один блок памяти и затем запустить.Ваш пользовательский загрузчик PE должен позаботиться о следующих заданиях:
Загрузка различных разделов кода и данных в файле PE в отдельные блоки памяти.
Разрешение зависимостей из таблицы импорта для загрузки библиотек DLL, от которых зависит ваш EXE-файл.
Выполнение перемещений.
Получение всехПравильные детали, вероятно, были бы довольно сложной работой.Я бы посоветовал вам найти инструмент, который вы можете купить и который выполняет такого рода шифрование EXE.
Редактировать: Google быстро предлагает вам взглянуть на следующее:
EXECryptor (фирменный)
RLPack (фирменный)
UPX (GPL) Этот, насколько я понимаю, выполняет сжатие, но вы можете использовать Источник для добавления шифрования (если GPL совместим с вашими потребностями).
Должно быть, таких инструментов будет больше - это всего лишь результат быстрого поиска.
Еще одно редактирование:
В журнале MSDN опубликована статья Мэтта Питрека под названием «В-Глубокий анализ формата исполняемых файлов Win32 "( Часть 1 , Часть 2 ).Он содержит много информации о формате файла PE, которая должна быть полезной для вас.Один интересный момент: последние версии компоновщика Microsoft, по-видимому, по умолчанию исключают базовые перемещения для EXE-файлов.Вы, вероятно, захотите дать указание компоновщику вставить их обратно, поскольку вполне вероятно, что ваш EXE-файл оболочки уже загружен по предпочтительному адресу загрузки вашего полезного файла EXE.В качестве альтернативы, вы можете попытаться дать вашему EXE-обертке экзотический предпочтительный адрес загрузки, который, как мы надеемся, не будет мешать полезной нагрузке EXE.
Я также нашел страницу , в которой обсуждается элементарный компрессор PE-файлов.Хотя он не является полностью общим и, вероятно, потребует дополнительной работы, прежде чем вы сможете его использовать.