windbg设置条件断点

ana*_*and 2 debugging windbg breakpoints

我想在windbg中放置一个条件断点.

例如,让我们说LoadLibrary API.

如何加载user32.dll时,如何设置断点使其成为应有的断点.

> x kernel32!LoadLibraryW
Run Code Online (Sandbox Code Playgroud)

它会给出一些地址[XXXX]

现在我可以把断点作为

> bu [XXXX] 
Run Code Online (Sandbox Code Playgroud)

但是对于所有对LoadLibraryW的调用都会出现这种情况.

有什么建议.

dee*_*mok 9

你不能在user32.dll上设置一个条件断点,因为它被相对较早地映射到地址空间,并且在此之后初始调试器的断点触发(据我所知).

如果您可以跟踪加载user32.dll的时刻,您可以覆盖模块中断,如下所示:

sxe ld user32.dll
Run Code Online (Sandbox Code Playgroud)

你可以做的是让你的应用程序由boostrapper应用程序启动,然后在user32.dll加载时让windows调试器中断.只需使用-o命令行选项或.childdbg 1扩展调用来启动子进程的调试,并让它以cmd.exe启动,例如:

windbg -c "sxe ld user32.dll;g" -o cmd.exe /C yourapp.exe
Run Code Online (Sandbox Code Playgroud)

  • 我发现了另一种方法.我们可以做一个字符串比较.如果字符串是user32.dll那么中断.我们可以通过设置条件断点等> BU XXXXXX ";如/亩$ {/ V:MyAlias} POI(@ ESP +为0x4*1);.如果($口角(\" $ {MyAlias}\"\"*USER32*\")= 0)!{; .echo***的LoadLibrary CALLED***; .printf\"%亩\\ñ\",DWO(ESP + 0×04*1);.回波}的.else {G} " (2认同)