我每隔几秒钟就会在程序的屏幕上弹出一条错误消息。
我想追溯到哪个函数正在调用消息框以及原因。
我发现了引用的字符串,但是如何追溯到谁调用了该函数?

评论

reverseengineeringtips.blogspot.com/2015/01/…

#1 楼

您可以通过首先运行程序到入口点以跳过所有样板代码,然后转到x64Dbg中的“符号”选项卡,转到User32.dll,然后为MessageBox函数进行过滤来找到答案。将断点放在任何带有MessageBox的函数上,然后运行程序。现在,调用MessageBox时,程序将中断,您可以看到执行位置。

您可以通过转到CPU选项卡并右键单击该位置来跟踪调用方,现在转到“搜索” ->所有模块->模块间引用。

现在,您将看到一堆函数调用,并且在底部的框中​​可以输入过滤条件。输入MessageBox,您将看到程序在哪里调用MessageBox,然后您可以双击以跳到该位置或右键单击以获取更多选项,放置断点等...

我已附加了使用printf的示例,但在您的情况下,将使用MessageBox。请注意,这仅在MessageBox函数是用于显示消息的函数时才是正确的。如果导入了另一个库,则可能是另一个函数,但是过程仍然相似。



评论


谢谢!这真的很有帮助。 :)

–user5793353
3月16日7:17