动态地从C#DLL获取代码

前端之家收集整理的这篇文章主要介绍了动态地从C#DLL获取代码前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想看看DLL的(可能编译的不同机器)是否相同.要做到这一点,我正在加载DLL并计算MD5,这对于在不同机器(但具有相同源)的DLL失败.这似乎是由于在编译时添加的其他元数据(如有人提到的 here).

我想到了反向工程整个DLL,看看代码是否匹配,但是我有两个问题:

>我只能找到这样做的工具,我似乎找不到一个C#库或类似的东西,我需要做的.
>我不是100%肯定如果反编译的源将在源编译不同的机器上相同.

任何提示,提示和指针都不胜感激.

解决方法

你可能是对的 – 它可以是元数据.我认为这不一定是最可能的可能性.

DLL的不同之处在于它们可能针对不同版本的.NET或可能的MONO进行编译.

不保证反编译DLL将产生相同的代码,即使它们是从同一个源编译的;实际上,考虑到编译器的优化性质,有一个微小的理论(但存在的)机会,稍微不同的源可以编译到同一个可执行文件 – 通常,一个循环将被展开 – 也就是转化为顺序的,非循环的指令 – 这将导致内存使用或cpu时间的节省.

如果程序员手动展开循环并重新编译,这是编译器一直在做的优化 – presto,具有相同输出的两个不同的源.

一个更好的问题将是您希望通过比较两个DLL来学习.如果这是严格的学习,那是非常棒的,值得赞扬 – 但是,你需要做的一些有意义的研究的知识量是相当高的.您可能通过学习一般,更适用的C#/.net技术来找到更好的结果.

猜你在找的C&C++相关文章