x64dbg 如何在 WinAPI 函数上设置条件断点

逆向工程 x64dbg 断点 登录
2021-06-17 15:21:14

我正在尝试解决基于 GUI 的裂纹。https://crackmes.one/crackme/5c68758633c5d4776a837cc4以便我学习安全。我想在 上设置一个有条件的断点user32.CallWindowProcA微软文档这个函数如下

LRESULT CallWindowProcA(
  WNDPROC lpPrevWndFunc,
  HWND    hWnd,
  UINT    Msg,
  WPARAM  wParam,
  LPARAM  lParam
);

我为WM_LBUTTONDOWN (0x202)设置了以下条件断点,如下所示。但是当我点击按钮时他们没有被击中:(帮助

Type     Address  Module/Label/ State   Disassembly                            Hits Summary                                              
Software                                                                            
         0041A995 crackme-4.exe Enabled push ebp                               3255 sub_41a995 ?dialogProc?, breakif(arg.get(1) == 0x202)
         0041B9A2 crackme-4.exe Enabled call dword ptr ds:[<&CallWindowProcA>] 1713 breakif((1:[esp+0xc] == 0x202) )
         0041F086 crackme-4.exe Enabled call dword ptr ds:[<&CallWindowProcA>] 0    breakif((1:[esp+0xc] == 0x202))
         0041F11B crackme-4.exe Enabled call dword ptr ds:[<&CallWindowProcA>] 273  breakif((1:[esp+0xc] == 0x202))
         00437E9E crackme-4.exe Enabled mov byte ptr ss:[ebp-4],21             0    
         749055C0 user32.dll    Enabled mov edi,edi                            636  breakif(arg.get(1) == 0x202)

我已经通读并尝试了 x64dbg - 基于函数参数的条件断点,但我无法让它为我工作。

1个回答

前段时间我遇到了同样的问题,更新到最新的 x64dbg 版本解决了这个问题。您还必须像这样设置 bps:

[esp+0xC] == 0x202