更改可执行文件中的硬编码值

时间:2013-08-07 05:02:43

标签: c# .net assembly executable game-engine

已发布的新游戏已提供服务器文件,这些文件目前无法配置用于绑定的IP地址/端口。不幸的是,这限制了每台机器运行多个应用程序实例的能力,因为它被硬编码为端口“12345”。

很多年前,我使用c ++和十六进制编辑器来更改这样的硬编码值,虽然这些知识早已被遗忘,但是有可能通过编写辅助应用程序来改善运行时的值吗? / p>

1 个答案:

答案 0 :(得分:1)

您仍然可以使用十六进制编辑器来更改硬编码常量。

另一种方法是使用由任何体面的操作系统提供的debug api。在Windows中,它是WriteProcessMemory函数。

它看起来如下 - 启动应用程序在调试模式下运行修改后的应用程序。需要不断更改,然后运行它。

当然,修改后的应用程序可能会使用反调试技术 - 在这种情况下,解决方案并非易事。

在这两种情况下,您都必须知道此值驻留在内存(可执行文件)中的位置。这样就必须提供一些逆向工程。

注意,在编辑完最后一个问题之后:所有这个答案都是针对本机可执行文件的。对于托管代码,它可能更复杂。