回溯函数调用

逆向工程 拆卸 x64dbg
2021-06-17 21:35:39

我正在学习逆向工程,并试图找到调用错误消息的位置。我想进入代码的一部分,在主模块中,它决定显示错误消息或成功消息,但我在追溯到函数调用时遇到了问题,因为我进入了一个无处可去的地方。这就是我所做的:

  • 在 MessageBoxW 上设置断点
  • MessageBoxW 上的断点
  • 返回地址查看堆栈或运行直到返回

但是我得到的地址类似于:system.windows.forms.ni.123456。如果我继续回溯,我会不知所措(在 user32.dll 中的某处)。希望有人有更好的方法来追溯这个函数或者它熟悉“system.windows.forms”,并且可以解释它是如何工作的。

1个回答

使用OllyDbg可以轻松完成只需加载可执行文件并按下F9- 执行应传递给应用程序的主模块。然后,在显示说明的面板中,右键单击,然后选择Search for->All intermodular calls如下所示:Olly-intermodular_calls

您应该会看到与此类似的窗口: Olly-intermodular_calls_window 然后单击Destination选项卡(按字母顺序对列表进行排序)并搜索MessageBoxW函数。然后选择对此函数的任何引用并双击它 - 您将在主窗口中看到对它的调用,以灰色突出显示。然后按F2在那里设置软件断点,然后单击View->Call stack最后F9继续执行到该断点。

当执行命中它时,Call stack窗口将包含导致MessageBoxW调用的后续函数调用列表