Wie lege ich einen Haltepunkt in WlanSvc fest?

465
Austin Burk

Mein WLAN wird immer wieder getrennt und ich kontrolliere meinen Computer mit Synergy. Ich habe die Ereignisprotokolle durchgearbeitet und festgestellt, dass alles mit einem WlanSvcDisconnectRequest beginnt (Teil des WlanSvc-Laufs unter svchost.) Ich bin ziemlich zuversichtlich, dass es sich nicht um einen Hardwarefehler handelt.

Ich bin ziemlich krank und müde, meinen WLAN-Dongle neu verbinden zu müssen, damit er sich wieder verbinden kann (der Computer wird mit Synergy gesteuert und hat keine Maus / Tastatur angeschlossen). Ich entschied mich daher, es zu debuggen, um zu sehen, ob ich es könnte Finden Sie heraus, was die WlanSvcDisconnectRequest tatsächlich alle paar Minuten sendet.

Ich habe mein Bestes gegeben, um zu sehen, ob ich es debuggen könnte, aber ich kann den Haltepunkt nicht festlegen.

Ich verwende die richtige Version von WinDbg (64-Bit) und führe sie als erhöhten Prozess aus.

Ich öffnete es, fand den svchost-Prozess, in dem WlanSvc ausgeführt wird, und versuchte, einen Haltepunkt festzulegen:

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 

Ich habe auch versucht, es als einen ungelösten Haltepunkt festzulegen:

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 

Ich habe WinDbg noch nicht verwendet, aber viel Googling wurde ohne Erfolg durchgeführt. Warum kann ich den Haltepunkt nicht festlegen wlansvc!WlanSvcDisconnectRequest?


WinDbg-Version:

Microsoft (R) Windows Debugger Version 10.0.14321.1024 AMD64 

Systeminformationen:

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 

Symbolpfad:

srv*;C:\Symbols\wlansvc.pdb 

Update: Versuch, ASLR mit EMETS zu deaktivieren, half nicht beim Versuch, den Haltepunkt festzulegen.

0
Haben Sie einen anderen WLAN-Dongle ausprobiert? harrymc vor 7 Jahren 0

1 Antwort auf die Frage

1
ge0rdi

Das Problem ist, dass wlansvc!WlanSvcDisconnectRequestes sich tatsächlich um eine Datenstruktur handelt, die in .rdataAbschnitt von gespeichert ist wlansvc.dll. Es wird im Festspeicher gespeichert und enthält keinen Code. Das Erstellen eines Haltepunkts macht also keinen Sinn.

Sie können es per !address wlansvc!WlanSvcDisconnectRequestBefehl überprüfen . Es wird der PAGE_READONLYSeitenschutz für den angegebenen Speicherbereich gemeldet .

Wenn Sie brechen möchten, wenn ein Code auf diese Struktur zugreift, müssen Sie einen Datenhaltepunkt setzen : ba r1 wlansvc!WlanSvcDisconnectRequest

Oder Sie setzen einfach den Standard-Bremspunkt ein, wlansvc!IntfDisconnectda dies anscheinend die einzige Stelle ist, die einen Verweis auf die wlansvc!WlanSvcDisconnectRequestStruktur enthält (die beispielsweise mit dem IDA- Disassembler gefunden werden könnte ).

Vielen Dank! Ich weiß es wirklich zu schätzen. Ich werde das heute Nachmittag probieren. Austin Burk vor 7 Jahren 0