2023年6月20日发(作者:)

软件公司为什么要加密源代码,⽽且是前前后后,反反复复⼯作多年,接触到⼤⼤⼩⼩的数个项⽬,经验多起来,但阻碍进步的因素也多。因为在代码中看到这个功能是如何实现的,下次⾃⼰做,也会⽤到类似的办法,这样减少了思考的时间,进步也会越来越慢。说⼀说软件公司为什么要加密程序的源代码。我们都知道.NET平台的⽬标是将多种语⾔,编译为同⼀种格式,不同的编译器将C#/之类的符合CLS规范的.NET语⾔源代码,编译成IL格式,在运⾏时IL格式的程序时,由即时编译器转化为机器执⾏指令。IL格式是开放的,⾃描述的,在不加密的情况下可以很轻松的反编译成源代码。所以,提到源代码,经过C#/编译器编译之后的IL格式的程序集,也可以称为源代码。

再来回味⼀下这个经典的软件的反编译功能有趣的⼀个现象连同⼀起编译的程序集的强签名存放在E:DNA⽬录下⾯。

[assembly: (@"E:")]然⽽好景不长,软件公司很快意识到源代码的重要性,于是⽤.NET Reactor 加密assembly格式的执⾏⽂件

当再次⽤.NET Reflector打开这个已经被加密过的程序集时,当查看和展开⽅法的实现时,会收到⼀个.NET Reflector异常,即使有时候可以展开⽅法实现,也只能看到乱码⼀样的命名,如下图

1 知识产权保护,利益保护,垄断这是⼀个最正当的理由,给⾃⼰的代码加密。在ERP的销售单中,有以下⼏个⾦额的计算功能

Net Trade Amt=Total Item Amt + Tax Amt + Trade Discount,⽤中⽂意思来表达,就是净贸易⾦额= 总物料⾦额 + 税⾦+ 贸易折扣这个公式⽤⽂字表达是很简单,但是它背后的计算却有些复杂,仅仅公式的求值过程的源代码就超过1000⾏。在ERP系统中,涉及到排产功能,MPS/MRP计算,计划订单发放,以及⼤量的像这样的公式计算,这是软件价值所在,所以要加密。我⼀直怀疑ERP平台的存在性,也源于这⾥。ERP平台宣布称,把这⼀块定制的,体现价值的部分,留给最终的⽤户,实施⼈员来设置,就⽐如上⾯的公式,ERP平台可以做到公式是这样的

Net Trade Amt=Total Item Amt + Trade Discount

也即少了税⾦的计算,总之,它就是很强⼤。

根据我理解的,对税⾦的计算。⽤代码敲出来的ERP,会先开⼀个配置项,是否实施课税,是按照整张订单还是单⾏物料,在计算时,依照最完整全⾯的公式

Net Trade Amt=Total Item Amt + Tax Amt + Trade Discount 来计算最终的贸易⾦额。如果当前设置不实施税⾦,则Tax Amt 的值为0,也就实现了ERP平台宣布的,可以⾃定义的公式

Net Trade Amt=Total Item Amt + Trade Discount

当熟练掌握了MIS的或是与数据库打交道的系统的开发⽅法后,我以为,上⾯提到的这些逻辑,是最宝贵的进阶⽅向。所以,要加密。做MIS/ERP久了,容易形成⼀个坏习惯,客户你告诉我怎么做,我就怎么做。因为改来改去,反反复复的修改,已经让我们认为,ERP/MIS系统就是客户怎么想的,我们就怎么做。但是,有时候客户没有办法呢,那我们不就做不出来了吗?软件公司给我的答案是,先有⾃⼰的解决办法,提供给客户,或是与客户的实际情况对⽐,甚⾄定制⼀下,以符合客户需求。⼀个公司的ERP/MIS项⽬,应当充满了上述⽅案的解决办法,⽽不是等待客户的需求来开发。我也认为,这是深圳市充满了⼤⼤⼩⼩的许多ERP/MIS公司的原因,需求差异化,⾏业不同,隔⾏如隔⼭,这就是有价值的⽅案,当把这些解决⽅案变成代码后,肯定要加密,以保护公司的利益。我的⼼得是,要做ERP/MIS,公司没有现成的解决⽅案,也没有应⽤程序框架,甚⾄连需求都没有,往客户那⾥⼀站,客户怎么说,我们怎么做,这样的ERP/MIS风险太⼤,找⼯作时碰到这样的公司,请谨慎⼊职。

2 加密源代码可以杜绝抄袭,模仿只要有程序员在,在源代码可读的情况下,⽆论多么复杂的系统,总有⼈可以破解其中的奥妙。

就⽐如Windows Server 2008的激活(没有源代码的情况),最新版的Windows Server 2008需要联机才能激活,即使这样,也有⼈可以做出注册机。没有源代码的Windows尚且如此,那有源代码就更容易破解了。

在⽹上经常可以看到,仿XX之类的软件源码。这类型的源码,在⼀定程度上,不可否认它推⼴了技术,但同时也打击了软件的原创者。记得在2005/2006年的时候,公司要求做⼀套像阿⾥巴巴⼀样的贸易⽹站,换作是今天,各种仿阿⾥巴巴的⽹站源代码已经很多了。但那时似乎找不到这类型源码,硬着头⽪做,ASP+SQL Server,折腾的死去活来。

这种类型的仿制软件,多半是界⾯上的仿造,⽽且会开源。360和QQ医⽣,是功能的仿造,不开源的。 很多ERP/MIS的实现,实现起来不难,是各种⽅案的集合,加密软件的源代码,可以很⼤程度上减少仿造软件的产⽣,阻⽌抄袭。说⼀句题外话,我如果能做⼀个漂亮的软件A,很受欢迎,下载量不错,我想我肯定也会做⼀个仿A的软件,并且把它开源,让最终⽤户和程序员⼀起帮忙发展你的软件。Visual Studio Express,各种软件的Community版都是⾮商业版,可以免许可使⽤的,这也可以杜绝各类的仿制软件的产⽣,因为你开源的或是免费的版本已经很好⽤了,开放的源代码也让爱钻研的⼈过过瘾了,它会⼿下留情,放过对你的软件的仿造。

也听说过,⽹络游戏的私服程序,会故意放⼀部分到⽹络上流传,是故意泄露的,然后在服务器端作出处理,这也是帮忙改善软件的很clever的办法,软件⼈的头脑真的很不错。

我的另⼀个⼼得是,如果公司要你去做⼀个防阿⾥巴巴⼀样的贸易⽹站,或是⼀个妨腾讯的地⽅门户⽹站,找⼯作时碰到这样的公司,请谨慎⼊职。

3 版本控制,功能控制,资源保护的⼀种策略先说功能控制,举例QQ医⽣和360之间的相互打架,都互掐对⽅,说扫描⽤户硬盘,暴露⽤户隐私。可是,这也是谣传,你没有它的源代码,不知道它为什么让你⼼爱的硬盘⼀直忙个不停,加密源代码可以做到这⼀点,死不认帐。

ERP/MIS软件加密,有个⼩bug不⼩⼼把客户的采购单的⾦额计算错误,因为代码是加密的,可以帮忙⽤户做data fix,以⽤户为主,也很少会告诉客户是程序的bug,因为代码是加密的。ERP/MIS类型的软件,基本上都靠服务赚钱了,卖软件连维持公司⽣存都难,所以,这类型的软件⼀定要加密。可配置的地⽅,暗藏在系统中,但在⽂档中不表达的地⽅,多如⽜⽑,⼀不⼩⼼就出了问题,只好请专业的⼈员来做维护。

再来说PPLive,⽹络电视,优库,⼟⾖⽹的播放软件,这类型的软件与资源绑定紧密,软件是不能获取任何费⽤的,只有从与它绑定的资源中获取利润,加密源代码,可以保护资源,保护公司利益。

再回到功能控制上来,由于加密了源代码,再配合客户端⾃动升级技术,像360,QQ医⽣之类的软件可以为所欲为,它真的⼲了什么,谁也不知道。以扫描⽤户隐私这⼀项来说,当要闹官司,求清⽩的时候,都说⾃⼰的软件是以客户为上帝时,可是⼀但配合⾃动升级技术,他们说的都是真的。可是,我⼀直都在怀疑,安装完成后的360要300多MB的硬盘,360杀毒要200多MB的硬盘,软件的发展,应该是接⼝越来越简单好⽤,代码量越来越少,可他们越来越肥胖了,胖到你不可理解的地步。我⽆意批判这些软件,我只是想表达,C/S软件,配合⾃动升级技术,再把你的源代码加密,你想⼲什么,都取决于你了。

我理解的版本控制,就是前后版本间,有bug或是要更新什么,由于加密的源代码,你⽆从得知。当然,我们只是软件的⽤户,不是开发⼈员,不需要关⼼这个细节,只是偶尔好奇为什么硬盘忙个不停。

4 知识创新,软件业分⼯细化的必然要求加密软件的源代码,造成⼀定程度的技术垄断,但也促进了知识创新。以Form Designer的开发为例⼦,原本世界上只有三家公司可以开发窗体设计器这种软件,Microsoft的Visual Studio,IBM的Eclipse和Borland的Delphi,这三家公司,可以开发出世界上最好⽤的窗体设计器,Borland很早就退出了软件开发⼯具市场,只剩下了Microsoft和IBM。看窗体设计器的演化,也只有看这两家公司的产品了,这是垄断。另⼀⽅⾯,程序语⾔的却越来越多。Borland垄断了Delphi/C++/Java系列的开发⼯具,Microsoft垄断了C#/的开发⼯具,Sun垄断了Oracle/Java Developer开发⼯具,但是,近⼏年,程序语⾔的数量也增长的⾮常快。以我为例⼦,我要找到Delphi在.NET环境下的⼀种语⾔,通过来操作.NET Framework已经失败,但是由此也诞⽣了许多类似的商业化的语⾔及其开发⼯具,⽐如Visual Studio 2005时就诞⽣了RemObjects Chrome for VisualStudio,直接以Delphi的语法,调⽤.NET Framework,编译成IL格式。这也令我想起了J#,以Java的语法,.NET 平台的API,环境来创作.NET程序。

到了后来,这个项⽬⼜发展成Delphi Prism,更加完善。这是知识创新的结果。

Microsoft垄断了.NET开发的基础平台,⾃从C# Builder消失后,再没有第三⽅的开发⼯具供应商⽣产C#开发⼯具,扼腕叹息,与此同时,聪明的⼈另开辟路径,避开IDE的战争,进⼊到重新设计⼀门语⾔,然后提供基于这个语⾔的解决⽅案,的失败,也给后来开发Delphi的⽅向提供了经验。

5 信任,责任,⾃私,⼀切皆是⼼态在博客园主页看到⽂章,跟随⾼⼿⼯作半年,只能看到⼀些dll,看不到源代码。有的说很正常,想保护⾃⼰的成果,有的认为太⾃私,连员⼯都看不到源代码,肯定不信任,⽤⼈不疑,疑⼈不⽤。

以我的⼯作例⼦,曾在⼀家台湾⼈的IT部门,当时的职位是中级程序员,上司也是很注意保护⾃⼰的代码,我的⼯作就是给他写⽅法,他告诉我要做个什么功能,笔划⼀下,我就要给他提供这个功能的实现,也没有定义接⼝,写好了功能,他调⽤⼀下,觉得没有问题,就被他合并到他的源代码中去了,⾄于他做了什么修改,或是加了什么,我也看不到。有时候实在需要调⽤现有的功能,他就故意重开⼀个demo⼯程,来给我测试⽤,⽽不是直接对现有的系统进⾏测试。

⼀开始的⼯作还顺利,到后来交货期越来越紧,功能变化频繁,常常写好了⼀个功能,简单的测试⼀下就需要修改,不是有bug,是有新的需求在不停的加,有时候加⼀个需求,会导致代码要完全重写,因为考虑不到以后的变化。举例为证,就为了实现读取⽂件的功能,我不可能会弄⼀个IFileReader接⼝,来应对现在是读取⽂本⽂件,以后还要读取Xml⽂件或是⼆进制⽂件,这样太浪费了,当时也达不到这么深厚的功⼒。想想当时,连⾃⼰的代码放在哪⾥运⾏都不知道,真令⼈叹息。后来的⼯作,公司⽤⽂章开头提到的.NET Reactor加密了程序集,也就不好奇了。起码在这⾥,我还知道⾃⼰的代码是与这⼏个加密的程序集⼀起⼯作的。

ERP/MIS类的逻辑很容易模范,学习,公司加密这些程序集,也可以理解。

也碰到过很爽快的程序员朋友,很有价值的程序,从不加密,你要知道为什么,⾃⼰去反编译查看就好了,这其实是给好学的⼈⼀种进修的机会。不是每个⼈下班后都会继续看⼀下书,再敲⼀下代码,当激情释放之后,剩下的拼的是毅⼒,坚持,不放弃。要相信⾃⼰研究所得,终有所⽤。有⼀句话很重要,只要是⾃⼰写的代码,我们都要对它负责,不管它是否会被加密,我们都要为它的⾏为负责。

2023年6月20日发(作者:)

软件公司为什么要加密源代码,⽽且是前前后后,反反复复⼯作多年,接触到⼤⼤⼩⼩的数个项⽬,经验多起来,但阻碍进步的因素也多。因为在代码中看到这个功能是如何实现的,下次⾃⼰做,也会⽤到类似的办法,这样减少了思考的时间,进步也会越来越慢。说⼀说软件公司为什么要加密程序的源代码。我们都知道.NET平台的⽬标是将多种语⾔,编译为同⼀种格式,不同的编译器将C#/之类的符合CLS规范的.NET语⾔源代码,编译成IL格式,在运⾏时IL格式的程序时,由即时编译器转化为机器执⾏指令。IL格式是开放的,⾃描述的,在不加密的情况下可以很轻松的反编译成源代码。所以,提到源代码,经过C#/编译器编译之后的IL格式的程序集,也可以称为源代码。

再来回味⼀下这个经典的软件的反编译功能有趣的⼀个现象连同⼀起编译的程序集的强签名存放在E:DNA⽬录下⾯。

[assembly: (@"E:")]然⽽好景不长,软件公司很快意识到源代码的重要性,于是⽤.NET Reactor 加密assembly格式的执⾏⽂件

当再次⽤.NET Reflector打开这个已经被加密过的程序集时,当查看和展开⽅法的实现时,会收到⼀个.NET Reflector异常,即使有时候可以展开⽅法实现,也只能看到乱码⼀样的命名,如下图

1 知识产权保护,利益保护,垄断这是⼀个最正当的理由,给⾃⼰的代码加密。在ERP的销售单中,有以下⼏个⾦额的计算功能

Net Trade Amt=Total Item Amt + Tax Amt + Trade Discount,⽤中⽂意思来表达,就是净贸易⾦额= 总物料⾦额 + 税⾦+ 贸易折扣这个公式⽤⽂字表达是很简单,但是它背后的计算却有些复杂,仅仅公式的求值过程的源代码就超过1000⾏。在ERP系统中,涉及到排产功能,MPS/MRP计算,计划订单发放,以及⼤量的像这样的公式计算,这是软件价值所在,所以要加密。我⼀直怀疑ERP平台的存在性,也源于这⾥。ERP平台宣布称,把这⼀块定制的,体现价值的部分,留给最终的⽤户,实施⼈员来设置,就⽐如上⾯的公式,ERP平台可以做到公式是这样的

Net Trade Amt=Total Item Amt + Trade Discount

也即少了税⾦的计算,总之,它就是很强⼤。

根据我理解的,对税⾦的计算。⽤代码敲出来的ERP,会先开⼀个配置项,是否实施课税,是按照整张订单还是单⾏物料,在计算时,依照最完整全⾯的公式

Net Trade Amt=Total Item Amt + Tax Amt + Trade Discount 来计算最终的贸易⾦额。如果当前设置不实施税⾦,则Tax Amt 的值为0,也就实现了ERP平台宣布的,可以⾃定义的公式

Net Trade Amt=Total Item Amt + Trade Discount

当熟练掌握了MIS的或是与数据库打交道的系统的开发⽅法后,我以为,上⾯提到的这些逻辑,是最宝贵的进阶⽅向。所以,要加密。做MIS/ERP久了,容易形成⼀个坏习惯,客户你告诉我怎么做,我就怎么做。因为改来改去,反反复复的修改,已经让我们认为,ERP/MIS系统就是客户怎么想的,我们就怎么做。但是,有时候客户没有办法呢,那我们不就做不出来了吗?软件公司给我的答案是,先有⾃⼰的解决办法,提供给客户,或是与客户的实际情况对⽐,甚⾄定制⼀下,以符合客户需求。⼀个公司的ERP/MIS项⽬,应当充满了上述⽅案的解决办法,⽽不是等待客户的需求来开发。我也认为,这是深圳市充满了⼤⼤⼩⼩的许多ERP/MIS公司的原因,需求差异化,⾏业不同,隔⾏如隔⼭,这就是有价值的⽅案,当把这些解决⽅案变成代码后,肯定要加密,以保护公司的利益。我的⼼得是,要做ERP/MIS,公司没有现成的解决⽅案,也没有应⽤程序框架,甚⾄连需求都没有,往客户那⾥⼀站,客户怎么说,我们怎么做,这样的ERP/MIS风险太⼤,找⼯作时碰到这样的公司,请谨慎⼊职。

2 加密源代码可以杜绝抄袭,模仿只要有程序员在,在源代码可读的情况下,⽆论多么复杂的系统,总有⼈可以破解其中的奥妙。

就⽐如Windows Server 2008的激活(没有源代码的情况),最新版的Windows Server 2008需要联机才能激活,即使这样,也有⼈可以做出注册机。没有源代码的Windows尚且如此,那有源代码就更容易破解了。

在⽹上经常可以看到,仿XX之类的软件源码。这类型的源码,在⼀定程度上,不可否认它推⼴了技术,但同时也打击了软件的原创者。记得在2005/2006年的时候,公司要求做⼀套像阿⾥巴巴⼀样的贸易⽹站,换作是今天,各种仿阿⾥巴巴的⽹站源代码已经很多了。但那时似乎找不到这类型源码,硬着头⽪做,ASP+SQL Server,折腾的死去活来。

这种类型的仿制软件,多半是界⾯上的仿造,⽽且会开源。360和QQ医⽣,是功能的仿造,不开源的。 很多ERP/MIS的实现,实现起来不难,是各种⽅案的集合,加密软件的源代码,可以很⼤程度上减少仿造软件的产⽣,阻⽌抄袭。说⼀句题外话,我如果能做⼀个漂亮的软件A,很受欢迎,下载量不错,我想我肯定也会做⼀个仿A的软件,并且把它开源,让最终⽤户和程序员⼀起帮忙发展你的软件。Visual Studio Express,各种软件的Community版都是⾮商业版,可以免许可使⽤的,这也可以杜绝各类的仿制软件的产⽣,因为你开源的或是免费的版本已经很好⽤了,开放的源代码也让爱钻研的⼈过过瘾了,它会⼿下留情,放过对你的软件的仿造。

也听说过,⽹络游戏的私服程序,会故意放⼀部分到⽹络上流传,是故意泄露的,然后在服务器端作出处理,这也是帮忙改善软件的很clever的办法,软件⼈的头脑真的很不错。

我的另⼀个⼼得是,如果公司要你去做⼀个防阿⾥巴巴⼀样的贸易⽹站,或是⼀个妨腾讯的地⽅门户⽹站,找⼯作时碰到这样的公司,请谨慎⼊职。

3 版本控制,功能控制,资源保护的⼀种策略先说功能控制,举例QQ医⽣和360之间的相互打架,都互掐对⽅,说扫描⽤户硬盘,暴露⽤户隐私。可是,这也是谣传,你没有它的源代码,不知道它为什么让你⼼爱的硬盘⼀直忙个不停,加密源代码可以做到这⼀点,死不认帐。

ERP/MIS软件加密,有个⼩bug不⼩⼼把客户的采购单的⾦额计算错误,因为代码是加密的,可以帮忙⽤户做data fix,以⽤户为主,也很少会告诉客户是程序的bug,因为代码是加密的。ERP/MIS类型的软件,基本上都靠服务赚钱了,卖软件连维持公司⽣存都难,所以,这类型的软件⼀定要加密。可配置的地⽅,暗藏在系统中,但在⽂档中不表达的地⽅,多如⽜⽑,⼀不⼩⼼就出了问题,只好请专业的⼈员来做维护。

再来说PPLive,⽹络电视,优库,⼟⾖⽹的播放软件,这类型的软件与资源绑定紧密,软件是不能获取任何费⽤的,只有从与它绑定的资源中获取利润,加密源代码,可以保护资源,保护公司利益。

再回到功能控制上来,由于加密了源代码,再配合客户端⾃动升级技术,像360,QQ医⽣之类的软件可以为所欲为,它真的⼲了什么,谁也不知道。以扫描⽤户隐私这⼀项来说,当要闹官司,求清⽩的时候,都说⾃⼰的软件是以客户为上帝时,可是⼀但配合⾃动升级技术,他们说的都是真的。可是,我⼀直都在怀疑,安装完成后的360要300多MB的硬盘,360杀毒要200多MB的硬盘,软件的发展,应该是接⼝越来越简单好⽤,代码量越来越少,可他们越来越肥胖了,胖到你不可理解的地步。我⽆意批判这些软件,我只是想表达,C/S软件,配合⾃动升级技术,再把你的源代码加密,你想⼲什么,都取决于你了。

我理解的版本控制,就是前后版本间,有bug或是要更新什么,由于加密的源代码,你⽆从得知。当然,我们只是软件的⽤户,不是开发⼈员,不需要关⼼这个细节,只是偶尔好奇为什么硬盘忙个不停。

4 知识创新,软件业分⼯细化的必然要求加密软件的源代码,造成⼀定程度的技术垄断,但也促进了知识创新。以Form Designer的开发为例⼦,原本世界上只有三家公司可以开发窗体设计器这种软件,Microsoft的Visual Studio,IBM的Eclipse和Borland的Delphi,这三家公司,可以开发出世界上最好⽤的窗体设计器,Borland很早就退出了软件开发⼯具市场,只剩下了Microsoft和IBM。看窗体设计器的演化,也只有看这两家公司的产品了,这是垄断。另⼀⽅⾯,程序语⾔的却越来越多。Borland垄断了Delphi/C++/Java系列的开发⼯具,Microsoft垄断了C#/的开发⼯具,Sun垄断了Oracle/Java Developer开发⼯具,但是,近⼏年,程序语⾔的数量也增长的⾮常快。以我为例⼦,我要找到Delphi在.NET环境下的⼀种语⾔,通过来操作.NET Framework已经失败,但是由此也诞⽣了许多类似的商业化的语⾔及其开发⼯具,⽐如Visual Studio 2005时就诞⽣了RemObjects Chrome for VisualStudio,直接以Delphi的语法,调⽤.NET Framework,编译成IL格式。这也令我想起了J#,以Java的语法,.NET 平台的API,环境来创作.NET程序。

到了后来,这个项⽬⼜发展成Delphi Prism,更加完善。这是知识创新的结果。

Microsoft垄断了.NET开发的基础平台,⾃从C# Builder消失后,再没有第三⽅的开发⼯具供应商⽣产C#开发⼯具,扼腕叹息,与此同时,聪明的⼈另开辟路径,避开IDE的战争,进⼊到重新设计⼀门语⾔,然后提供基于这个语⾔的解决⽅案,的失败,也给后来开发Delphi的⽅向提供了经验。

5 信任,责任,⾃私,⼀切皆是⼼态在博客园主页看到⽂章,跟随⾼⼿⼯作半年,只能看到⼀些dll,看不到源代码。有的说很正常,想保护⾃⼰的成果,有的认为太⾃私,连员⼯都看不到源代码,肯定不信任,⽤⼈不疑,疑⼈不⽤。

以我的⼯作例⼦,曾在⼀家台湾⼈的IT部门,当时的职位是中级程序员,上司也是很注意保护⾃⼰的代码,我的⼯作就是给他写⽅法,他告诉我要做个什么功能,笔划⼀下,我就要给他提供这个功能的实现,也没有定义接⼝,写好了功能,他调⽤⼀下,觉得没有问题,就被他合并到他的源代码中去了,⾄于他做了什么修改,或是加了什么,我也看不到。有时候实在需要调⽤现有的功能,他就故意重开⼀个demo⼯程,来给我测试⽤,⽽不是直接对现有的系统进⾏测试。

⼀开始的⼯作还顺利,到后来交货期越来越紧,功能变化频繁,常常写好了⼀个功能,简单的测试⼀下就需要修改,不是有bug,是有新的需求在不停的加,有时候加⼀个需求,会导致代码要完全重写,因为考虑不到以后的变化。举例为证,就为了实现读取⽂件的功能,我不可能会弄⼀个IFileReader接⼝,来应对现在是读取⽂本⽂件,以后还要读取Xml⽂件或是⼆进制⽂件,这样太浪费了,当时也达不到这么深厚的功⼒。想想当时,连⾃⼰的代码放在哪⾥运⾏都不知道,真令⼈叹息。后来的⼯作,公司⽤⽂章开头提到的.NET Reactor加密了程序集,也就不好奇了。起码在这⾥,我还知道⾃⼰的代码是与这⼏个加密的程序集⼀起⼯作的。

ERP/MIS类的逻辑很容易模范,学习,公司加密这些程序集,也可以理解。

也碰到过很爽快的程序员朋友,很有价值的程序,从不加密,你要知道为什么,⾃⼰去反编译查看就好了,这其实是给好学的⼈⼀种进修的机会。不是每个⼈下班后都会继续看⼀下书,再敲⼀下代码,当激情释放之后,剩下的拼的是毅⼒,坚持,不放弃。要相信⾃⼰研究所得,终有所⽤。有⼀句话很重要,只要是⾃⼰写的代码,我们都要对它负责,不管它是否会被加密,我们都要为它的⾏为负责。