我有一个没有源代码的已编译客户端应用程序。它通过TCP连接到我的服务器端口7777(这是目的地)。我想更改应用程序以使用不同的端口,客户端上没有设置可以轻松更改它。这使我相信它被硬编码到应用程序中。
我已经搞砸了一下但是我不是一名专业的逆向工程师,这对我来说太难以理解。我想要完成的是什么?
答案 0 :(得分:3)
如何在没有源代码的情况下编译它?抛开那个问题。
在二进制编辑器中查找7777(十六进制1e61),即1e后跟61(或反过来)并更改它。
答案 1 :(得分:0)
这取决于平台和可用工具。如果您可以在您的环境中使用strace
,则可以处理输出并确定端口的打开位置,并使用该信息返回二进制文件,对其进行反汇编,找到正在进行调用的函数,然后尝试确定端口号是如何到达那里的。
答案 2 :(得分:0)
您可以使用socat创建TCP转发代理。来自socat examples:
socat TCP4-LISTEN:www TCP4:www.domain.org:www
安装一个简单的TCP端口转发器。使用TCP4-LISTEN,它会侦听本地端口“www”,直到连接进入,接受它,然后连接到远程主机(TCP4)并开始数据传输。它不接受第二次连接。
这种方法不如使用iptables
灵活,因为socat代理必须在客户端连接的服务器上运行。