答复
根据.NET Framework环境的运行机制,程序员编程时可以给一组相关联的文件签发一个“集体强名称”,大概叫 Group Stronge Signature Name,用来保证这一系列存在调用关系的文件版本能够协调一致,同时可以拒绝不属于该程序集的外部代码调用其内部的未授权私有过程函数来达到非常规之目的。拥有强名的程序集在运行时,必须被加载到CLR中运行。只有具有强名的Assembly才能够被加载到CLR里面去,或者说,运行在CLR中的程序不能调用处在CLR之外的模块。对于单个文件,和这种程序集是不一样的。
强制强名是程序员人为加上了一个对程序进行强制性强名验证的 Method,具体忘了,大家可以去MSDN查查,使用强制验证强名后,通过注册表设定的忽略强名验证设置不再有效。同时加大了反向的难度。当然,这个应该是几个字节就能搞掉的功能。
上面这些不知能不能读明白,因为当时看的是大堆大堆的英文,很多东西都忘得差不多了,有的用汉语不知表达准不准确。其实这些应该都有中文资料,很早了,当时写给程序员学编程的。
还有,
Patch系统的方法只是去掉了因强名验证加载不到CLR的限制,版本识别机制不会被破坏。如果是商务性应用,机器不会装几个.NET的程序,文件完整性大可不必担心。至于被你破解的程序本身,完整不完整自己都知道。
