【问题标题】:Change embedded destination port in compiled application在已编译的应用程序中更改嵌入式目标端口
【发布时间】:2011-11-13 13:34:49
【问题描述】:

我有一个没有源代码的已编译客户端应用程序。它通过 TCP 连接到我的服务器的 7777 端口(这是目的地)。我想更改应用程序以使用不同的端口,并且客户端上没有设置可以轻松更改它。这让我相信它是硬编码到应用程序中的。

我已经搞砸了一点,但我不是专业的逆向工程师,事实证明这对我来说太难了,无法单独解决。我正在努力实现的目标是否可能?

【问题讨论】:

  • 什么操作系统?您是否尝试过基于防火墙/nat 的方法? (如 iptables -A OUTPUT --destination your_server -p tcp --dport 7777 -j DNAT --to-destination your_server:8888)

标签: c++ tcp port reverse-engineering


【解决方案1】:

你是如何在没有源代码的情况下编译它的?抛开这个问题。

在二进制编辑器中查找 7777(十六进制 1e61),即 1e 后跟 61(或其他方式)并更改它。

【讨论】:

  • 它是由不再存在的人编译的,但在替换之前仍然需要该程序。我已经在十六进制编辑器中尝试过,但无济于事。
  • 好的,我想道歉。我再次尝试并更改为小端并在十六进制编辑器中大量替换了 7777 的所有实例并且它有效。现在我只需要缩小范围。谢谢
  • 他不在身边,但来源在?那为什么不重新编译呢?它不会那么难(直到你尝试)。
  • @PepsiMmmm 呃。你有大量替换所有出现的7777 ??我想您应该更换正确的插座,打开插座。对于与套接字打开无关的 7777 事件,您可能已经破坏了其他事情。 :操作系统
  • @Seki 是的,大约有 12 次出现。我将缩小我需要的范围。幸运的是,在我尝试连接之前没有任何损坏,哈哈
【解决方案2】:

这取决于平台和可用工具。如果您可以在您的环境中使用strace,您可以处理输出并确定端口打开的位置,然后使用该信息返回二进制文件,反汇编它,找到进行调用的函数,并尝试确定端口号是如何到达那里的。

【讨论】:

    【解决方案3】:

    您可以使用socat 创建 TCP 转发代理。来自socat examples

    socat TCP4-LISTEN:www TCP4:www.domain.org:www
    

    安装一个简单的 TCP 端口转发器。使用 TCP4-LISTEN,它会在本地端口“www”上侦听,直到连接进来,接受它,然后连接到远程主机 (TCP4) 并开始数据传输。它不会接受第二次连接。

    这是一种不如使用iptables 灵活的方法,因为socat 代理必须在您的客户端连接到的服务器上运行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-06
      • 2017-11-21
      • 2014-05-28
      • 2023-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多