Как установить точку останова в WlanSvc?
Мой 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, не помогла с попыткой установить точку останова.
1 ответ
Проблема в том, что wlansvc!WlanSvcDisconnectRequest
на самом деле структура данных хранится в .rdata
раздел wlansvc.dll
, Он хранится в постоянной памяти и не содержит никакого кода. Таким образом, создание точки останова не имеет никакого смысла.
Вы можете проверить это !address wlansvc!WlanSvcDisconnectRequest
команда. Будет сообщать PAGE_READONLY
защита страницы для заданной области памяти.
Если вы хотите разорвать, когда некоторый код обращается к этой структуре, вам нужно будет установить точку останова данных:ba r1 wlansvc!WlanSvcDisconnectRequest
Или вы можете просто поставить стандартную wlansvc!IntfDisconnect
функция, так как это, кажется, единственное место, которое содержит ссылку на wlansvc!WlanSvcDisconnectRequest
структура (которую можно найти, например, с помощью дизассемблера IDA).