|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
14.05.2009, 04:03 | #1 |
somewhere else
Участник клуба
Регистрация: 17.07.2008
Сообщений: 1,409
|
Адреса для секций
Как можно принудительно, выделить в секции какой то объем адресного пространства, не увеличивая размер exe? Скажем мне нужно между секцией данных и кода разместить еще одну свою секцию размером 10000h байт.
Ассемблер FASM.
"Тяжело в учении, легко в бою" - А.В. Суворов
|
14.05.2009, 05:40 | #2 |
equ asm
Участник клуба
Регистрация: 02.05.2009
Сообщений: 1,605
|
Может так :
Код:
Какой вопрос - такой ответ. Не забываем пользоваться поиском, гуглом.
Помощь в выполнении работ по ассемблеру ICQ:2725322O4 Последний раз редактировалось Goodwin98; 15.05.2009 в 05:23. |
14.05.2009, 09:45 | #3 |
Форумчанин
Регистрация: 02.04.2008
Сообщений: 358
|
под что пишем DOS?
изменить размер сегмента после загрузки данные перенести в конец, доступ к данным по смещению +10000h
неплохо пишу на ассемблере для 80х86
icq: 3(один)7748666 mail: airyashov(а)inbox.ru |
14.05.2009, 12:55 | #4 |
я получил эту роль
Старожил
Регистрация: 25.05.2007
Сообщений: 3,694
|
Под виндой - ручками увеличить значение VirtualSize - после загрузки в память будет место, размер экзешника не изменится. Секции неинициализированных данных тоже имеют нулевой размер в файле
пыщь
|
14.05.2009, 21:54 | #5 |
Форумчанин
Регистрация: 15.07.2008
Сообщений: 615
|
Goodwin98, JTG вы правильно советуете, но по-моему эти способы увеличивают размер exe. Можно воспользоваться функцией
Код:
push 4 - это атрибут защиты новой секции push 1000 -способ выделения памяти push 10000 -размер секции равен 10000h байт push 123000- начиная с этого адреса, будет располагаться секция call VirtualAlloc- вызов ф-ии, создающей секцию и нужно завершить джампом к началу программы(в основной код). Вот после этого и создается новая секция с адреса 123000
xor eax, eax
xchg [eax], eax |
14.05.2009, 22:16 | #6 | |
equ asm
Участник клуба
Регистрация: 02.05.2009
Сообщений: 1,605
|
Цитата:
Насчет VirtualAlloc. Во-первых это все же телодвижения, а во-вторых иногда случается, что нужные аддреса кем-то заняты.
Какой вопрос - такой ответ. Не забываем пользоваться поиском, гуглом.
Помощь в выполнении работ по ассемблеру ICQ:2725322O4 Последний раз редактировалось Goodwin98; 14.05.2009 в 22:19. |
|
14.05.2009, 22:28 | #7 | ||
Форумчанин
Регистрация: 15.07.2008
Сообщений: 615
|
Цитата:
Цитата:
xor eax, eax
xchg [eax], eax |
||
14.05.2009, 22:36 | #8 | ||
equ asm
Участник клуба
Регистрация: 02.05.2009
Сообщений: 1,605
|
Цитата:
Цитата:
|
||
15.05.2009, 05:23 | #9 | ||
Форумчанин
Регистрация: 07.04.2009
Сообщений: 117
|
Цитата:
1) Исправить ImageSize 2) Сдвинуть все далее идущие секции (изменив их RVA, при этом соблюдая кратность выравнивания) на размер выделяемой памяти, при этом не забыв: a) Исправить поля в DataDirectoryTable b) Исправить таблицу релокаций с) Исправить все инструкции (!), ссылающиеся в их часть адресного пространства и вообще заново (ручками, или другими средствами) перелинковать прогу. d) Исправить таблицу экспорта и исчо (страшно представить) кучу чего нужно будет исправить, прежде чем прога хотя бы сможет нормально загрузиться. В этом плане, VirtualAlloc выглядит очень даже симпатично. ЗЫ: Это если речь о откмпилированном ехешнике. Цитата:
Copyright © qpokyc (qpy[the dog]bk.ru), 2008-2009 г.
Последний раз редактировалось qpokyc; 15.05.2009 в 05:34. |
||
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Установка IP адреса | Raivolo | Работа с сетью в Delphi | 11 | 11.02.2009 18:03 |
абсолютные адреса | kano | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 2 | 01.07.2008 20:49 |
Смена IP-адреса | Македонский | Работа с сетью в Delphi | 13 | 06.02.2008 19:02 |
2 одинаковых Ip адреса | Alar | Работа с сетью в Delphi | 12 | 24.12.2006 10:21 |