FastReport完全破解--asp.net使用签名问题


项目中把FastReport升级到
 
 
前言
首先申明,本文只是从技术的角度来分析下怎样破解带签名的C#写的dll文件。大家如有遇到收费的软件或类库还是应该去购买正版,程序员何苦为难程序员呢。
不带签名的破解
不带签名的dll文件的破解很简单,通常有下面三个步骤:
1. 使用反编译工具对dll文件进行反编译,找到校验过期的相关代码,反编译工具可以使用ILSpy或Reflector;
2. 使用ildasm.exe工具将dll导出成il文本文件,在该文件中找到相关的代码进行修改;
3. 使用ildasm.exe工具将修改后的il文件编译成dll文件。
下面看一个例子,假设有ClassLibrary1.dll文件,该类库中的有关校验过期的代码如下:
public static class License { private static bool licenseExpired; internal static void CheckLicense() { //if语句中判断是否过期 if(true) { //标示是否过期,设置成true表示过期 License.licenseExpired = true; } } }
使用ILSpy进行反编译看到的代码如下:
FastReport完全破解--asp.net使用签名问题
现在使用ildasm.exe对该dll文件进行导出成il文本文件:
FastReport完全破解--asp.net使用签名问题
使用文本编辑器打开il文件,找到校验对相关代码:
FastReport完全破解--asp.net使用签名问题
1. 上图中的红框部分代码对应的就是 License.licenseExpired = true; 这行代码;
2. 第97行代码 IL_0004:ldc.i4.1 代表的就是true,等待着赋值给下面的licenseExpired;
3. 修改97行的代码为 IL_0004:ldc.i4.0 ,然后保存il文件。
打开命令行,进入到il文件所在到目录,执行下面的命令;
c:\windows\microsoft.net\framework\v4.0.30319\ilasm.exe /dll/resource=ClassLibrary1.res ClassLibrary1.il
FastReport完全破解--asp.net使用签名问题
现在在il文件的目录中可以看到生成的dll文件:
FastReport完全破解--asp.net使用签名问题
反编译生成的dll文件,可以看出代码已经被修改,如下图:
FastReport完全破解--asp.net使用签名问题
带签名dll的破解
如果程序集是带签名的程序集,在经过上面的步骤进行破解后,dll文件依然不能 使用,通常会报如下错误:
未能加载文件或程序集“ClassLibrary1”或它的某一个依赖项。未能验证强名称签名。此程序集可能已被篡改,或者已被延迟签名,但没有用正确的私钥进行完全签名。 (异常来自 >HRESULT:0x80131045) 经过对比发现经过签名的dll文件和未签名的dll文件的区别在于签名的dll文件生成的il代码中会多处如下的代码:
FastReport完全破解--asp.net使用签名问题
将il代码中上面红框部分代码删除,重新生成的dll文件就是去掉了签名的dll文件。不出什么意外的话此时的dll文件可以正常使用了,但有时又会出现如下的错误:
重写成员“xxx”时违反了继承安全-重写方法的安全可访问性必须与所重写方法的安全可访问性匹配
解决该问题需要在Assemblyinfo.cs文件中添加如下代码:
[assembly: System.Security.SecurityRules(System.Security.SecurityRuleSet.Level1)]
FastReport完全破解--asp.net使用签名问题
上面添加的代码对应的il代码为:
.custom instance void [mscorlib]System.Security.SecurityRulesAttribute::.ctor(valuetype [mscorlib]System.Security.SecurityRuleSet) = ( 01 00 01 00 00 )
将上面的代码添加到il的相应位置,重新生成dll文件就OK了。
总结
本文是以技术研究学习为目的,不提倡对收费的软件或类库进行破解使用。
 
 
取消打印水印:
修改:FastReport.Print.DefaultPrintController类中的PrintPage方法取消水印代码
FastReport完全破解--asp.net使用签名问题
打印页数限制:
修改:FastReport.Print.DefaultPrintController→FastReport.Print.PrintControllerBase类→FastReport.PageNumbersParser类中的 构造方法:
FastReport完全破解--asp.net使用签名问题
 
取消导出水印:
修改:FastReport.Export.ExportBase类中的GetOverlayPage方法,相关代码
FastReport完全破解--asp.net使用签名问题
 
取消导出页数限制:
修改:FastReport.Export.ExportBase类中的Export方法,相关代码
FastReport完全破解--asp.net使用签名问题
 
 
23.2.18
 

 

 
 
版权声明:本文为YES开发框架网发布内容,转载请附上原文出处连接
张国生
上一篇:.NET Core集成JWT授权验证
下一篇:div支持字符串\n换行
评论列表

发表评论

评论内容
昵称:
关联文章

FastReport完全破解--asp.net使用签名问题
VS调试运行ASP.NET MVC项目,上传静态资源图片404问题,Debug路径
ASP.NET Core 使用 LESS
关于PaddleSharp GPU使用 常见问题记录
ASP.NET Core web API中使用Swagger/OpenAPI(Swashbuckle)
微信支付:签名计算.net4.5
ASP.NET MVC和ASP.NET Core MVC中获取当前URL/Controller/Action
企业项目实战.Net Core +FastReport教程一|制作报表模板
asp.net - 在 ASP.NET Core MVC 中嵌套 TagHelper
一劳永逸,解决.NET发布云服务器的时区问题
FastReport DLL下载
ASP.NET MVC快速入门(一)
【推荐】Razor文件编译 ASP.NET Core
FastReport IIF语句使用
【已解决】.NET 微信支付API V3中JSAPI支付发起wx.chooseWXPay时,提示 支付验证签名失败
.NET5 ASP.NET Core 添加API限流
消息发送时的问题
asp.net core 断点调试无法修改代码
ASP.NET Core官网教程,资料查找
微信支付:C#计算签名

联系我们
联系电话:15090125178(微信同号)
电子邮箱:garson_zhang@163.com
站长微信二维码
微信二维码