| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付买域名,送MP3、MP4
高端软件开发 = 年薪十万不是梦赛孚耐:软件保护加密专家身份认证令牌USB KEY买空间,免费送域名(厦门中资源)
共有 1062 人关注过本帖
标题:.net中.dll文件能不能还原成.cs文件
收藏  订阅  推荐  打印 
青格儿
Rank: 4
等级:高级会员
威望:2
帖子:527
积分:6264
注册:2007-7-31

Reflector用它就可以查看了,反编译dll

6楼的朋友用的什么?呵呵,也发我份,邮箱:185548111@qq.com

[ 本帖最后由 青格儿 于 2008-9-22 21:17 编辑 ]
2008-9-22 21:16
ruanjian2110
Rank: 12Rank: 12Rank: 12
来自:武汉
等级:版主
威望:3
帖子:360
积分:4746
注册:2008-5-25

Reflector 5.0(.net反编译工具),很好用的。。。网上有免费的,自己找一下吧。。

武汉信控科技有限公司:http://www.whxc.net 超越技术,本身就是一个美好技术。。。。。。
2008-9-22 23:28
qlx_123
Rank: 1
等级:新手上路
帖子:14
积分:260
注册:2007-11-2

刚接触这个,谢谢大家!

2008-9-23 08:53
kevintang
Rank: 4
等级:高级会员
威望:5
帖子:604
积分:6861
注册:2008-2-14

我用的也是Reflector !不过过期了!哈哈 我汗啊!

编程少年基地——少年编程者的练兵场
http://bcsn.5d6d.com    招聘版主中

2008-9-24 09:03
青格儿
Rank: 4
等级:高级会员
威望:2
帖子:527
积分:6264
注册:2007-7-31

哦,过期了。那算了,我有这个了,是破解过的。呵呵
不过,还是谢谢你,kevintang
2008-9-24 09:08
徐强
Rank: 12Rank: 12Rank: 12
等级:版主
威望:3
帖子:65
积分:786
注册:2007-3-30

反编译出来的代码能看懂么?事原始的么?
2008-9-24 10:38
铲铲
Rank: 12Rank: 12Rank: 12
等级:版主
威望:22
帖子:447
积分:5527
注册:2006-5-2

如果你要原始代码,那对不起,dll无法返回最最原始的代码。因为信息不足。

所谓编译,从信息观点来看,就是提出冗余信息,提高执行效率。
所以编译的时候,注释部分就去掉了,你永远也不可能找回代码原作者对代码添加的注释。

但Reflector可以支持C# B 和MSIL形式的查看。既然可以查看,当然也就可以复制,你大可以自己复制这些代码来重建工程,只不过工作量会很大,也可以借助自动化的反向工程软件,不过我没有找到。

不知道你留意过没有,Reflector反编为高级语言以后,有些代码形式和你最初用高级语言书写的形式有所不同,比如,原来你所书写的for循环语句形式,可能被编译器编译后优化成了while do的循环语句。因为对于MSIL来说。两种在高级语言中表达的循环语句形式,在低级语言中其实是等价的。
现在明白了吧?
你可以自己结合自己的经验反编译工程,基本上可以得到运行、外观、理论正确的代码,但不能证明你所得到的和源代码相同。

铲铲是也
2008-10-9 13:03
kevintang
Rank: 4
等级:高级会员
威望:5
帖子:604
积分:6861
注册:2008-2-14

铲铲 我太爱你了!
   你小子很牛比的啊!
    猜猜 我是谁?

编程少年基地——少年编程者的练兵场
http://bcsn.5d6d.com    招聘版主中

2008-10-9 13:24
寂寞仙人掌
Rank: 1
等级:新手上路
帖子:33
积分:463
注册:2008-10-9

只要程序作者把那些变量名和自定义函数名都批量改成 b1,b2,b3,f1,f2,f3之类的,就算不编译也够看懂的了

以前我就用过一个ASP程序,自定义函数和变量全是A1,B2之类的,有读懂他的代码的时间不如自己去写了
2008-10-9 13:29
铲铲
Rank: 12Rank: 12Rank: 12
等级:版主
威望:22
帖子:447
积分:5527
注册:2006-5-2

b1,b2,b3,f1,f2,f3这一类变量命名一般来说并非程序员本人所命名的。

如果是程序员,采用这种类型命名,倒头来恐怕连他自己都不知道这些变量的含义了。

这类命名通常是在成品完成以后,用“混淆软件”把它们进行了混淆导致的。
现在.net的程序集也有DotFuscator这个工具可以用来做混淆。安装VS会自动安装该工具的试用版本。

“混淆”这个概念主要还是针对人来说的,人的大脑思维活动和计算机不相同,人们无法记住大量无意义的字符,特别是在源代码交错复杂的情况下,因此混淆增加了人们读懂程序的难度,但对于计算机而言没有多少用处,他们仍然能够正确运行。

铲铲是也
2008-10-9 15:26
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.058869 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved