我每隔几秒钟就会在屏幕上弹出一条错误消息。我想追溯哪个函数正在调用消息框以及为什么。
我找到了引用的字符串,但如何将其追溯到调用该函数的人?
我每隔几秒钟就会在屏幕上弹出一条错误消息。我想追溯哪个函数正在调用消息框以及为什么。
我找到了引用的字符串,但如何将其追溯到调用该函数的人?
您可以通过首先运行程序到入口点跳过所有样板代码,然后转到 x64Dbg 中的符号选项卡,转到 User32.dll,然后过滤MessageBox
函数来找到这一点。MessageBox
在其中包含的任何函数上放置断点,然后运行程序。现在,当 MessageBox 被调用时,程序将中断,您可以看到执行的位置。
您可以通过转到 CPU 选项卡并在那里右键单击来跟踪调用者,现在转到Search For -> All Modules -> Intermodules References。
现在,您将看到一堆函数调用,底部是一个框,您可以在其中输入过滤条件。输入MessageBox
,您将看到程序调用的位置MessageBox
,然后您可以双击跳转到那里或右键单击以获取更多选项,放置断点等...
我附上了一个使用示例,printf
但在您的情况下,您将使用MessageBox
. 请注意,这仅在 MessageBox 函数是用于显示消息的函数时才是正确的。如果导入了另一个库,它可能是另一个函数,但过程仍然相似。