如何对使用.resource文件存储程序集的.exe进行反向工程?

时间:2018-06-11 18:12:20

标签: c# .net reverse-engineering decompiler dotpeek

上下文

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

问题

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

解决方案

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

3 个答案:

答案 0 :(得分:2)

您是否不能使用GetManifestResourceStream来获取嵌入数据?

答案 1 :(得分:1)

感谢大家的帮助 - 使用反编译器并在运行时读取二进制汇编数据并将其写入.dll文件的组合帮助我获取源代码:

我用dotPeek反编译发射器。在程序集资源管理器中,我然后右键单击程序集并选择Export to Project...然后我在Visual Studio中打开项目并插入一行使用File.WriteAllBytes来编写byte [](已经可以通过他们的应用程序获得,但这只是使用ResourceManager.GetObject)将.resource文件中的二进制数据转换为.dll文件。然后我在dotPeek和wala中打开了.dll文件 - 源代码可见。

答案 2 :(得分:0)

我建议围绕这个问题进行设计,这是一种由服务器强制执行的软访问密码。您的问题的真实性是:.Net可以扩展。而不是围绕客户端进行“猫捉老鼠争夺”,考虑如何检测非人类活动,或如何随机要求仅限人类活动。

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