因为项目中使用到Z.EntityFramework.Extensions 和 Z.EntityFramework.Plus(免费开源)两个类库,但是Z.EntityFramework.Extensions是收费的,只能免费使用一个月,以前的版本可以用序列号生成器注册,但是现在新版本修改了序列号验证的规则所以已经没办法使用了,网上可以找到一篇破解文章,但也是很老的版本,写的也不是很详细,在破解的过程中遇到一些问题,作者也没有明确说明。最后通过Google解决了。虽然不是很完美,但也能用了。后面我会把问题写清楚,希望后面会有好的建议。

简单介绍一下Z.EntityFramework.Extensions,Z.EntityFramework.Plus这两个项目的功能:主要是提升性能,对于一次提交大批量数据比如Excel批量导入,使用EF6自带的SaveChanges要等待很久(EF Core版本已经明显改善),但使用BulkSaveChanges速度就非常的快,改善非常明细,另外Z.EntityFramework.Plus,提供的Query Filter,Batch Update,Batch Delete方法也非常有用,能省不少工时。

下面说一下破解过程

准备条件&工具

de4dot   https://github.com/0xd4d/de4dot  脱壳工具,反混淆用的

dnSpy  https://github.com/0xd4d/dnSpy 反编译工具,修改后代码重新编译新的dll

Strong.Name.Helper.v1.7 https://forum.tuts4you.com/files/file/1145-strongnamehelperv17-whoknows-pass-bs7z/  移除签名验证

de4dot好像也有移除签名(strong name)的功能,但没有测试,还是Strong.Name.Helper方便

具体步骤

从nuget下载最新的Z.EntityFramework.Extensions.dll,为了方便直接把最新版本Z.EntityFramework.Extensions.dll(4.0.11.0) copy到 de4dot 运行目录下

 //执行脱壳命令
//扫描使用的是什么加壳算法 参数-d
de4dot -d Z.EntityFramework.Extensions.dll >>de4dot v3.1.41592. Copyright (C) - de4dot@gmail.com
>>Latest version and source code: https://github.com/0xd4d/de4dot
//提示无法识别
>>Detected Unknown Obfuscator (Z.EntityFramework.Extensions.dll) //注意:如果不加参数直接脱壳,在ndSpy中修改后compiler会报错,说明脱壳失败
//下面是我加了-p ds两个参数测试没有问题
de4dot Z.EntityFramework.Extensions.dll -p ds >>de4dot v3.1.41592. Copyright (C) - de4dot@gmail.com
>>Latest version and source code: https://github.com/0xd4d/de4dot >>Detected DeepSea (Z.EntityFramework.Extensions.dll)
>>Cleaning Z.EntityFramework.Extensions.dll
>>Renaming all obfuscated symbols
>>Saving Z.EntityFramework.Extensions-cleaned.dll
//说明第一步脱壳成功了
使用dnSpy修改代码,去掉验证有效期的代码

注意:打开dnSpy后必须先清除掉所有的assembly

打开需要破解 Z.EntityFramework.Extensions-cleaned.dll,并搜索ValidateLicense

最终指向最关键的地方,我这边的做法是直接注销掉if和throw的代码行,其它的不要修改

单击修改代码

单击complier,如果没有异常就说明修改成功了,但也可能会遇到,比如

这就说明脱壳失败,需要调整脱壳的参数来解决

直接保存就好了。但是依然无法使用,因为这个dll还有签名,你篡改了代码重新编译后签名验证就无法通过,所以这里还需要移除掉签名验证才能使用

移除签名验证,使用Strong.Name.Helper删除签名

到这里基本上破解完成了,在引用到项目中就可以使用了。

最后发现一个问题

  因为我的项目中使用了Z.EntityFramework.Plus而最新版本竟然依赖Z.EntityFramework.Extensions 4.0.11.0并且是验证签名的,所以现在最新版本Z.EntityFramework.Plus因为修改了签名,也无法使用了,我临时的解决方法只能降级1.10.3(这个版本是单独没有依赖)。

这里可能需要重新签名,但是签名也没有私钥,所以我现在还不知道要怎么解决这个问题。

自己动手破解Z.EntityFramework.Extensions 4.0.11.0的方法的更多相关文章

  1. 破解EFCore扩展Dll --- Z.EntityFramework.Extensions.EFCore

    安装 Z.EntityFramework.Extensions.EFCore Install-Package Z.EntityFramework.Extensions.EFCore -Version ...

  2. 第九节: EF的性能篇(二) 之 Z.EntityFramework.Extensions程序集解决EF的性能问题

    一. 综述 该模块主要介绍:EF的性能优化插件Z.EntityFramework.Extensions,该插件收费. (一). 简介 1. 相关网站:http://www.zzzprojects.co ...

  3. 【EF】解决EF批量操作,Z.EntityFramework.Extensions 过期方案

    方案一: 使用EntityFramework.Extended优点: 启下载量是Z.EntityFramework.Extensions的10倍+ 不会过期缺点:不能批量Insert 方案二:解决批量 ...

  4. Kafka 0.11.0.0 实现 producer的Exactly-once 语义(官方DEMO)

    <dependency> <groupId>org.apache.kafka</groupId> <artifactId>kafka-clients&l ...

  5. Windows下MySQL8.0.11.0安装教程

    1.mysql下载地址:https://dev.mysql.com/downloads/installer/ 2.下载安装MySQL 8.0.11.0 https://cdn.mysql.com//D ...

  6. kafka 0.11.0.3 源码编译

    首先下载 kafka 0.11.0.3 版本 源码: http://mirrors.hust.edu.cn/apache/kafka/0.11.0.3/ 下载源码 首先安装 gradle,不再说明 1 ...

  7. 测试EntityFramework,Z.EntityFramework.Extensions,原生语句在不同的查询中的表现。原来池化与非池化设定是有巨大的影响的。

    Insert测试,只测试1000条的情况,多了在实际的项目中应该就要另行处理了. using System; using System.Collections.Generic; using Syste ...

  8. Kafka 0.11.0.0 实现 producer的Exactly-once 语义(中文)

    很高兴地告诉大家,具备新的里程碑意义的功能的Kafka 0.11.x版本(对应 Confluent Platform 3.3)已经release,该版本引入了exactly-once语义,本文阐述的内 ...

  9. Kafka 0.11.0.0 实现 producer的Exactly-once 语义(英文)

    Exactly-once Semantics are Possible: Here’s How Kafka Does it I’m thrilled that we have hit an excit ...

随机推荐

  1. 使用express框架创建服务器

    上一篇写创建第一个node服务器是基于原始方法写的,express框架的作用就是省掉那些原始代码,直接调用相关的方法就可以了,开发起来简单方便. 一.package.json的配置 首先要进行pack ...

  2. demo演示如何写一个无配置格式统一的日志

    一.背景 大量项目在使用logback记日志,有部分项目使用日志混乱,格式不统一,多数人搞不懂配置文件,导致配置错误,现在需要开发一套统一的.少配置的日志组件,方便使用. 二.设计思路 尽量采用0配置 ...

  3. PostMethod和GetMethod用法

    注:新浪短接口参考地址:https://www.douban.com/note/249723561/      将长的url链接转换成短链接 一.GetMethod try { HttpClient ...

  4. Linux系列之yum安装

    yum是Linux系统的安装必备神器,简直不要太方便.但是新系统一般是不自带yum工具的,所以需要手动安装一下. 环境:centos7 新建一个目录用来保存yum安装包 mkdir install 进 ...

  5. Django基础五之django模型层之关联管理器

    class RelatedManager "关联管理器"是在一对多或者多对多的关联上下文中使用的管理器.它存在于下面两种情况: ForeignKey关系的“另一边”.像这样: 1 ...

  6. 基于HTML5 WebGL的工业化3D电子围栏

    前言 现代工业化的推进在极大加速现代化进程的同时也带来的相应的安全隐患,在传统的可视化监控领域,一般都是基于 Web SCADA 的前端技术来实现 2D 可视化监控,本系统采用 Hightopo 的 ...

  7. 触电JavaScript-如何将json 二维数组转换为 JSON object

    最近因为项目中使用的是 ActiveReports .Net 产品,因为他们最近新出了  ActiveReports JS 版本,所以内心有点痒痒,想试试这个纯前端版本报表控件到底如何,毕竟我们项目有 ...

  8. logback颜色

    官网日志连接:https://logback.qos.ch/manual/layouts.html#coloring 举例 logging.pattern.console=%red(%d{yyyy-M ...

  9. 记一次共享内存/dev/shm 小于memory_target 引发的客户DB 宕机问题

    1> 记一次共享内存/dev/shm 小于memory_target 引发的客户DB 宕机问题(处理心得)

  10. php企业微信获取员工userid以及打卡信息

    企业微信可以通过部门列表获取部门下的员工信息,从而获取到员工的userid //首先获取需要的access_token $access_token = json_decode($this->ge ...