.NET == 开源【从Reflector软件反编译.NET,原码相似度99%】说起~

ivsm 2005-04-04 09:52:55
这里有篇文章[ NET 程序员十种必备工具 - .NET Reflector ] http://blog.csdn.net/zhumi/archive/2004/07/22/49127.aspx
里面说
///引用
它是一个类浏览器和反编译器,可以分析程序集并向您展示它的所有秘密。.NET 框架向全世界引入了可用来分析任何基于 .NET 的代码(无论它是单个类还是完整的程序集)的反射概念。反射还可以用来检索有关特定程序集中包含的各种类、方法和属性的信息。使用 .NET Reflector,您可以浏览程序集的类和方法,可以分析由这些类和方法生成的 Microsoft 中间语言 (MSIL),并且可以反编译这些类和方法并查看 C# 或 Visual Basic ?.NET 中的等价类和方法。
///
看了非常好奇,也去.NET Reflector 的官方网站下载了一个试用。先找M$的>net FrameWork开刀,以下是 .NET Reflector反编译的DataTable->CopyRow()的方法原码:
///反编译出来的原码
internal void CopyRow(DataTable table, DataRow row)
{
int num1 = -1;
int num2 = -1;
if (row != null)
{
if (row.oldRecord != -1)
{
num1 = table.recordManager.ImportRecord(row.Table, row.oldRecord);
}
if (row.newRecord != -1)
{
if (row.newRecord != row.oldRecord)
{
num2 = table.recordManager.ImportRecord(row.Table, row.newRecord);
}
else
{
num2 = num1;
}
}
DataRow row1 = table.AddRecords(num1, num2);
if (row.HasErrors)
{
row1.RowError = row.RowError;
DataColumn[] columnArray1 = row.GetColumnsInError();
for (int num3 = 0; num3 < columnArray1.Length; num3++)
{
DataColumn column1 = row1.Table.Columns[columnArray1[num3].ColumnName];
row1.SetColumnError(column1, row.GetColumnError(columnArray1[num3]));
}
}
}
}
///

这些代码跟原代码基本相似,大家都能看懂^_^,接着也试了商业上发布的一些.NET Control,其中包括PDF Create ,BarCode Create 等控件,无一例外的被完全解刨。注册码的生成、验证、PDF生成算法等等,跟原代码没什么区别,你们不认为这是开源吗,所以我马上又从.NET的网站上下了很多各个领域的Control储存起来,以后要用了就反编一下,比看书会强很多~^_^~!。
从各个实验的结果证明,.NET Reflector 反编译的C#代码,可读性非常强,使用Reflector.FileDisassembler 插件,甚至可以把整个DLL反编到一个工程,强!!!
后来又在网上查找了一些资料,知道.NET的代码跟Java代码一样可以用混淆器加工,如是 用.NET2003自带的Dotfuscator Community Edition工具(已经通过网络注册)工具,对原来的.NET代码进行混淆,结果显示,只是类的名称和成员变量进行了一点改动,其功能代码没什么变化。 只是增加了阅读的难度,但我们很多人也只是需要知道一些核心代码就够了,了解一个思路。
.NET平台真是让人又爱又恨啦。如果这样基于.NET的共享软件怎么生成呢??公司的核心技术怎么保护?
 我在奇怪这么大的事情,为什么论坛上就没看到讨论这个的帖子呢?
...全文
2449 75 打赏 收藏 转发到动态 举报
写回复
用AI写文章
75 条回复
切换为时间正序
请发表友善的回复…
发表回复
ivsm 2005-04-06
  • 打赏
  • 举报
回复
XenoCode的使用感受就不在这个帖子上说明了,大家有兴趣再开贴讨论,同样散分~~~ #_#
ivsm 2005-04-06
  • 打赏
  • 举报
回复
//引用

可以下一个工具,叫做 XenoCode2004, 它可以把 .NET 的代码加密得很好。

谢谢您提供这个工具,我这里补充一下,关于这个工具的几个网址:
1. .NET辅助工具列表 http://dev.csdn.net/article/31/31277.shtm (原来前辈早就说过了:) )
2. XenoCode 2005 v3.1.4.1802 企业特别版
http://down.week5.net/html/2005-01-18/6172.html (随便找的一个网址,不是打广告哈 :) )


谢谢大家的支持,我昨天终于看到原来帖子还是可以加分的,HOHO~,那我就不客气了,散分~~、散分~~
ivsm 2005-04-06
  • 打赏
  • 举报
回复
///引用
给分的时候怎么还要密码,密码是多少啊??!!
搞笑,你没密码怎么能进来发这个贴,呵呵!!!


谢谢~~,也给你几分,呵呵 *_*
ivorstar 2005-04-05
  • 打赏
  • 举报
回复
wujunwei(...II_III_II...)
是真的么?看来以后我写程序都反编译一次,岂不是变成了高手写的代码!^_^
vrace 2005-04-05
  • 打赏
  • 举报
回复
可以下一个工具,叫做 XenoCode2004, 它可以把 .NET 的代码加密得很好。
zhouweiwansui 2005-04-05
  • 打赏
  • 举报
回复
看了就看了,你觉得自己的代码很值钱?
Ivony 2005-04-05
  • 打赏
  • 举报
回复
Managed C++和C++/CLI都支持托管代码和非托管代码写在一起啊,我觉得这是Managed C++唯一存在的原因了。
gggitxai 2005-04-05
  • 打赏
  • 举报
回复
给分的时候怎么还要密码,密码是多少啊??!!
搞笑,你没密码怎么能进来发这个贴,呵呵!!!
ac669 2005-04-05
  • 打赏
  • 举报
回复
回复人: ivsm(走在乡间的小路上) ( ) 信誉:97 2005-04-05 18:39:00 得分: 0
给分的时候怎么还要密码,密码是多少啊??!!


你登陆csdn论坛的密码啊!!
linhaibo156 2005-04-05
  • 打赏
  • 举报
回复
UP
redline 2005-04-05
  • 打赏
  • 举报
回复


vs.net自带的混淆器只有重命名功能,控制流模糊处理和字符串加密功能都被禁用了,实在是不够用,只能说是聊胜于无。
ivsm 2005-04-05
  • 打赏
  • 举报
回复
///引用
webcasts课上 就推荐的这个

推荐的是哪个??

///引用
Ivony:
我的核心部分只好用非托管的C++来写的了,例如加密、数据库连接字符串等。

但是如果我需要用到.NET FrameWork中的类呢?恩,这个问题讨论到这儿可能差不多了,不知道谁还有更好的方法呢?谁用过.NET自带混淆器的专业版,不知道效果怎么样?

freddy2003 2005-04-05
  • 打赏
  • 举报
回复
好呀!!
godhaier 2005-04-05
  • 打赏
  • 举报
回复
upUPUP
conan19771130 2005-04-05
  • 打赏
  • 举报
回复
呵呵,我正在考虑怎样将源代码加密谢了
tsys2000 2005-04-05
  • 打赏
  • 举报
回复
webcasts课上 就推荐的这个
ivsm 2005-04-05
  • 打赏
  • 举报
回复
给分的时候怎么还要密码,密码是多少啊??!!
ivsm 2005-04-05
  • 打赏
  • 举报
回复
结帖了~~,分设置少了,都不够分,大家多多包涵呀~~
dragonfly001 2005-04-05
  • 打赏
  • 举报
回复
wlovenet(城市农民)
不需要加密的地方就用.net,开发效率高,需要加密的时候想其他的办法,如同你喝汤的时候用勺子,吃青菜的时候用筷子,这样不就ok了,为什么任何代码任何地方都要加密呢?
caicheng 2005-04-05
  • 打赏
  • 举报
回复
无语,微软还声称什么能有效保护代码安全...
我从始用Dotnet那天无意看到IL,之后就天天做这个恶梦,想不到变成真的了
不过还好,我是支持开源的,只要有饭吃就行
加载更多回复(55)

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧