> интересно, а как эгзе-пакеры распаковывают и запускают > прогу?, вроде там тоже должен быть загрузчик начальный
Ехе-пакеры работают так:
1. ОС грузит экзешник в память.
2. Точка запуска у него (екзешника) не стандартная, 0х400000, а где-нибудь в старших адресах.
3. Запускается встроенный распаковщик, он распаковывает екзешник в нижние адреса (обычно начиная с 0х400000).
4. В соответствии с таблицей релокейшенов меняет в памяти адреса
5. Потом делает джамп на точку старта езешника.
В твоем случае основная трудность будет в том, что буфер под загружаемый файл выделяется не в cs сегменте, а в ds сегменте. А в защищенном режиме запуск кода возможен только из cs сегмента. Так что тебе надо менять параметры дескриптора сегмента памяти ds, чтобы разрешить выполнение кода в нем.
|