Я написал код упаковщика PE в C ++, который загружает исполняемый файл в его пространство процессов, исправляет IAT и перемещения, а затем вызывает точку входа.
Моя проблема в том, что .NET не поддерживается: я искал формат .NET PE, и это просто 32-битный исполняемый файл с точкой входа, установленной на импортированную функцию (_CorExeMain).
Если я это называю, Windows просто выскакивает ошибка, которая говорит мне, что у меня не установлен .NET.
Я также читал, что исполняемые файлы .NET PE имеют специальный COM-заголовок в DataDirectory, но я не знаю, как с этим справиться.
Я надеюсь, что кто-то может мне помочь.
заранее спасибо
Очевидно, что ваша идея не работает как есть для .Net.
Ваш «упакованный» исполняемый файл — это просто собственный исполняемый файл, чей код — распаковщик, а данные — сжатый реальный исполняемый файл. При запуске Windows ожидает и получает собственный код.
Для исполняемых файлов .Net вы, очевидно, должны сделать то же самое: написать исполняемый файл .Net, чей код — распаковщик, а данные — сжатый байт-код .Net.
Других решений пока нет …