Просматривая пример FreeMan'a http://www.wasm.ru/article.php?article=memfile не могу понять, зачем он использует стаб(базонезависимый), веть можно и без него разложить в памяти весь РЕ-файл и прыгнуть на его ЕР. Я ошибаюсь?
Пречем тут релоки? Я мыслю так: Выделить память, разложить в ней все секции, востановить ипорт, и передать управление на точку входа. а Фримен делает все эти операции в стабе, который скаопировал в выделеную память вместе с файлом
Gonzzik У нас загружен свой собственный файл, и мы его выгружаем. Если мы выгрузим свой файл, то вса равно надо выполнять код загрузки второго файла. Код загрузчика переносим в отдельное место. Чтобы его выполнить нужен базонезависимый стиль кода.
так а зачем его выгружать, зпутить то что нам надо а потом уж выгрузить.. или вообще продолжать работать, а?
Gonzzik Ну дык дело в том, что большинство EXE грузяться по одному и тому же базовому адресу. И новый надо загрузить скорее всего по тому адресу по которому находиться текущий EXE. Если по другой базе, то нужны релоки, которых почти нигде нет. Т.о. мы выгружаем старый и загружаем на его место новый.