【发布时间】:2013-09-28 10:42:27
【问题描述】:
我正在尝试对一个我曾经摆弄过的旧游戏进行逆向工程,该游戏已不再维护。目前,我只是试图编辑连接 IP 以假装服务器在线,但我在跟踪应用程序中的 IP 时遇到了一些问题。进行wireshark测试后,程序尝试连接的IP地址为:24.56.108.156,但使用十六进制编辑程序(特别是XVI32)以十六进制或文本格式对其进行扫描不会返回任何结果。
因此,我继续摆弄并加载了我从未使用过的 ollydbg,而我的组装知识无疑已经直线下降。无论如何,我首先查看了引用的字符串,发现其中留下了一些文本(似乎是代码 cmets),表明“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, Random Number Of 0s and other junk ..etc,所以我无法直接追踪。
【问题讨论】:
-
你确定IP是硬编码的,也许是使用了DNS?
-
正面是硬编码的,不久前我就找到了。然而,我完全忘记了我是怎么找到它的。
-
在Windows上,所有的段寄存器都是0,所以它们对地址没有影响(除了用于线程本地存储的FS)。如果 IP 确实是硬编码的,您应该能够找到字节序列
18 38 6c 9c或9c 6c 38 18(不确定顺序)。 -
如果我没记错的话,StackExchange 有另一个站点,专门讨论逆向工程的主题。只是想如果你把你的问题带到那里,你可能会得到更好的答复。
标签: ollydbg