Сейчас на форуме: asfa (+7 невидимых)

 eXeL@B —› Вопросы новичков —› Можно ли сдвинуть весть исполнемый код?
Посл.ответ Сообщение

Ранг: 5.1 (гость)
Активность: 0.010
Статус: Участник

Создано: 08 июня 2010 18:27
· Личное сообщение · #1

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




Ранг: 533.6 (!), 232thx
Активность: 0.450
Статус: Uploader
retired

Создано: 08 июня 2010 18:32
· Личное сообщение · #2

а зачем сдвигать, а в конец дописать до такого не додумался, или прикрутить секцию новую отдельно для своего кода?

-----
Лучше быть одиноким, но свободным © $me




Ранг: 61.7 (постоянный), 12thx
Активность: 0.090.02
Статус: Участник

Создано: 08 июня 2010 18:46
· Личное сообщение · #3

PETools здесь в разделе скачать есть. пересоберет файло, размер секций тоже можешь.



Ранг: 5.1 (гость)
Активность: 0.010
Статус: Участник

Создано: 08 июня 2010 18:55
· Личное сообщение · #4

Там такая хитрая структура исполняемого файла, что у него "данные" хранятся в секции .text после таблицы импорта но ДО кода. Возникла необходимость увеличить секцию дата на величину 0xC00, соответсевнно весь код сдвинулся.
На сколько я понимаю теперь нужно сдвинуть все вызовы и указатели на константы...
Руками я это буду делать до глубокой старости. Сейчас я это вижу так:
После того как я всё сдвинул и привёл таблицу импорта в порядок, я открываю результурющий EXE в OllyDbg и иду построчно, обращая внимания на конструкции типа:
Code:
  1. PUSH _test.4188D0

и меняю прям в Olly на
Code:
  1. PUSH _test.4190D0

а ещё сдвинулась секция .data вместе с ней сдвинулся адресс в памяти куда она маппится и получается нужно сдвинуть все образения в адресное пространство этой секции на дельту. Ну по сути тоже смое что и исполняемым кодом.

Мммм? Может есть что? Анализатор какой? Который ХОТЯБЫ выдаст список чего меня и по каким адересам... Менялку то я напишу по списку... Всё что сейчас приходит в голову это тупо писать своё подобие дебаггера... Тут я ваще потерюсь ещё на долго.




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 08 июня 2010 18:56
· Личное сообщение · #5

Бред, без релоков не сдвинешь, забудь.



Ранг: 13.7 (новичок)
Активность: 0.020
Статус: Участник

Создано: 08 июня 2010 19:01
· Личное сообщение · #6

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



Ранг: 5.1 (гость)
Активность: 0.010
Статус: Участник

Создано: 08 июня 2010 19:05
· Личное сообщение · #7

а никак по готовому коду их не сделать? релоки эти...
Неужели такая невозможная задача?



Ранг: 13.7 (новичок)
Активность: 0.020
Статус: Участник

Создано: 08 июня 2010 19:11
· Личное сообщение · #8

"Возникла необходимость увеличить секцию дата на величину 0xC00" -- а это зачем делать? Новую секцию прикрутить и ссылку на данные подправить. Двигать весь код не имеет смысла.



Ранг: 5.1 (гость)
Активность: 0.010
Статус: Участник

Создано: 08 июня 2010 19:18
· Личное сообщение · #9

"Мы не ищем лёгких путей"
Думал может можно как...
Буду тогда выносить ЗА код.


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


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