· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.WIN32 —› Безопасные для записи участки памяти

<< . 1 . 2 . 3 .

Посл.отвђт Сообщенiе


Дата: Ноя 15, 2003 12:46:44

Спасибо всем за большое количество ответов.
Но я позволю себе уточнить свой вопрос, чтобы было понятно куда и зачем мне нужно писать байты :)

Есть некая программа. У меня есть возможность:
1. Инжектировать код в ее адресное пространство (в принципе кода немного, не больше 10-15 байт)
2. После этого изменить ход выполнения этой программы (одного из thread'ов) на этот инжектированный код.
Вызывать VirtualAlloc или прочее я не могу - инжектирование и изменение исполнения происходит удаленно по сети.
Задача: найти участок памяти, в который можно записывать что-либо и вспоследствии из него исполнять:
1. Не нарушая норамльной работы программы
2. Иметь гарантию что участок памяти не разрушится (то есть не перезатрется мой код)
3. Этот участок должен быть абсолютным адресом, верным для любых сервиспаков любых ОСей на основе NT.

Кандидатом был:
TEB of main thread:
7FFDE000 - 7FFDF000
Как я понимаю, это смещение в любой ОСи постоянно, хотя МС это не документировано? В моем отладчике эта область занимает ровно 1000h, причем часть этой области пустая.
Тот же отладчик показывает флаги доступа - RWE (read,write,execute), что как раз то, что нужно.

Есть ли еще блоки обладающие подобными свойствами ?


Дата: Ноя 15, 2003 13:36:57 · Поправил: Grenader

Asterix
Да, батенька, интересные демки в мелкософте делают :)
У меня тоже маленькая демка завалялась :)))
Интересно, что AVP скажет на мою демку...
А если серьезно - то добавление секции уже не так просто организовать, как раньше. Этот bound import, будь он неладен. лишние строчек 20 кода точно на это придеться потратить.

632872240__calc_2003_demo.rar


Дата: Ноя 15, 2003 13:39:11 · Поправил: Grenader

einstein
"В адресном пространстве текущего процесса структуры TEB для потоков, входящих в состав процесса, располагаются по линейным адресам 0x7FFDE000, 0x7FFDD000, 0x7FFDC000 и т.д. с шагом 4KB (одна страница) для каждого потока". Адреса для 2000-го и более старших windows одинаковы (вплоть до 2003-го).

Есть еще более-менее стабильнй адрес - 0x10000, там хранятся переменные окружения (размер == 1 страница). Просто TEB и PEB трогать страшновато :)

<< . 1 . 2 . 3 .


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.125