本身動手破解Z.EntityFramework.Extensions 4.0.11.0的方法

由於項目中使用到Z.EntityFramework.Extensions 和 Z.EntityFramework.Plus(免費開源)兩個類庫,可是Z.EntityFramework.Extensions是收費的,只能無償使用一個月,之前的版本能夠用序列號生成器註冊,可是如今新版本修改了序列號驗證的規則因此已經沒辦法使用了,網上能夠找到一篇破解文章,但也是很老的版本,寫的也不是很詳細,在破解的過程當中遇到一些問題,做者也沒有明確說明。最後經過Google解決了。雖然不是很完美,但也能用了。後面我會把問題寫清楚,但願後面會有好的建議。git

簡單介紹一下Z.EntityFramework.Extensions,Z.EntityFramework.Plus這兩個項目的功能:主要是提高性能,對於一次提交大批量數據好比Excel批量導入,使用EF6自帶的SaveChanges要等待好久(EF Core版本已經明顯改善),但使用BulkSaveChanges速度就很是的快,改善很是明細,另外Z.EntityFramework.Plus,提供的Query Filter,Batch Update,Batch Delete方法也很是有用,能省很多工時。github

下面說一下破解過程算法

準備條件&工具

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方便spa

具體步驟

從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後必須先清除掉全部的assembly3d

打開須要破解 Z.EntityFramework.Extensions-cleaned.dll,並搜索ValidateLicensecode

 最終指向最關鍵的地方,我這邊的作法是直接註銷掉if和throw的代碼行,其它的不要修改blog

 單擊修改代碼

 單擊complier,若是沒有異常就說明修改爲功了,但也可能會遇到,好比

 這就說明脫殼失敗,須要調整脫殼的參數來解決

 直接保存就行了。可是依然沒法使用,由於這個dll還有簽名,你篡改了代碼從新編譯後簽名驗證就沒法經過,因此這裏還須要移除掉簽名驗證才能使用

移除簽名驗證,使用Strong.Name.Helper刪除簽名

到這裏基本上破解完成了,在引用到項目中就能夠使用了。

最後發現一個問題

  由於個人項目中使用了Z.EntityFramework.Plus而最新版本居然依賴Z.EntityFramework.Extensions 4.0.11.0而且是驗證簽名的,因此如今最新版本Z.EntityFramework.Plus由於修改了簽名,也沒法使用了,我臨時的解決方法只能降級1.10.3(這個版本是單獨沒有依賴)。

      這裏可能須要從新簽名,可是簽名也沒有私鑰,因此我如今還不知道要怎麼解決這個問題。

相關文章
相關標籤/搜索