自己動手破解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 運行目錄下

 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 //說明第一步脫殼成功了
使用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(這個版本是單獨沒有依賴)。

      這里可能需要重新簽名,但是簽名也沒有私鑰,所以我現在還不知道要怎么解決這個問題。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM