![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Запись в Kernel32 под 9х
StAL © (2003-06-06 12:53:00)
Здравствуйте, ув. Мастера!
А конкретно, мне нужно подменить адрес в таблице экспорта Kernel32 под 9х
Жду ответа, заранее спасибо.
Digitman (2003-06-16 08:46:00) [1]
> StAL
Если не переход в Ring0, тогда остается только один вариант - использование VxDCall для изменения прав доступа к страницам ВАП выше $80000000.
см. Burmistroff (06.06.03 21:02)
код, касаемый VxDCall, фигурирующий по этой ссылке - Паскаль-вариант соотв.фрагмента BO2 (process_hop.cpp).
Burmistroff (2003-06-14 18:44:00) [2]
>StAL
Откуда же такая повышенная секретнось 0_o ?
StAL (2003-06-14 11:20:00) [3]
2Digitman Выслал на e-mail
Digitman (2003-06-09 10:38:00) [4]
> StAL
> на 9x он не работает
У меня нет под рукой Маздая, так что давай уже конкретно - что значит "не работает" ?
Если VirtualProtectEx() возвращает False, то что говорит GetLastError() ?
StAL (2003-06-07 14:53:00) [5]
Спасибо за ответы!!!
2Digitman
Я переделал Ваш пример с ToolHelp, но все-же на 9x он не работает (см. NightAngel (06.06.03 15:12))
2NightAngel
Digitman прислал мне такой пример, но я так и не понял, как произвести запись. Я вообще не очень уж знаком с Ring0.
2Burmistoff
Спасибо, пошел смотреть!
Burmistroff (2003-06-06 21:02:00) [6]
Пример:
http://maxcomputing.narod.ru/ahijack3.html
NightAngel (2003-06-06 18:24:00) [7]
> Игорь Шевченко ©
Век живи, век учись...
:)
> Digitman © (06.06.03 15:40)
Хочешь тем самым сказать, что и VirtualProtect(), выполненная в ВАП "своего" процесса, закончится с тем же успехом в части модификации прав доступа к страницам, спроецированным на kentel32 image ?
Я ничего не хочу сказать, это на самом деле так и есть.
Дж. Рихтер в своей книге "Programming Applications for Microsoft Windows" так поясняет эту ситуацию: "On Windows 98, the main Windows DLLs (Kernel32, AdvAPI32, User32, and GDI32) are protected in such a way that an application cannot overwrite their code pages. You can get around this by writing a virtual device driver (VxD)". В Win9x в регионе памяти >2Gb находятся модули ядра, объекты ядра и пользовательские объекты, доступные всем контекстам - проекции файлов.Документированный Windows API не предоставляет средств для внесения изменений в память >2Gb.
Digitman (2003-06-06 15:40:00) [8]
> NightAngel
Хочешь тем самым сказать, что и VirtualProtect(), выполненная в ВАП "своего" процесса, закончится с тем же успехом в части модификации прав доступа к страницам, спроецированным на kentel32 image ?
Игорь Шевченко (2003-06-06 15:24:00) [9]
NightAngel (06.06.03 15:12)
И впрямь...Век живи, век учись...Image Base у него Bxxx xxxx...
Игорь Шевченко (2003-06-06 15:17:00) [10]
NightAngel (06.06.03 15:12)
А что, в Windows 9x kernel32.dll загружается по адресу выше 2х GB ?
NightAngel (2003-06-06 15:12:00) [11]
> 1. определяешь месторазмещение директории экспорта в ВАП процесса, загрузившего этот модуль
2. изменяешь параметры защиты страниц, в диапазоны адресов которых входят интересующие тебя адреса (VirtualProtect[Ex]), разрешая запись в них
3. пиши-читай на здоровье !
Это не будет работать под Win9x, т.к. В Win9x, в отличие от NT платформ, память, начиная с 2Gb, спроецирована на все контексты, присутствующие в системе и не доступна для модификации. VirtualProtect[Ex]() или WriteProcessMemory() завершатся неудачно и записать что-то в Kernel32.dll не получится.
> Запись в Kernel32 под 9х
Не мучайтесь, найдите пример перехода в Ring0 под Win9x и пишите в таблицу экспортов Kernel"а, всё, что Вам нужно.
Digitman (2003-06-06 14:16:00) [12]
1. определяешь месторазмещение директории экспорта в ВАП процесса, загрузившего этот модуль
2. изменяешь параметры защиты страниц, в диапазоны адресов которых входят интересующие тебя адреса (VirtualProtect[Ex]), разрешая запись в них
3. пиши-читай на здоровье !