查找加载和调用例程指针的位置

逆向工程 ollydbg
2021-06-16 08:23:51

我正在对最终幻想 XIV 1.0 协议进行逆向工程,以恢复现在已死的游戏(不是 ARR)。我试图找到调用错误消息处理程序的位置(特别是“此字符名称已在使用中”),然后向后发送正确的数据包。使用超时错误消息,我找到了导致此消息加载的例程,但该例程从未作为常量调用,而是加载到 EDX 中然后调用。传入的错误代码定义了要显示的消息以及要采取的操作(例如,输入“错误的字符名称”代码实际上会导致 UI 切换到“输入名称”屏幕)。

我正在使用 ollydbg,通常我只使用“查找对命令的引用”选项,但由于此例程已加载然后被调用,因此无法正常工作。任何想法如何找到调用此例程的位置?然后我可以向后工作以查找从数据包中读取的内容以转到该代码。

1个回答

您必须在该地址执行时设置硬件断点:

首先在转储中找到您的跟踪例程和流程:

在此处输入图片说明

然后创建 hwbp:

在此处输入图片说明

设置在此例程的第一个字节上执行:

在此处输入图片说明

现在,当调用此函数时 ollydbg 显示调用:

在此处输入图片说明