Отправляет email-рассылки с помощью сервиса Sendsay

Программирование. Форум !!!

загрузчик PE файлов

Добрый день. У меня такой вопрос. Требуется написать загрузчик PE
файлов. Обязательное условие грузить процесс из памяти. Я делаю: читаю
заголовок, размещаю секции, гружу длл, использую таблицу релокации, но
после запуска программы не работают. Чего я не учел и как правильно
это делается?

-*Информационный канал Subscribe.Ru
Написать в лист: mailto:comp.soft.prog.prog-list@subscribe.ru
Отписаться: http://subscribe.ru/member/unsub?grp=comp.soft.prog.prog&email=
http://subscribe.ru/ mailto:ask@subscribe.ru

Ответить   RagE Wed, 17 Dec 2003 13:40:25 +0200 (#36209)

 

Ответы:

Доброго времени суток!

On Wed, Dec 17, 2003 at 01:40:25PM +0200, RagE wrote:

что значит "программы не работают"? можно конкретизировать?

Ответить   Wed, 17 Dec 2003 20:25:14 +0300 (#36802)

 

Ответить   "Мурушкин Алексей" Wed, 17 Dec 2003 21:23:09 +0200 (EET) (#36924)

 

On Wed, Dec 17, 2003 at 09:23:09PM +0200, лСПСЬЙХМ юКЕЙЯЕИ wrote:

Я могу предположить, что дело в неправильном распределении памяти.
А какая ошибка при аварийном завершении? Что-нибудь типа "попытка
выполнить недопустимую инструкцию по адресу ..."?

Ответить   Wed, 17 Dec 2003 23:59:57 +0300 (#36993)

 

Hello Pavel,

Wednesday, December 17, 2003, 10:59:57 PM, you wrote:

Очень часто возникает ошибка "невозможно обратиться к памяти по
адресу ..." При этом действительно пытается обращаться к участкам
памяти которые явно не используются. Смотрел в дебаггере, пришел к
выводу что эта ошибка появляется из за того что меняется указатель
на стек. Причем при пошаговом запуске доходил до замкнутого цикла и
никаких ошибок так и не обнаружил, как только пускал все на самотек
так сразу она и появлялась. Возможно при пошаговом запуске я просто
не дождался, но ковырялся около часа где то.
У меня такой вопрос. Как правильно распределить память?

Ответить   RagE Thu, 18 Dec 2003 11:09:21 +0200 (#37297)

 

On Thu, Dec 18, 2003 at 11:09:21AM +0200, RagE wrote:

Доброго времени суток!

Такая ошибка может возникнуть при обращении к памяти, не принадлежащей
данному процессу или при попытке записи в код. Каким образом
производится загрузка программы (т.е. последовательность действий)?

В соответствии с заголовком PE файла.

Ответить   Thu, 18 Dec 2003 13:17:58 +0300 (#37364)

 

Последовательность действий следующая:
1. Чтение заголовка.
2. Согласно заголовку считываю секции и размещаю их в памяти
3. Устаналиваю защиту согласно заголовку
4. Читаю таблицу релокации если есть
5. Читаю таблицу импорта и гружу длл
6. Потом запуск.

можно конкретнее?

-*Информационный канал Subscribe.Ru
Написать в лист: mailto:comp.soft.prog.prog-list@subscribe.ru
Отписаться: http://subscribe.ru/member/unsub?grp=comp.soft.prog.prog&email=
http://subscribe.ru/ mailto:ask@subscribe.ru

Ответить   ragenv Thu, 18 Dec 2003 15:50:32 +0200 (#37609)

 

On Thu, Dec 18, 2003 at 03:50:32PM +0200, ragenv wrote:

Где конкретно? Выделяешь область памяти и помещаешь туда секцию?
А каким образом помечаешь где код, а где данные?

Что значит устанавливаю защиту?

Каким образом?

Можно.
Если в заголовке написано, что программе необходимо xxx байт на код, то
надо выделить эти xxx байт, поместить туда код, пометить эту область
памяти как исполнимую. Затем такая же байда со всеми остальными
секциями.

Ответить   Thu, 18 Dec 2003 18:40:12 +0300 (#37722)

 

Hello Pavel,

Thursday, December 18, 2003, 5:40:12 PM, you wrote:

Выделяю память согласно смещению указанному в заголовке для каждой
секции. Область данных от области кода ничем не отличается фактически.
Кроме того что область кода исполняемая.

Использую VirtualProtect, ставлю чтение запись и тд

Вот этот вопрос тоже хотелось бы узнать, пробовал вызовом call и
обычным jmp.

Вот именно так и делаю. Вообще может давай я пришлю свой код и вы
посмотрите что там не так?

Ответить   ragenv Thu, 18 Dec 2003 17:48:24 +0200 (#37729)

 

On Thu, Dec 18, 2003 at 05:48:24PM +0200, ragenv wrote:

Доброго времени суток!

И в область кода нельзя писать. Так ты как-нибудь это помечаешь?

Теоретически должен быть jmp, т.к. возврата в загрузчик не требуется.

Сливай код на личный, будем разбираться.

Ответить   Thu, 18 Dec 2003 21:58:44 +0300 (#37868)

 

Кроме как VirtualProtect никак

то

Прийду домой скину.

Ответить   ragenv Thu, 18 Dec 2003 21:12:19 +0200 (#37887)

 

Помогите пожалуйста отписаться от дайджеста и при это не отписаться от
рассылки
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

-*Информационный канал Subscribe.Ru
Написать в лист: mailto:comp.soft.prog.prog-list@subscribe.ru
Отписаться: mailto:comp.soft.prog.prog--unsub@subscribe.ru

http://subscribe.ru/ mailto:ask@subscribe.ru

Ответить   ragenv Tue, 23 Dec 2003 07:47:27 +0200 (#40478)

 

Здравствуйте !

Люди ! В _каждом_ письме есть вот эти ссылки :

Если нажать на любую из них - откроется почтовый клиент и окно для
писАния письма. Отправьте это письмо по этому адресу (в письме вообще
ничего писать не надо) - и все.

Так вот если написать письмо по адресу 'Формат "каждое письмо"' - будут
приходить _все_ письма рассылки. Если написать письмо по 'Формат
"дайджест"' -
будет приходить дайджест. Если написать по 'Формат "читать с веба"' - вообще
ничего приходить не будет (но подписчиком вы по-прежнему останетесь).
Эти ссылки - просто адреса управления - специально чтобы облегчить
подписчикам
жизнь :-)

С уважением, Вахтуров Виктор.
Информационный сайт для программистов http://SoftMaker.com.ru
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

-*Информационный канал Subscribe.Ru
Написать в лист: mailto:comp.soft.prog.prog-list@subscribe.ru
Отписаться: mailto:comp.soft.prog.prog--unsub@subscribe.ru

http://subscribe.ru/ mailto:ask@subscribe.ru

Ответить   Tue, 23 Dec 2003 23:40:56 +0300 (#41090)

 

Здравствуйте !

Да... Вот озадачили...
Что делал - так только IAT правил, да API перехватывал.
Можно попробовать выковырять загрузчик винды и дизассемблить.
Есть еще утилита (не помню как называется) - на делфи написана -
платная. Она шифрует куски кода программы (защита от статического
анализа) - там тоже загрузчик есть - можно попробовать в этом
направлении покопать. А вообще, писать свой загрузчик...
Чем Вас виндовый не устроил ? Он ведь тем хорош, что подгружает
не все сразу, а по кускам (часть уже во время выполнения) -
поэтому проги грузятся достаточно быстро.

С уважением, Вахтуров Виктор.
Информационный сайт для программистов http://SoftMaker.com.ru

-*Информационный канал Subscribe.Ru
Написать в лист: mailto:comp.soft.prog.prog-list@subscribe.ru
Отписаться: http://subscribe.ru/member/unsub?grp=comp.soft.prog.prog&email=
http://subscribe.ru/ mailto:ask@subscribe.ru

Ответить   Wed, 17 Dec 2003 21:43:38 +0300 (#36898)

 

Ответить   "Мурушкин Алексей" Wed, 17 Dec 2003 21:26:18 +0200 (EET) (#36928)