完整地扒一个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格式数据(完整程序)