LINUX.ORG.RU

Какой драйвер реверсить?

 ,


0

1

Если в двух словах.

Я нашёл, какие методы ACPI нужно вызвать, чтобы переключать режимы работы ноутбука, но я не знаю, по каким критериям это делается.

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

Я пробовал «на шару» подключиться к ядру при помощи windbg и воткнуть на целевые методы брейкпоинты, благо методы некритичные, но при выполнении любых команд !amli вываливаются ошибки. В интернетах рекомендуется подменить acpi.sys на тестовую версию, но в мануале сказано, что с 11 винды это больше не канает, и оно должно «просто работать».

Какие ещё есть варианты?


Не буду «умничать» просто произведите поиск «методы ACPI исходники драйвера Windows».

Ещё в inet имеются исходники Windows Server 2003 и в них если не ошибаюсь имеются исходники драйверов.

Из легального - исходники ReactOS.

Шутка

Можете попросить исходники драйвера в Microsoft.

Forum0888
()
Последнее исправление: Forum0888 (всего исправлений: 2)
Ответ на: комментарий от Forum0888

ReactOS смотрел, у них нет нужного драйвера.

Тут вопрос в том, что у уродца корявый биос, который плевать хотел на стандартные методы, и костыль в юзерспейсе, который я нащупать не могу. Даже если найду исходники стандартного драйвера, они мне не помогут. Линуксовый драйвер на другом ноуте работает, а на этом просто не получает события от ACPI, поскольку биос без внешнего пинка не умеет его генерировать. Соответственно, смена режима автоматически не происходит.

HE_KOT
() автор топика
Последнее исправление: HE_KOT (всего исправлений: 2)
Ответ на: комментарий от Forum0888

...попросить исходники драйвера в Microsoft.

Ну попроси. Дооооолго будешь ждать ответа.

Я, представь, имею с ними дело, так что немного, самую малость, в курсе, как там всё работает.

sparkie ★★★★
()
Ответ на: комментарий от HE_KOT

Вот ещё варинты:
- архив с примерами драйверов для DDK;
- архив с примерами драйверов для SDK

В них много разных примеров.
Ещё поищите исходники разработки прошлых лет (кто-то обязательно этим вопросом занимался).

Forum0888
()
Ответ на: комментарий от sparkie

Раньше с Microsoft можно было скачать версии Windows с pdb.
Формат pdb ныне «расковыряли».
Интересно почему нет никакого фана по этому вопросу.

Forum0888
()
Последнее исправление: Forum0888 (всего исправлений: 3)

Удалось настроить отладку ядра оффтопика и словить вызов целевого метода.

Стек вызовов выглядит следующим образом:

1: kd> KP
 # Child-SP          RetAddr               Call Site
00 fffff684`562fecd0 fffff803`22e0f16c     ACPI!DebugQuit+0x30
01 fffff684`562fed10 fffff803`22e0f2d6     ACPI!DbgExecuteCmd+0xe4
02 fffff684`562fed70 fffff803`22e0de6d     ACPI!Debugger+0x122
03 fffff684`562ff0e0 fffff803`22e1c5cd     ACPI!AMLIDebugger+0x2d
04 fffff684`562ff110 fffff803`22e1cb44     ACPI!ParseOpcode+0x7d
05 fffff684`562ff150 fffff803`22e14860     ACPI!ParseScope+0x114
06 fffff684`562ff180 fffff803`22dc619a     ACPI!RunContext+0x11c
07 fffff684`562ff1d0 fffff803`22e11b8a     ACPI!InsertReadyQueue+0x1a6
08 fffff684`562ff210 fffff803`22e150a4     ACPI!RestartContext+0x92
09 fffff684`562ff250 fffff803`22e1587d     ACPI!AsyncEvalObject+0x3c4
0a fffff684`562ff2b0 fffff803`22e084fd     ACPI!SyncEvalObject+0x1e1
0b fffff684`562ff360 fffff803`22dc4bc0     ACPI!AMLIEvalNameSpaceObject+0x151
0c fffff684`562ff3c0 fffff803`22dc7575     ACPI!ACPIIoctlEvalControlMethod+0x18e
0d fffff684`562ff460 fffff803`22dc10db     ACPI!ACPIIrpDispatchDeviceControl+0x62e5
0e fffff684`562ff4a0 fffff803`1dc29cd5     ACPI!ACPIDispatchIrp+0xcb
0f fffff684`562ff520 fffff803`58b7eda1     nt!IofCallDriver+0x55
10 fffff684`562ff560 ffffc28d`4f7bad50     0xfffff803`58b7eda1
11 fffff684`562ff568 fffff803`58b8a560     0xffffc28d`4f7bad50
12 fffff684`562ff570 ffffc28d`5b190690     0xfffff803`58b8a560
13 fffff684`562ff578 ffffc28d`5b06add0     0xffffc28d`5b190690
14 fffff684`562ff580 00000000`00000001     0xffffc28d`5b06add0
15 fffff684`562ff588 ffffc28d`5b3d0001     0x1
16 fffff684`562ff590 00000000`00000101     0xffffc28d`5b3d0001
17 fffff684`562ff598 00000000`00000000     0x101

Сервер отладочных символов подключил, но всё, что до IofCallDriver, не именуется, а меня интересует именно инициатор вызова.

Скорее всего, всё, что выше строки 0b, касается отладчика. Это вызывает вопросы, правильный ли стек я смотрю.

Может, у кого-то есть соображения, как это расковырять?

HE_KOT
() автор топика
Последнее исправление: HE_KOT (всего исправлений: 1)