Сейчас на форуме: _MBK_, ut2004, vsv1 (+6 невидимых)

 eXeL@B —› Вопросы новичков —› Пишу Loader, появились вопросы.
<< . 1 . 2 .
Посл.ответ Сообщение

Ранг: 33.6 (посетитель)
Активность: 0.040
Статус: Участник

Создано: 28 ноября 2006 15:28
· Личное сообщение · #1

Пишу первый раз лоадер поэтому вопросы такие:

1. Может ли такое быть что бы на другом компе VA адресс в процессе по которому я вношу изменения будет другим?

2. Что делать если память процесса куда надо внести изменения запротекчена?



Ранг: 162.2 (ветеран)
Активность: 0.090
Статус: Участник

Создано: 23 декабря 2006 01:58
· Личное сообщение · #2

sliderZ
Чтобы понять что происходит проделай следующее. Создай 2 dll-ки с одинаковыми адресами загрузки. Загрузи их и посмотри, где они будут находиться. И PE_Kill пишет:
Может ты наконец почитаешь какую нибудь инфу?
Ключевое слово релоки.




Ранг: 240.5 (наставник)
Активность: 0.190
Статус: Участник
Author of ACKiller

Создано: 23 декабря 2006 03:04
· Личное сообщение · #3

sliderZ
Мда.. действительно запутанно звучит Тебе сейчас важно то, что в разных системах у тебя эти библы будут грузиться по разным адресам.

http://www.rsdn.ru/article/baseserv/pe_coff.xml http://www.rsdn.ru/article/baseserv/pe_coff.xml - Секция .reloc



Ранг: 2.4 (гость)
Активность: 0=0
Статус: Участник

Создано: 23 декабря 2006 04:39
· Личное сообщение · #4

Простите, что вклиниваюсь не по теме. По поводу релоков хотел спросить. Где бы почитать необходимые действия по вставке пары своих релоков (записей) в таблицу перемещаемых элементов? Сам по-своему вставил, но прога не хочет запускаться, пишет, что мол ошибка инициализации. Если вкратце, то дела так обстоят. Есть секция .reloc, в ней где-то посередине на некой странице нужно добавить 2 записи (4 байта). Я знаю какие и где. Нашёл страницу, добавил 4 байта (2 записи). Исправил в заголовке SizeOfBlock. В начале файла поправил "истинный" размер секции (VirtualSize в union'е IMAGE_SECTION_HEADER), убрал лишние 4 байта из секции за счёт выравнивающих байтов. На этом правку закончил. И эта байда не хочет запускаться. Когда я просто даже пару нулей добавляю и проделываю все те же операции, то всё равно не инициализируется (вылетает). Надо ещё отметить, что код, в котором есть абсолютные адреса я дописывал сам к сегменту кода. Я пробовал плагин к PETools, который релоки переделывает, но мне не нравится как он это делает. Дело в том, что у меня в секции релоков таблица экспорта находится (тоже я её туда всунул) и плагин, вместо того, чтобы использовать свободное от выравнивания место создал ещё одну секцию .reloc (в смысле названия), увеличил размер файла, а старую секцию "обнулил". Две секции с названием .reloc смотрятся не аппетитно. Плагин нашёл правильные релоки (которые должны были появиться после дописывания моего кода), молодец.
Кто что посоветует. Давайте мат часть. Буду читать.




Ранг: 240.5 (наставник)
Активность: 0.190
Статус: Участник
Author of ACKiller

Создано: 23 декабря 2006 04:49
· Личное сообщение · #5

uni
Матчасть на васме - -->Формат исполняемого файла ОС Windows<-- http://wasm.ru/article.php?article=green2red02



Ранг: 2.4 (гость)
Активность: 0=0
Статус: Участник

Создано: 23 декабря 2006 04:54
· Личное сообщение · #6

Да, нее. Это-то я знаю. Я свой pe-viewer использую, где и смотрю секцию базовых поправок. Уж туда можно не отсылать, раз я знаю как их смотреть. Это дело не хитрое. Меня больше беспокоит добавление пары записей где посмотреть. Что нужно поменять, кроме размера поля SizeOfBlock. Почему работающий файл (dll) при добавлении простых 00 00 и изменении поля размера уже не грузится?


<< . 1 . 2 .
 eXeL@B —› Вопросы новичков —› Пишу Loader, появились вопросы.
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати