1

我正在尝试对一个我曾经摆弄过的旧游戏进行逆向工程,该游戏不再被维护。目前,我只是试图编辑连接 IP 以假装服务器在线,但我在跟踪应用程序中的 IP 时遇到了一些问题。进行wireshark测试后,程序尝试连接的IP地址为:24.56.108.156,但使用十六进制或文本格式的十六进制编辑程序(特别是XVI32)对其进行扫描不会返回任何结果。

因此,我继续摆弄并加载了我从未使用过的ollydbg,毫无疑问,我的组装知识一落千丈。无论如何,我首先查看了引用的字符串,发现其中留下了一些文本(似乎是代码注释),表明“RemoteHostIP”函数返回远程主机的 IP。因此,我找到了调用的程序集,并在其上设置了断点,以确保它是正确的函数,并且在客户端尝试连接时正确调用它。它的组装是:

MOV EAX, DWORD PTR DS:[C98FA8]
OR EAX, EAX
JE SHORT Eternal.0043629F //Jumps back to the MOV call.

我查看了 EAX 的值,它显示为 75843918,DS 为 002B,但 EAX 值(转换回十进制或 ascii 时)不等于客户端尝试连接的 IP 地址。所以,除了数据段寄存器之外,我不知道 DS 到底是什么意思,也不知道它如何影响取消引用的指针,所以我去了表达式 00C98FA8 并得到了相同的值 75843918 这不是我想要的。

我的想法在这里用完了,有什么我可能错过的具体内容吗?那个DS有什么我不知道的影响吗?任何帮助将不胜感激,如果我遗漏了一些可能有用的信息,请告诉我。

--新添加的信息
--响应 typ1232 并且只是为了获取更多信息:

该地址在各个数字之间有一些填充,它就像:32,00的随机数和其他垃圾..等等,所以我无法直接追踪它。

4

1 回答 1

1

我最终通过一些猜测找到了它,似乎应用程序的每一块在每块 ip 之前都用 00 分割事物,所以结果是:00 32 00 34 00 2E 等等。

于 2013-09-24T00:31:13.137 回答