由於項目中使用到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
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後必須先清除掉全部的assembly3d
打開須要破解 Z.EntityFramework.Extensions-cleaned.dll,並搜索ValidateLicensecode
最終指向最關鍵的地方,我這邊的作法是直接註銷掉if和throw的代碼行,其它的不要修改blog
單擊修改代碼
單擊complier,若是沒有異常就說明修改爲功了,但也可能會遇到,好比
這就說明脫殼失敗,須要調整脫殼的參數來解決
直接保存就行了。可是依然沒法使用,由於這個dll還有簽名,你篡改了代碼從新編譯後簽名驗證就沒法經過,因此這裏還須要移除掉簽名驗證才能使用
到這裏基本上破解完成了,在引用到項目中就能夠使用了。
由於個人項目中使用了Z.EntityFramework.Plus而最新版本居然依賴Z.EntityFramework.Extensions 4.0.11.0而且是驗證簽名的,因此如今最新版本Z.EntityFramework.Plus由於修改了簽名,也沒法使用了,我臨時的解決方法只能降級1.10.3(這個版本是單獨沒有依賴)。
這裏可能須要從新簽名,可是簽名也沒有私鑰,因此我如今還不知道要怎麼解決這個問題。