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

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

. 1 . 2 . 3 . >>

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


Дата: Ноя 14, 2003 22:45:09

Хотелось бы выяснить, какие участки памяти при исполнении win32-программы удовлетворяют двум условиям:
1. Гарантированно доступны для записи в любой момент времени работы процесса
2. Не очень сильно изменяются во время работы программы.
Что нужно: записать несколько байт в какой либо участок памяти, а затем через несколько секунд их оттуда прочитать (точнее исполнить).
Была идея использовать участок PEB (так как его адрес всегда фиксирован), а также TEB для первого-второго потока (если известно, что программа имеет такое минимальное кол-во потоков).
Хотел бы услышать комментарии по поводу точного размещения PEB, TEB и их размеров, а также того, какой участок этих структур можно перезаписать безопасно?
Также возможна ли перезапись других участков?


Дата: Ноя 14, 2003 23:06:22

Писать нужно в адресное пространство своей программы, в конец секции,
там где есть для этого свободное место.


Дата: Ноя 15, 2003 00:20:16

Писать что? Как? Слов много, толку мало.

по поводу точного размещения PEB, TEB
Опять-таки, слов много, толку мало. Точный адрес TEB берется из fs:[0] - NT+. Точный размер TEB/PEB колеблется и для 2k/XP он различен - см. файлы из секции "Уголок NT+", что в инструментах.
Какой участок можно перезаписать безопасно - опять, блин. Структуры недокументированны! Откуда мы знаем к каким полям идет доступ, а к каким нет? Экспериментально проверяй. Смотри. Убери, к примеру, указатель на PEB и посмотри, что упадет. В таком ключе...


Дата: Ноя 15, 2003 00:21:36

Писать нужно в адресное пространство своей программы

Совершенно верно.

в конец секции

Эт-то как? Эт-то еще зачем? Откуда сие выдрал?


Дата: Ноя 15, 2003 00:25:19 · Поправил: Asterix

Эт-то как? Эт-то еще зачем? Откуда сие выдрал?

Что значит выдрал. Писать нужно в те нули которые называются "выравнивание" ;-).


Дата: Ноя 15, 2003 00:31:51

Asterix

А ЗАЧЕМ туда писать 8-()


Дата: Ноя 15, 2003 00:41:02

volodya

Я про чужую программу, а ты про что? А если мне в расчётах нужны
промежуточные данные? Я так dll'ку пакованную PECompact патчил ;-)


Дата: Ноя 15, 2003 00:45:56

Что-то мне поплохело. Ничего я не понял. Если мне нужна память - я запрашиваю ее у оси через VirtualAlloc - теперь у меня есть отмапленые странички виртуальной памяти на моем процессе - и я их использую. Все. А зачем что-то в собственные секции в памяти писать - это выше моего разумения. Согласен, если прога чужая - ну, ищи да пиши. А ЗАЧЕМ? Чтобы код свой внедрить, что ли? Ты это имеешь в виду?


Дата: Ноя 15, 2003 01:03:53

Что-то мне поплохело. Ничего я не понял. Если мне нужна память - я запрашиваю ее у оси через VirtualAlloc - теперь у меня есть отмапленые странички виртуальной памяти на моем процессе - и я их использую. Все. А зачем что-то в собственные секции в памяти писать - это выше моего разумения.

Это ты в своей программе, само собой понятно хозяин-барин.
Но в чужой..

А ЗАЧЕМ? Чтобы код свой внедрить, что ли? Ты это имеешь в виду?

Да нет я свой код и в HiEW впишу, а если нужно что-то посчитать
в рантайме и вписать куда-нибудь в "безопасное место" ;-),
а потом на это что-то из другого места проги будет ссылка.


Дата: Ноя 15, 2003 05:05:09

Asterix
Слушай, боюсь, и мне тоже непонятно :)

если нужно что-то посчитать
в рантайме и вписать куда-нибудь в "безопасное место" ;-),
а потом на это что-то из другого места проги будет ссылка"


Какая ссылка, откуда, если прога ЧУЖАЯ ? Однако если ты будешь производить подсчет в рантайме - то у тебя как минимум будет свой поток, а может, и процесс. И там есть безопасное место - стек. Отдает бредятинкой, честное слово...


Дата: Ноя 15, 2003 06:15:15

[ Grenader: Отдает бредятинкой, честное слово...]

Ну, во-первых, не хамить старшим :-)
Во-вторых, когда речь идёт о чужой проге то в данном случае я подразумеваю
взлом или исправление багов, это кому как нравится называть.
В-третьих я говорил про рантайм патч запакованной dll'ки, пакером с
элементами полиморфа,который ясно имеет некоторые особенности
в отличие от exe ;-)
В-четвёртых, лень объяснять несведущим :-)


Дата: Ноя 15, 2003 06:27:09

Asterix

Просто ты не упоминал "про рантайм патч запакованной dll'ки, пакером с элементами полиморфа" - отсюда и вывод про бредятинку. Народ у нас телепатии ведь не обучен :)
Ну, и про четвертый пункт - если ты хочешь, что бы тебя поняли - то придется объяснить. Иначе - "Эт-то как? Эт-то еще зачем? "


Дата: Ноя 15, 2003 06:31:12

Эээээ, я упоминал про dll'ку пакованную PECompact'ом, этого достаточно.
Объяснять тут нечего, кто сталкивался тот знает ;-)


Дата: Ноя 15, 2003 06:31:18

einstein
Тут сплошной оффтопик пошел - но вот мысли по поводу памяти: переменные окружения - может, здесь копнуть? Изменяться в процессе выполнения программы не должно, ерунды там тоже прилично...


Дата: Ноя 15, 2003 06:35:15

Asterix
Угу, а кто нет - значит, срочно учить, что есть PECompact? :) Ладно, ведь из-за ерудны-то спорим. Теперь все выяснили. Да?

. 1 . 2 . 3 . >>


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