背景:
创新互联建站长期为上千余家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为威县企业提供专业的网站设计制作、成都网站建设,威县网站改版等技术服务。拥有十载丰富建站经验和众多成功案例,为您定制开发。在推广产品时经常需要搭建演示环境,而每次都需要经过繁琐的序列号申请过程,很是麻烦。尤其是在着急确认某功能时,越是着急越容易出问题,经常需要发送好几遍序列号。我实在受不了这种折腾,就想弄个产品演示版本,远离繁杂耗时的lic申请。
目的:
破解产品序列号限制,不影响产品正常使用。
条件:
无产品源代码;已知产品使用.Net 4.0开发;已知正常序列号为一加密文件;
工具:
.Net Refletor、UE、IDA.Pro.Advanced.v6.1、MSIL微软中间语言
推荐一篇文章
http://www.topzs.com/tech-box/you_qian_ru_shen_ren_shi_cil_de_ji_ben_gou_cheng_cil_cao_zuo_ma_su_ji_biao_cil_cao_zuo_ma_da_quan_su 由浅入深认识CIL的基本构成+CIL操作码速记表+CIL操作码大全速查(二)
方法步骤:
首先,通过reflector找到与序列号相关的程序代码,这个比较好达到,明显的标志licenseValidate类;
第二,分析license验证机制,寻找突破口。验证流程为读取加密lic文件,解密文件,通过RSA算法进行序列号校验,根据校验结果返回验证结果。这个校验还是比较糙的,我们可以直接对校验结果的返回值进行patch,也就是不管验证结果是否正确,都返回true,这样就绕开序列号限制了。
第三,使用IDA打开待破解的文件,按照在reflector看到的方法名进行定位,IDA中提供图形化界面及对应的16进制联动功能,可以很方便的帮我们定位到需要修改的16进制地址。IDA中显示的是IL文件格式,我们通过走读可以找到最终校验返回的代码位置,就是将返回false的地方修改为返回true。这个地方需要使用《CIL操作码速记表+CIL操作码大全速查》,以便于我们理解程序。
第四,使用UE打开待修改文件,定位到我们要修改的位置,可以按照每行的16进制地址号定位,我们需要返回false对应的中间语言部分ldc.i4.0修改为ldc.i4.1,对应到hex模式下就是将ldc.i4.0对应的操作码为16,修改为ldc.i4.1对应的操作码为17。
第四,修改完成后直接保存,测试程序是否可正常运行。
感悟:
对于.net代码需要在编译时进行混淆或加壳防护,对序列号的校验应该增强校验方式。
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。