WebEnh

.net7 mvc jquery bootstrap json 学习中 第一次学PHP,正在研究中。自学进行时... ... 我的博客 https://enhweb.github.io/ 不错的皮肤:darkgreentrip,iMetro_HD
随笔 - 1079, 文章 - 1, 评论 - 75, 阅读 - 174万
  首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
< 2025年2月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 1
2 3 4 5 6 7 8

自己动手破解Z.EntityFramework.Extensions 4.0.11.0的方法

Posted on   WebEnh  阅读(830)  评论(1编辑  收藏  举报

因为项目中使用到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方便

具体步骤

  1. 从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.3405 Copyright (C) 2011-2015 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.3405 Copyright (C) 2011-2015 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 //说明第一步脱壳成功了
      复制代码
      复制代码

       

  2. 使用dnSpy修改代码,去掉验证有效期的代码
    • 注意:打开dnSpy后必须先清除掉所有的assembly
    •  

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

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

    •  单击修改代码

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

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

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

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

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

最后发现一个问题

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

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

编辑推荐:
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
点击右上角即可分享
微信分享提示

喜欢请打赏

扫描二维码打赏

了解更多