完整地扒一个C#程序

Posted Nemesis

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了完整地扒一个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,把所有资源文件都重新加载一遍,

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

 

 

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

以上是关于完整地扒一个C#程序的主要内容,如果未能解决你的问题,请参考以下文章

C#编写上位机使用UDP给单片机发送Json格式数据(完整程序)

从 C# 到 MySQL 的 DateTime:不完整的存储

用 C# 替换完整 sql 查询中的单引号

求C# HtmlAgilityPack用法的完整例子。

C#最简单最完整的webservice实例

怎么用C#生成一个完整的xml文件