反思逆向工程?

Joh*_*ren 8 .net reflection reverse-engineering

您可以通过反射找到关于应用程序内部的大量内容,它由.NET BCL(基类库)公开,它使得检索任何.NET方法的实际IL变得微不足道.

维基百科上的逆向工程:

逆向工程是通过分析其结构,功能和操作来发现设备,对象或系统的技术原理的过程.

反思肯定会满足作为结构的分析.但是,您在哪里划分内省与实际逆向工程之间的界限?从法律角度来看,反思逆向工程是什么?

Adr*_*ore 8

两者之间的边界确实模糊不清.从道德上讲,我会在程序员的动机中划清界限.

如果他使用反射来构建一个库,工具或类似的软件,它应该与满足某些标准的任何第三方代码进行交互,我不会将其视为逆向工程.

例如,我最近为Linq2SQL数据层编写了一个通用基类.基类使用反射来深入了解数据库布局并正确处理嵌套业务实体的更新.如果其他人将我的基类用于他的Web应用程序,我将无法获得有关其源代码的任何知识.这种反射的使用当然不是逆向工程.

另一方面,如果程序员试图通过反射来理解竞争对手软件的内部运作,那么他就是对它进行逆向工程.


Gav*_*ler 6

当容易反编译语言的能力是反射语言的一部分时,人们必须质疑反向工程的定义.

使用像.NET Reflector这样的工具,我感觉线条真的开始变得模糊!

使用SO本身的一个例子,他们最近对他们的WMD编辑器的源代码进行了去混淆.我认为这比反射更能定义逆向工程.