【问题标题】:Ollydbg Reverse Engineering IP AddressOllydbg 逆向工程 IP 地址
【发布时间】: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 9c9c 6c 38 18(不确定顺序)。
  • 如果我没记错的话,StackExchange 有另一个站点,专门讨论逆向工程的主题。只是想如果你把你的问题带到那里,你可能会得到更好的答复。

标签: ollydbg


【解决方案1】:

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

【讨论】:

  • 我在谷歌上搜索使用 OllyDBG 进行逆向工程的引物,发现了这个和你的答案。 00XX00XX00XX 格式说明了 Unicode 的使用!您的 IP 地址似乎是 Unicode,每个字符使用两个字节,因此它在 ASCII 字符前面填充 00,因为 ASCII 字符在 Unicode 表中排在第一位。哇!
  • windows中的unicode是UTF-16(16位/2字节固定长度)
猜你喜欢
  • 2020-06-20
  • 2014-02-27
  • 1970-01-01
  • 2012-08-26
  • 2012-05-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-15
  • 1970-01-01
相关资源
最近更新 更多