自己动手破解Z.EntityFramework.Extensions 4.0.11.0的方法
因为项目中使用到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的方法的更多相关文章
- 破解EFCore扩展Dll --- Z.EntityFramework.Extensions.EFCore
安装 Z.EntityFramework.Extensions.EFCore Install-Package Z.EntityFramework.Extensions.EFCore -Version ...
- 第九节: EF的性能篇(二) 之 Z.EntityFramework.Extensions程序集解决EF的性能问题
一. 综述 该模块主要介绍:EF的性能优化插件Z.EntityFramework.Extensions,该插件收费. (一). 简介 1. 相关网站:http://www.zzzprojects.co ...
- 【EF】解决EF批量操作,Z.EntityFramework.Extensions 过期方案
方案一: 使用EntityFramework.Extended优点: 启下载量是Z.EntityFramework.Extensions的10倍+ 不会过期缺点:不能批量Insert 方案二:解决批量 ...
- Kafka 0.11.0.0 实现 producer的Exactly-once 语义(官方DEMO)
<dependency> <groupId>org.apache.kafka</groupId> <artifactId>kafka-clients&l ...
- Windows下MySQL8.0.11.0安装教程
1.mysql下载地址:https://dev.mysql.com/downloads/installer/ 2.下载安装MySQL 8.0.11.0 https://cdn.mysql.com//D ...
- kafka 0.11.0.3 源码编译
首先下载 kafka 0.11.0.3 版本 源码: http://mirrors.hust.edu.cn/apache/kafka/0.11.0.3/ 下载源码 首先安装 gradle,不再说明 1 ...
- 测试EntityFramework,Z.EntityFramework.Extensions,原生语句在不同的查询中的表现。原来池化与非池化设定是有巨大的影响的。
Insert测试,只测试1000条的情况,多了在实际的项目中应该就要另行处理了. using System; using System.Collections.Generic; using Syste ...
- Kafka 0.11.0.0 实现 producer的Exactly-once 语义(中文)
很高兴地告诉大家,具备新的里程碑意义的功能的Kafka 0.11.x版本(对应 Confluent Platform 3.3)已经release,该版本引入了exactly-once语义,本文阐述的内 ...
- 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 ...
随机推荐
- 细谈Redis五大数据类型
文章原创于公众号:程序猿周先森.本平台不定时更新,喜欢我的文章,欢迎关注我的微信公众号. 上一篇文章有提到,Redis中使用最频繁的有5种数据类型:String.List.Hash.Set.SortS ...
- CF #579 (Div. 3) A.Circle of Students
A. Circle of Students time limit per test2 seconds memory limit per test256 megabytes inputstandard ...
- centos 下安装 Let’s Encrypt 永久免费 SSL 证书
功能 https证书,免费版,每三个月续签一次,可以用过脚本自动续签 安装 ssh登录到域名配置所在的主机(nginx,apache等) 安装git yum -y install git 输入 git ...
- Laravel .env 多环境配置文件
项目开发中,通常会有本地开发环境.内网测试环境.线上真实环境.这三种环境的配置通常都不尽相同,Laravel 可以通过环境变量 APP_ENV 的值来加载不同的 .env 配置文件.下面会介绍两种方 ...
- 人生,还没困难到"非死不可"
最近半个月,美国著名的Facebook公司,出了好几件大事.第一件事,2019年9月19日,一名陈姓中国软件工程师在Facebook加州总部跳楼自杀.第二件事,2019年10月4日,一名软件工程师在座 ...
- [Windows内核分析]KPCR结构体介绍 (CPU控制区 Processor Control Region)
Windows内核分析索引目录:https://www.cnblogs.com/onetrainee/p/11675224.html 逆向分析操作系统内核代码至少需要具备两项技能: 段页汇编代码非常懂 ...
- link 和 @import 的区别是什么?
link语法结构: <link href="url" rel="stylesheet" type="text/css"> @im ...
- React 项目引入 Dva
背景 现在手上在做的 React 项目因为年代久远,用的 Redux,写代码的体验不太好,所以想升级一下引入 dva.以往使用 dva 都是使用 dva-cli 直接生成 dva 项目,或者在使用 a ...
- Flutter 修改SDK 路径出现的问题
更换Flutter SDK 路径之后出现的问题. 解决方法:flutter packages upgrade. 替换: 替换这两个文件里的路径. 同时修改电脑配置文件里的路径: open -a Tex ...
- Oracle VM VirtualBOX桥接网卡
1.在VirtualBOX设置中的网络菜单,连接方式选择桥接网卡 2.启动系统,设置静态IP sudo vim /etc/network/interfaces auto enp0s3 ...
