Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Ассемблер? Это просто! Учимся программировать


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Assembler (Ассемблер)

Выпуск № 528
от 27.08.2006, 03:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 335, Экспертов: 25
В номере:Вопросов: 1, Ответов: 3


Вопрос № 52811: Добрый день эксперты. Такой вот вопрос. стоит задача модифицировать системную область памяти (в частности которая занята отображенным "оригиналом" kernel32.dll) так вот получаю я адрес функции к примеру Beep() находится он в...

Вопрос № 52.811
Добрый день эксперты.
Такой вот вопрос.
стоит задача модифицировать системную область памяти (в частности которая занята отображенным "оригиналом" kernel32.dll)
так вот получаю я адрес функции к примеру Beep()
находится он в 00001b:XXXXXXXX
оригинал который проицируется на пользовательский процесс, находится по адресу
000010:XXXXXXXX
так вот вопрос как вот этот виртуальный адрес XXXXXXXX перевести в физический и внести по нему изменения ?
(данные выдраны из SoftIce но естественно очевидно что нужно использовать функцию преобразования).
PS ядерная функция преобразования виртуального в физический (что-то типа GetPhisicalAdress) - не производит по какой-то причине этого : (((
почему не пойму.
Заранее благодарен за ответ.
Отправлен: 21.08.2006, 22:19
Вопрос задал: Dez (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Ковеленов Александр
Здравствуйте, Dez!
Ядро Windows работает в нулевом кольце защиты, поэтому любые манипуляции с системной областью памяти явно не понравятся Windows.
Здесь нужно писать нечто вроде вируса, который, используя дыры в системе защиты выйдет на нулевой уровень.
Ответ отправил: Ковеленов Александр (статус: 2-ой класс)
Ответ отправлен: 22.08.2006, 09:05
Оценка за ответ: 2
Комментарий оценки:
сиё ведомо.
самый простой способ это запуск драйвера коий естественно и работает в нулевом кольце. Для особых извращенцев существует способ повышения привелегий через махинации с LDT
то что системе это не понравится - это её личное дело.
вопрос был другой - как имея виртуальный адрес - внести изменения в физический.
А собственно что такое "защита WIndows" - ниразу не видел ; )))

Отвечает: Wild_one
Здравствуйте, Dez!
В любом случае Винда не позовлить просто так манипулировать системной областью. Можно отредоктировать так: делаем копию dll-файла c другим именем. Редактируем hex редактором или например OllyDbg. Здесь нужную процедуру можно поискать по последовательности байт, подсмотрев оригинальной dll-ке. Через MS-DOS заменяем измененный файл текущим.
Ответ отправил: Wild_one (статус: 2-ой класс)
Ответ отправлен: 22.08.2006, 11:02
Оценка за ответ: 3
Комментарий оценки:
А что будешь делать с контрольными суммами системных библиотек ?
к тому же вопрос не об этом.

Отвечает: Волков Павел Юрьевич
Здравствуйте, Dez!

raw address = virtual address - ImageBase - VirtualAddress + PointerToRawData

Значения ImageBase, VA и PointerToRawData берем через нахождение начала файла (IMAGE_DOS_SIGNATURE) и дальнего путешествия по заголовку.

Удачи.
---------
Век живи, век учись.
Ответ отправил: Волков Павел Юрьевич (статус: 6-ой класс)
Ответ отправлен: 22.08.2006, 18:03
Оценка за ответ: 3
Комментарий оценки:
толи я неясно выяснился толи одно из двух
решение оказалось примерно таким (пример из рабочего кода, выполняющегося в ring 0):
push edx
mov eax, cr0
mov CR0Reg,eax
and eax,0xFFFEFFFF // сбросить WP bit
mov cr0, eax
//
mov eax, aa //aa-variable
mov edx,[eax+4]
mov eax,[eax]
mov [eax], 0x68
mov [eax+1],edx
mov di,0xc3
mov [eax+5],di
//mov [eax],0xc3
mov eax, CR0Reg
mov cr0, eax // востановить содержимое CR0
sti // разрешаем прерывания
pop edx


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.35 от 27.07.2006
Яндекс Rambler's Top100

В избранное