Сейчас на форуме: UniSoft, bartolomeo (+6 невидимых) |
eXeL@B —› Программирование —› Разбор драйвера |
Посл.ответ | Сообщение |
|
Создано: 25 января 2011 16:10 · Личное сообщение · #1 Исследумый драйвер перехватывает в системе ряд вызовов (сам перехват уже разобран), и делает это по команде получаемой из user-mode (по коду видно создание девайса и символической ссылки). Очевидно, что обработка этой команды идёт в обработчике IRP_MJ_DEVICE_CONTROL. Вот его установка (код выкладываю в виде псевдо-кода, чтобы был более понятным и ёмким): Code:
А вот сорс этой самой функции-обработчика: Code:
Вопрос заключается вот в чём. Вся нужная информация (IoControlCode, буффер с командой из user-mode) находится в структуре Irp. Её разбор происходит на выделенных строчках. Описание PIRP структуры я не нашёл, поэтому не могу понять какие значения из этой структуры оказываются в переменных v6, v3, v4, v2. Сам я в низко-уровненом программирование не особо шарю.. просьба подсказать какие элементы структуры Irp оказываются в соответствующих регистрах в выше-описанном коде. |
|
Создано: 25 января 2011 16:42 · Личное сообщение · #2 |
|
Создано: 25 января 2011 16:44 · Личное сообщение · #3 Работаешь видимо в IDAе по листингу. View-->Open subviews-->Type libraries Shift+F11 и добавляешь в базу NTDDK если еще не добавлена. View-->Open subviews-->Structures Shift+F9 и создаешь структуру с именем _IRP и по ней уже смотришь смещения (только в листинге десятичные, а в ИДЕ шестнадцатиричные) таким образом v6 = *(_DWORD *)(Irp + 96); скорее всего Irp->Tail.Apc.NormalContext и т.д. ----- 127.0.0.1, sweet 127.0.0.1 | Сообщение посчитали полезным: noph, Coderess |
|
Создано: 25 января 2011 17:08 · Личное сообщение · #4 OKOB пишет: и по ней уже смотришь смещения (только в листинге десятичные, а в ИДЕ шестнадцатиричные) таким образом v6 = *(_DWORD *)(Irp + 96); скорее всего Irp->Tail.Apc.NormalContext и т.д. я чуть дальше пошёл, сконвертировал аргумент вызываемой функции-обработчика "int Irp" в "IRP *Irp". Но получилось вот что: Code:
И чего-то у меня серьёзное подозрение, что ошибься по коду получается, что в функцию передаётся указатель на массив структур? этого ж не может быть? |
|
Создано: 27 января 2011 01:26 · Личное сообщение · #5 для хп сп2 Code:
| Сообщение посчитали полезным: noph |
eXeL@B —› Программирование —› Разбор драйвера |