![]() |
eXeL@B —› Вопросы новичков —› Поменять флаги секции в EXE из вызываемой им DLL |
Посл.ответ | Сообщение |
|
Создано: 18 декабря 2012 02:40 · Личное сообщение · #1 Понимаю, что вопрос глупый и для решения задачи мне не хватает знания PE формата и ещё много чего, однако может кто подскажет. Есть ЕХЕ файл который вызывает мою длл. Если в нужной секции установить флажок разрешения записи, (патч одного байта по адресу $400247 c $60 на $E0) то в длл можно делать так: dword(pointer($406720)^):=$90909090; По некоторым соображениям не хочется менять EXE файл на диске. Конечно можно использовать связку OpenProcess/WriteProcessMemory и это работает для всех адресов нужной секции, однако не работает для адреса $400247 где располагается флаг секции. Хочется найти вариант как поменять на лету флаг записи, что бы далее пользоваться прямой записью dword(pointer($406720)^):=$90909090; ![]() |
|
Создано: 18 декабря 2012 05:13 · Поправил: SReg · Личное сообщение · #2 ToBad Code:
в аттаче работающий пример ![]() ![]() |
|
Создано: 18 декабря 2012 06:07 · Поправил: ToBad · Личное сообщение · #3 SReg - спасибо за пример! Код меняет флаг секции, только к сожалению это не помогает. Дальнейшая запись всё равно вызывает исключение, память не может быть записана... ![]() |
|
Создано: 18 декабря 2012 06:47 · Личное сообщение · #4 ToBad пишет: Дальнейшая запись всё равно вызывает исключение сурово ты написал там)) Вот пробуй... Code:
![]() |
|
Создано: 18 декабря 2012 10:08 · Личное сообщение · #5 После загрузки файла атрибуты секций уже никому не нужны, там что брось лезть, куда не нужно, и пытаться вылечить покойника. Либо делай руками VirtualProtect на всю секцию, что достаточно криво, но удовлетворит постановке задачи, что потом можно будет писать прямо. Либо меняй атрибуты только на время патча и потом возвращай обратно. ![]() |
|
Создано: 18 декабря 2012 15:58 · Поправил: ToBad · Личное сообщение · #6 SReg - в том то и дело, что конструкцию типа этой использовать не хотел: Code:
Archer пишет: Либо делай руками VirtualProtect на всю секцию, что достаточно криво, но удовлетворит постановке задачи, что потом можно будет писать прямо. Да, это то, что нужно. Просто пример SReg расширю на участок попадающий под патч, между двух VirtualProtect сделаю всё что нужно и будет работать! Всем спасибо за помощь! ![]() |
![]() |
eXeL@B —› Вопросы новичков —› Поменять флаги секции в EXE из вызываемой им DLL |
Эта тема закрыта. Ответы больше не принимаются. |