Сейчас на форуме: asfa, bartolomeo (+7 невидимых) |
![]() |
eXeL@B —› Вопросы новичков —› Загрузка драйвера |
Посл.ответ | Сообщение |
|
Создано: 24 февраля 2012 10:28 · Личное сообщение · #1 Есть приложение, которое грузит драйвер для защиты себя от отладки. Драйвер хучит инт1, инт3, ntkrnlpa.exe-->NtOpenProcess, Type: Address change 0x83661A58-->A8362672 [I:\Windows\system32\CPS.sys] ntkrnlpa.exe-->NtReadVirtualMemory, Type: Address change 0x836AF8EA-->A83626C6 [I:\Windows\system32\CPS.sys] ntkrnlpa.exe-->NtWriteVirtualMemory, Type: Address change 0x836AF7DA-->A8362742 [I:\Windows\system32\CPS.sys] Самого драйвера на диске нет. Это не старфорс! На интах ничего полезного в приложении нет. При попытке анхука - летим в бсод. При запуске в отладчике - летим в бсод. Хочу попробовать не дать загрузить драйвер. Какие апи смотреть для загрузки драйвера? ![]() |
|
Создано: 24 февраля 2012 10:38 · Поправил: Maximus · Личное сообщение · #2 |
|
Создано: 24 февраля 2012 10:39 · Личное сообщение · #3 |
|
Создано: 24 февраля 2012 10:49 · Личное сообщение · #4 |
|
Создано: 24 февраля 2012 10:58 · Личное сообщение · #5 |
|
Создано: 24 февраля 2012 11:00 · Поправил: ARCHANGEL · Личное сообщение · #6 Если дров установлен со Start параметром SERVICE_SYSTEM_START/SERVICE_BOOT_START/SERVICE_AUTO_START, то он будет подгружаться системой автоматически на этапе загрузки, и получается, что когда нужно начать сеанс отладки, то дров уже в памяти (как в Старфорсе). Тогда никакие ZwLoadDriver вызываться не будут. Т.е. будут, конечно, но бряк вы на них поставить не успеете. Также через реестр драйвер может входить в некую группу, тогда он может подгружаться при загрузке группы, либо другого драйвера из группы. На это будет указывать параметр lpLoadOrderGroup. Примером может служить запуск NTICE, если запускается IceExt. The startup program uses load ordering groups to load groups of services in a specified order with respect to the other groups. The list of load ordering groups is contained in the following registry value: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\ServiceGroupOrder Т.е. это я к чему - вначале надо найти ключ в реестре, описывающий параметры установки и загрузки драйвера в систему. The CreateService function creates a service object and installs it in the service control manager database by creating a key with the same name as the service under the following registry key: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services Вот в этой ветке реестра надо искать. Исходя из тех данных, можно уже делать какие-либо выводы. Хочу попробовать не дать загрузить драйвер. Странная логика. По идее, софт с антиотладкой вообще не должен запуститься, если ему не удастся свой дров загрузить. ----- Stuck to the plan, always think that we would stand up, never ran. ![]() |
|
Создано: 24 февраля 2012 11:21 · Поправил: Nightshade · Личное сообщение · #7 Я почти на 100% уверен, что дров - самопал без подписи. А значит на х64 он может и не загружаться. Дров грузится после запуска и выгружается после закрытия проложения. Можно еще DeviceIoControl похукать попробовать. ZwLoadDriver, CreateProcess, ShellExecute - бсод Бряки ставил на функи внутри нтдлл. Т е не на CreateProcess, а на ZwCreateUserProcess Нашел на advapi32.StartServiceW Виновника торжества прикрепил. В дровах не шарю - может кто сказать как его запатчить, чтобы он не хукал ничего? ![]() ![]() |
|
Создано: 24 февраля 2012 11:51 · Поправил: V0ldemAr · Личное сообщение · #8 |
|
Создано: 24 февраля 2012 11:56 · Личное сообщение · #9 А ты не думал, что бсод может быть не из-за того, что ты не туда тычешь бряк, а потому, что тычешь бряк в принципе, коль прерывания похуканы? Тупо не грузить драйвер-это не дать исполниться StartService, ну фейкнув адрес возврата, если он проверяется. Если же дров реально нужен, дров смотреть и править надо, либо свой инструмент написать, проще с дровами. З.Ы. Подпись там, кстати, есть. ![]() |
|
Создано: 24 февраля 2012 13:42 · Личное сообщение · #10 |
![]() |
eXeL@B —› Вопросы новичков —› Загрузка драйвера |