完整地扒一个C#程序

步骤:

1,使用dnSpy 工具,直接反了C# 程序。

2,如果第一步失败,仔细看一下程序,是否有加壳,是否有混淆,名称混淆好办,流程混淆难办。

如果是名称混淆,可以使用工具修复。

3,这里预计可以用dnSpy 正确反编译C# 程序。

4,使用dnSpy 导出 C# 程序,成为一个VS的C#项目。

前置工作全部结束,目前为止,已经有了个VS项目。

直接打开VS项目,可以打开,

直接编译VS项目,不能编译。

代码上上的问题,比如属性重定义,或者类型不匹配,手动修复即可。

最大的问题,是资源问题。资源找不到。

因为 dnSpy 把反出来的资源都修改成了 .resources 后缀,变成了二进制文件,

需要实用工具把文件修复成VS可以识别的资源文件。

工具,VS已经提供了,具体修复步骤如下。

1,开启VS命令行,测试 resgen.exe 工具是否可用,理论上可用。

2,修复命令:resgen.exe *.resources *.resx

  用这条命令修复一个二进制资源文件,变成真的资源文件,

  修复成功后,指定目录下,会出现一个真的资源文件

  需要注意的是,生成的资源文件文件名最好和资源文件对应的源码文件名一致,

  导入得时候,VS自动就能识别。

3,第二步做完之后,.resx 文件就已经可用了,然后是使用方法。

  打开VS,在VS项目中,找到指定的 .resources 文件,

  从项目中排除,直接删除也可以,然后这个假的资源文件就从项目中不见了。

  然后将新的 .resx 资源文件导入项目即可。

  如果前面名字一致的话,VS可以自动识别对应的资源文件。

4,把所有资源文件都重新加载一遍,

  基本上资源文件的问题就都解决了。

然后就可以编译了。(代码问题在之前就已经解决了。)

原文地址:https://www.cnblogs.com/suanguade/p/14851743.html