我刚刚完成了一个小项目,需要对预编译但不再受支持的ASP.NET网站进行更改。代码很难看,但在编译之前它很难看,而且我印象非常深刻,所有东西看起来仍然很好。
进行了一些编辑,例如删除控件声明,因为它们被放入生成的文件中,并与反编译的基类冲突,但没有几个小时没有解决。
现在我很好奇有多少人在这方面做了多少成功。我实际上想写一篇CodeProject文章来定义逆向工程过程,如果不是自动化的话。
答案 0 :(得分:1)
由于.NET平台中存在所有编译器糖,如果没有极其复杂的反编译器,您无法将二进制文件反编译为原始代码。例如,编译器在后台创建类来处理机箱。自动化这种事情似乎是一项艰巨的任务。但是,处理期望的问题只是为了使其编译可能是可编写脚本的。
答案 1 :(得分:1)
威尔: 由于.NET平台中存在的所有编译器糖
幸运的是,这个特殊的应用程序非常简单,但是我不希望反编译成原始代码,只是代码像原始代码一样,或者甚至可以提供对原始代码如何工作的洞察,以允许'拼接'新代码。
答案 2 :(得分:1)
我必须做类似的事情,而且我实际上比拥有代码更快乐。它可能花了我更少的时间来做,但编译器优化后的代码质量可能比原始代码更好。所以,是的,如果它是一个简单的应用程序,对它进行逆向工程则相对简单;另一方面,我希望将来不要这样做。
答案 3 :(得分:0)
如果它是用.NET 1.1或.NET 2.0编写的,那么你将比使用VS 2008编译器编译的任何东西都更成功,主要是因为新语言修订带来了语法上的错误(Lambda,匿名类)等等。)
只要代码不是模糊,那么你应该能够使用反射器来获得可行的代码,如果你把它放到VS中你应该立即找到错误在反映的代码中。
请注意以<>
开头的变量/方法,我看到了很多(特别是在反映.NET 3.5时)。
你可以做的最糟糕的事情是将它全部导出到VS,点击编译并确定有多少错误并从中调用。
但如果它是一个足够简单的项目,你应该能够从反射器进行反向工程,至少使用反射器来获得代码正在做的一般要点,然后重新编码。