[踩坑记录] C# 源代码被误删, 通过反编译之前编译好的文件来拯救这一切, 三款反编译工具对比

您所在的位置:网站首页 cocos2d反编译源代码 [踩坑记录] C# 源代码被误删, 通过反编译之前编译好的文件来拯救这一切, 三款反编译工具对比

[踩坑记录] C# 源代码被误删, 通过反编译之前编译好的文件来拯救这一切, 三款反编译工具对比

2024-02-19 21:57| 来源: 网络整理| 查看: 265

事件:

首先, 语言是C#, 然后我把代码给删了… 但是在删之前, 我编译过一次, 所以… 我就想着使用反编译工具来搞了.

我知道的反编译工具, dnSply, ILSpy, dotPeek

dnSpy是ILSpy的一个分支(dnSpy is a .NET assembly editor, decompiler, and debugger forked from ILSpy)

dotPeek 是 JetBrains 的反编译工具, 在这之前我还没使用过.

开始吧: > 首先, 是 dnSpy 上场:

乍一看, 没啥问题, 但是, 会有很多毛病哦~ 一一道来吧:

dnSpy 的反编译结果, 似乎不会吧字段和方法放在一起, 我也没找到它反编译的字段定义跑哪去了…会有一大堆奇怪代码, 跟我们想要的源代码完全不一致, 即便导出为项目, 也会有无数个错误总之, dnSpy是个反编译的好工具, 但还不能够完全获取源代码…

总之先导出一下吧, 选中你的项目, 然后程序左上角, 文件(File) -> 导出为项目(Export to project)

然后就是… 惨不忍睹… 左下角的错误数量 99+ 了已经, 完全没有纠错的必要.

> 然后, 就是 ILSpy 上场了:

嗯好吧, 我承认 ILSpy 没有 dnSpy 好看, 但这可不是决定实力的第一要素.

你看到了, 枚举, 字段, 方法, 一切都井然有序仔细看看, 中间的那个 switch 语句, 瞧瞧! 这不是 C#8 的新语法嘛! (我当初没有使用这个语法哦)完全没有任何奇怪的变量名

那么我们尝试导出项目吧! 在左侧选中项目, 右击, 选择 Save Code 以导出项目 感动世界!!! 没有任何错误! 非常非常非常完美~

> 再试试 dotPeak:

哦豁, 看样子, 也不错啊.

dotPeek 没有像 ILSpy 那样将 switch 还原为 C#8 的语法, 而是使用的旧的语法没有奇怪的变量名, 奇怪的语法出现了我没有写过的东西, 标签

导出项目咯, 直接右击项目, 然后 Export to Project 唔, 一开始就与众不同呢… 跟普通的项目完全不一样, 少了一些文件夹… 嘛, 总之先试着打开吧. 果然在VS里面一眼就能看出错误了! 它居然在本地方法的前头中加了static… 好吧好吧, 我知道它们本质上是静态的, 但你这么弄, 我可就不能编译了呀. (假设我很懒, 懒到连这仅有的一个错误也不愿意改)

总结:

如果说我平常使用, 我肯定会用 dnSpy (颜值高), 毕竟平常还是很少改源代码甚至导出为项目滴, 如果是像这次的特殊情况, 我就会用 ILSpy, 很强大的有木有? 至于 dotPeek, 打入冷宫了, 而且加载速度慢的一批, 等它启动完, 黄花菜都凉了.

也算是大成功了, 所以, 如果想要通过反编译来挽回删掉的文件, 那么请使用 ILSpy 吧! 经过这一次使用, 我也是爱上 ILSpy了, 毕竟一开始我没报有这么大希望.

如果你觉得有什么改进的, 或者有什么下期文章的建议, 评论区见ovo



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3