PE header — Новый раздел — Как рассчитать адрес OEP в памяти?

Мне просто удалось добавить раздел и некоторый код в pe-файл (в данном случае мой proxy.exe) в Windows 10. Я также изменил точку входа на начало моего нового раздела. Когда я запускаю пропатченный .exe, моя заглушка вызывается, и я слышу высокочастотный звуковой сигнал (сначала я проверил звуковой сигнал), пока все хорошо.

Но теперь я хочу вернуться в OEP. Но Как я могу рассчитать адрес, который мой OEP будет иметь в памяти?
Я думал об этой проблеме, и я придумал? Решение ?:

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

Будет ли это работать или я ошибся? Есть ли другой, возможно, более простой способ? А как насчет DLL, есть ли разница для всей процедуры?

http://i.imgur.com/tpUH8x4.png <- Изображение окурка

Большое спасибо заранее! 😉

0

Решение

С OEP я предполагаю, что вы подразумеваете исправление IMAGE_OPTIONAL_HEADER. AddressOfEntryPoint.

Хорошо, если я правильно понял, вы возьмете IP -> вычтите смещение с ожидаемым RVA (связанным виртуальным адресом), чтобы получить загруженный адрес модуля, и добавите его в RVA OEP, чтобы получить реальный адрес точка входа.
Если вы делаете математику правильно, это должно сработать.

У меня нет привилегий комментирования, но я думаю, что это должно быть комментарием, а не ответом, поскольку я не пробовал именно это, но это предложение, которое похоже на то, что компилятор сделает для двоичного файла.

OEP — это RVA, во время инъекции у вас есть ORIG_RVA и injected_RVA, которые вы заменили. В свою логику впрыска просто добавь

смещение: нажмите на ориг.

Затем для смещения добавьте запись перемещения в таблицу перемещения PE. Загрузчик сделает все остальное.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector