0

我刚刚完成了一个小项目,需要对预编译但不再受支持的 ASP.NET 网站进行更改。代码很丑,但在编译之前就很丑了,我印象深刻的是一切似乎仍然正常。

需要进行一些编辑,例如删除控制声明,因为它们被放入生成的文件中,并且与反编译的基类发生冲突,但几个小时没有解决任何问题。

现在我只是好奇有多少其他人在这方面取得了多大的成功。我实际上想写一篇关于定义逆向工程过程(如果不是自动化的话)的 CodeProject 文章。

4

4 回答 4

1

由于 .NET 平台中存在所有编译器糖,如果没有极其复杂的反编译器,您将无法将二进制文件反编译为原始代码。例如,编译器在后台创建类来处理外壳。自动化这种事情似乎是一项艰巨的任务。但是,处理预期的问题只是为了让它编译可能是可编写脚本的。

于 2008-09-17T18:50:11.030 回答
1

Will:由于 .NET 平台中存在的所有编译器糖

幸运的是,这个特定的应用程序非常简单,但我不希望反编译成原始代码,只是让代码像原始代码一样工作,或者甚至可以深入了解原始代码的工作原理,以允许“拼接”新代码.

于 2008-09-18T08:21:59.110 回答
1

我必须做类似的事情,而且我实际上比拥有代码更快乐。它可能花费了我更少的时间,但是编译器优化后的代码质量可能比原始代码更好。所以是的,如果它是一个简单的应用程序,做逆向工程相对简单;另一方面,我想避免将来不得不这样做。

于 2008-12-12T21:45:04.363 回答
0

如果它是用 .NET 1.1 或 .NET 2.0 编写的,那么您将比使用 VS 2008 编译器编译的任何东西都更成功,主要是因为新语言修订版(Lambda、匿名类等)带来的语法糖.

只要代码没有被混淆,那么您应该能够使用反射器来获得可行的代码,如果您将其放入 VS 中,您应该立即在反射代码中发现错误。

请注意以 开头的变量/方法<>,我看到很多(特别是在反映 .NET 3.5 时)。

你能做的最糟糕的事情是将它全部导出到VS,点击编译并确定有多少错误并从中进行调用。

但是,如果这是一个足够简单的项目,您应该能够从反射器进行逆向工程,至少使用反射器来了解代码在做什么的一般要点,然后自己重​​新编码。

于 2008-12-12T21:58:29.047 回答