Как установить точку останова в WlanSvc?

367
Austin Burk

Мой WiFi продолжает отключаться, и я управляю своим компьютером с помощью Synergy. Я перерыл журналы событий и обнаружил, что все начинается с WlanSvcDisconnectRequest (часть WlanSvc, запускаемого под svchost.) Я уверен, что это не аппаратная ошибка.

Я устал от необходимости подключать мой ключ Wi-Fi, чтобы он снова подключился (поскольку компьютер управляется с помощью Synergy и не имеет подключенной мыши / клавиатуры), поэтому я решил попробовать отладить его, чтобы посмотреть, смогу ли я определите, что на самом деле отправляет запрос WlanSvcDisconnectRequest каждые несколько минут.

Я старался изо всех сил, чтобы увидеть, смогу ли я отладить его, но не могу установить точку останова.

Я использую правильную версию WinDbg (64-разрядную) и запускаю ее как повышенный процесс.

Я открыл его, нашел процесс svchost, который запускает WlanSvc, и попытался установить точку останова:

0:013> bc * 0:013> bp wlansvc!WlanSvcDisconnectRequest 0:013> bl 0 e 00007ff8`6d914ba8 0001 (0001) 0:**** wlansvc!WlanSvcDisconnectRequest 0:013> g Unable to insert breakpoint 0 at 00007ff8`6d914ba8, Win32 error 0n998 "Invalid access to memory location." The breakpoint was set with BP. If you want breakpoints to track module load/unload state you must use BU. bp0 at 00007ff8`6d914ba8 failed WaitForEvent failed ntdll!DbgBreakPoint+0x1: 00007ff8`75729921 c3 ret 

Я также попытался установить его как неразрешенную точку останова:

0:013> bc * 0:013> x wlansvc!WlanSvcDisconnectRequest 00007ff8`6d914ba8 wlansvc!WlanSvcDisconnectRequest = <no type information> 0:013> bu wlansvc!WlanSvcDisconnectRequest 0:013> g Unable to insert breakpoint 0 at 00007ff8`6d914ba8, Win32 error 0n998 "Invalid access to memory location." bp0 at 00007ff8`6d914ba8 failed WaitForEvent failed ntdll!DbgBreakPoint+0x1: 00007ff8`75729921 c3 ret 

Я не использовал WinDbg раньше, но большое количество Googling было сделано безрезультатно. Почему я не могу установить точку останова для wlansvc!WlanSvcDisconnectRequest?


Версия WinDbg:

Microsoft (R) Windows Debugger Version 10.0.14321.1024 AMD64 

Системная информация:

OS Name: Microsoft Windows 10 Pro OS Version: 10.0.14393 N/A Build 14393 OS Manufacturer: Microsoft Corporation OS Configuration: Standalone Workstation OS Build Type: Multiprocessor Free  System Type: x64-based PC Processor(s): 1 Processor(s) Installed. [01]: Intel64 Family 6 Model 15 Stepping 2 GenuineIntel ~1867 Mhz 

Путь символа:

srv*;C:\Symbols\wlansvc.pdb 

Обновление: Пробовал отключать ASLR с EMETS, не помог при попытке установить точку останова.

0
Вы пробовали другой ключ Wi-Fi? harrymc 6 лет назад 0

1 ответ на вопрос

1
ge0rdi

Проблема в том, что wlansvc!WlanSvcDisconnectRequestна самом деле структура данных хранится в .rdataразделе wlansvc.dll. Он хранится в постоянной памяти и не содержит никакого кода. Таким образом, создание точки останова не имеет никакого смысла.

Вы можете проверить это !address wlansvc!WlanSvcDisconnectRequestкомандой. Он сообщит о PAGE_READONLYзащите страницы для заданной области памяти.

Если вы хотите разорвать, когда какой-то код обращается к этой структуре, вам нужно установить точку останова данных : ba r1 wlansvc!WlanSvcDisconnectRequest

Или вы можете просто включить стандартный brakpoint для wlansvc!IntfDisconnectработы, поскольку это единственное место, которое содержит ссылку на wlansvc!WlanSvcDisconnectRequestструктуру (которую можно найти, например, с помощью дизассемблера IDA ).

Спасибо! Я действительно ценю это. Я сделаю это сегодня днем. Austin Burk 6 лет назад 0

Похожие вопросы