因为项目中使用到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 运行目录下

  1. //执行脱壳命令
  2. //扫描使用的是什么加壳算法 参数-d
  3. de4dot -d Z.EntityFramework.Extensions.dll
  4.  
  5. >>de4dot v3.1.41592. Copyright (C) - de4dot@gmail.com
  6. >>Latest version and source code: https://github.com/0xd4d/de4dot
  7. //提示无法识别
  8. >>Detected Unknown Obfuscator (Z.EntityFramework.Extensions.dll)
  9.  
  10. //注意:如果不加参数直接脱壳,在ndSpy中修改后compiler会报错,说明脱壳失败
  11. //下面是我加了-p ds两个参数测试没有问题
  12. de4dot Z.EntityFramework.Extensions.dll -p ds
  13.  
  14. >>de4dot v3.1.41592. Copyright (C) - de4dot@gmail.com
  15. >>Latest version and source code: https://github.com/0xd4d/de4dot
  16.  
  17. >>Detected DeepSea (Z.EntityFramework.Extensions.dll)
  18. >>Cleaning Z.EntityFramework.Extensions.dll
  19. >>Renaming all obfuscated symbols
  20. >>Saving Z.EntityFramework.Extensions-cleaned.dll
  21. //说明第一步脱壳成功了
使用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. 线上CPU飙升100%问题排查,一篇足矣

    一.引子 对于互联网公司,线上CPU飙升的问题很常见(例如某个活动开始,流量突然飙升时),按照本文的步骤排查,基本1分钟即可搞定!特此整理排查方法一篇,供大家参考讨论提高. 二.问题复现 线上系统突然 ...

  2. Linux初识之Centos7中terminal光标位置偏移问题的解决

    新安装的centos7打开terminal发现光标位置向右偏移,使用起来影响感官,经查询后找到类似情况并顺利解决问题,特记录解决过程以作参考. 1.未解决时光标向右偏移显示: 2.打开设置(Setti ...

  3. select2 分组后的选项无法被选中

    在使用select2组件的过程中发现分组下的选项无法选中,与分组在同一级的选项可以被选中! 1.所用select2版本select2-4.0.32 2.HTML代码: <input id=&qu ...

  4. Java String 类解析

    I.构造函数: public String() {} 默认构造函数 public String(String original) {} 使用原有字符串构造  public String(char va ...

  5. python实现感知机线性分类模型

    前言 感知器是分类的线性分类模型,其中输入为实例的特征向量,输出为实例的类别,取+1或-1的值作为正类或负类.感知器对应于输入空间中对输入特征进行分类的超平面,属于判别模型. 通过梯度下降使误分类的损 ...

  6. 23种设计模式之责任链模式(Chain of Responsibility Pattern)

    责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链.这种模式给予请求的类型,对请求的发送者和接收者进行解耦.这种类型的设计模式属于行为型模式. ...

  7. Flask基础(07)-->正则自定义转换器

    正则自定义转换器 为什么要自定义正则转换器? 因为默认转换器太过于笨重,往往不能满足我们实际业务的需求,这时候我们就需要自定义正则转换器了. 那么我们怎么自定义正则转换器呢? from flask i ...

  8. 【SQL server基础】手动创建数据库和表格

    use master go if exists(select * from sysdatabases where name='learning') drop database learning go ...

  9. json.dumps和json.loads

    概念理解 1.json.dumps()和json.loads()是json格式处理函数(可以这么理解,json是字符串) (1)json.dumps()函数是将一个Python数据类型列表进行json ...

  10. Cocos Creator一步一步实现重力球游戏

    『 游戏玩法 』 通过手机陀螺仪,调整手机,让球从上一层的间隔中落到下一层,楼层会不断上涨,如果球碰到上方或者下方的火焰,游戏结束. 『 游戏预览 』 ​ 『 开发工具 』 1. CocosCreat ...