1

语境

我在一家开发 MMO 的工作室担任游戏开发人员。我们构建了一个权威服务器,但仍然遇到漏洞利用和自动化问题。我下载了用于破解我们游戏的主要机器人,以确定它如何利用我们的服务器,以便我们进行相应的修补。

问题

我使用 dotPeek 反编译了 .exe 以获取源文件,但遇到了一个问题:我只获得了启动器的源文件。启动器在运行时将核心程序集注入我们的应用程序。它通过将程序集作为十六进制数据存储在 .resource 文件中来实现。知道如何从这个 .resource 文件中获取源代码吗?

解决方案

感谢大家的帮助。我通过从 .resource 文件中提取二进制数据并将其写入 .dll 文件,然后使用 dotPeek 对其进行反编译来获取源文件。有关更多详细信息,请参阅我的解决方案

4

3 回答 3

2

你不应该可以GetManifestResourceStream用来获取嵌入的数据吗?

于 2018-06-11T18:16:48.973 回答
1

感谢大家的帮助——结合使用反编译器和在运行时读取二进制程序集数据并将其写入 .dll 文件帮助我获得了源代码:

我使用 dotPeek 来反编译启动器。在程序集资源管理器中,我然后右键单击程序集并选择Export to Project...我然后在 Visual Studio 中打开项目并插入用于File.WriteAllBytes写入 byte[] 的行(已经通过他们的应用程序可用,但这只是从 .使用 ) 将资源文件ResourceManager.GetObject转换为 .dll 文件。然后我在 dotPeek 和 wala 中打开了那个 .dll 文件——源代码可见。

于 2018-06-12T17:38:34.327 回答
0

我建议围绕这个问题进行设计,一种由服务器强制执行的软验证码。您的问题的真相是:.Net 可以扩展。与其围绕客户端 exe 进行“猫捉老鼠的军备竞赛”,不如考虑如何检测非人类活动,或者如何随机要求仅人类活动。

如果你的游戏值得关注,他们战胜你。他们很多:)

于 2018-06-12T11:08:55.277 回答