Мой 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 ответ1

1

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

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .