dll加密反編譯
㈠ delphi寫的DLL可不可以反編譯
應該說,除了加密的代碼,大多數的程序(包括dll動態鏈接庫)都可以進行反匯編,但很少能直接反編譯成原語言代碼。
㈡ 如何對編譯的dll文件進行加密來防止反編譯
使用過.NET的程序員都知道,.NET是一個巨大的跨時代進步,它開發效率高、功能強、界面美觀、耐用、新的語言C#已經提交為行業規范、CLR共公運行庫資源豐富,這所有的特點標志著它成為主流編程語言是必然的。
可是他也有一個缺點,那就是編譯好的程序集可以完全被反編譯成源代碼,這給一些不法份子提供了很好的機會,試想想,您辛苦的勞動成果就這樣輕易的給別人利用,是多麼不公平的事阿?所以如何保護我們的知識產權成了一個大問題。
MAXTOCODE 已經完全超越了傳統的混淆手段來保護源代碼的方式,他將完全加密您的代碼,使您的代碼完全沒有辦法反編譯。保護強度已經不是混淆器可以與之抗衡,是目前保護強度最大,最完美的.NET產品保護方案。
MAXTOCODE 是 Aiasted.SOFT 完全自主開發的一款 .NET 代碼保護工具。它是目前世界上高強度保護工具之一。
第一種代碼保護方案是混淆,這是一個不錯的方案,可惜強度還是無法保證,如果要做一個大的逆向工程有一定困難,但針對某個演算法或功能進行解讀還是很容易的。反觀混淆原理則發現,混淆其實只是一個與障眼法差不多的技術。第二種就是MAXTOCODE的保護技術了,MAXOTCODE 採用了難以理解的機器語言來加密您的.NET程序集,(特別注意:MAXTOCODE的強度建立在加密演算法之上,而不上簡單的混淆。)在程序集運行時運態解放源代碼,所以在原理上已經比混淆強度提高了許多。我們保護您所有的代碼,不讓不法份子看到您任何一個有效的代碼,使不法份子完全無法被反編譯。
㈢ 為什麼用visual studio生成的dll可以反編譯解決思路
第一、用某些程序集加密混淆工具,比如intellilock、.net reactor,但一定要最新版本的。
第二、核心演算法用c++寫成dll,然後c#調用這個dll;
第三、某些東西可以做在伺服器端,讓客戶端的程序需要時從伺服器端取。
㈣ C# DLL如何保護防止被破解
.net的實時編譯(JIT)特性決定了用它開發的程序可以被輕松反編譯,同時由於採用反射等技術,使得DLL能被未授權調用。
所以要想不被破解,一是不能被反編譯看到源碼,二是不能被隨意調用。
什麼混淆加殼加密等,都是可逆的。鑒於.net代碼可以包含非託管代碼,我們可以用C++解析C#代碼生成DLL,這個DLL在被調用時驗證調用者信息,就可以解決針對C#的破解,以及非授權調用了。
參考鏈接:http://blog.csdn.net/qwsf01115/article/details/52169574
㈤ 反編譯修改dll文件後重新.net重新生成dll文件
反編譯之前要先檢查文件是否被混淆加密了,如果沒有那就要恭喜你了。
使用reflector反編譯dll源文件一定要安裝FileGenerator的插件,安裝好後就可以然後直接生成vs2005的工程了,然後用vs2005打開工程,修改反編譯代碼中異常的代碼,加入編譯環境所需的dll動態庫,編譯即可。
---------------------------------------------------------------------------------------------------------------
舉例來說:
1、比如inforeader.get_item("name").ToString(),其實應該是inforeader.["name"].ToString(),沒辦法,手工改吧
2、還有,他還會報方法參數問題的錯誤,比如aa.Compare("helloworld","d",5),在5的未知顯示參數錯誤,原來是本身這個位置的參數是一個枚舉類型,反編譯不知什麼原因變成了第五個,於是改成枚舉StringComparison.OrdinalIgnoreCase
3、。。。。。。
------------------------------
如有需要可與本人聯系。
㈥ 軟體採用.net C#開發,不想讓人輕松破解核心邏輯及授權驗證代碼,DLL也不想被人隨意調用,有什麼辦法嗎
首先,我來介紹一下發布出去的DLL所面臨的風險:
一、直接引用
二、反編譯
三、反射
如果DLL一點措施都不做的話,上面任意一種都可以達到破解目的的。
然後,通常網上能搜到如下的保護方式,但真心的來說,用處不大,當然對小白破解者增加了難度。
一、混淆類的工具(如Dotfuscator,但是可以通過ILSpy、Reflector等反編譯哦,直接COPY代碼也能運行)
二、加密類的工具(如MaxToCode,網上有相應的破解教程)
三、加殼類的工具(如Sixxpack,網上有相應的破解教程)
四、強簽名(簽名只是防止項目中的某一個DLL被篡改了,不能防止反編譯或反射的哦)
說了那麼多,難道沒有相對靠譜的方式了嗎?
最後,我們進入正題
上面那些工具的目的歸結出來大約完成兩個目的,一是不能看,二是不能調,當然,我們也是實現這兩個目的,只是手段不同。
一、不能看:.NET DLL可以包含託管堆代碼(可以被反編譯的)與非託管堆代碼(不能被反編譯,要反編譯也是更高層次的了,不在討范圍內),我們將核心邏輯代碼置於非托堆代碼中,由託管堆代碼提供介面供外部調用,調用時將非託管代碼通過.NET動態編譯特性編譯後返回執行結果。這樣就保證了不能看。
二、不能調:我們在非託管代碼中加入驗證調用者來源功能,判斷調用者的HASH值是不是與在非託管代碼中約定的HASH值(發布時需要提前生成相關引用者的HASH值存於非託管代碼,最後生成非託管代碼的DLL放於安裝包中)一致,如一致則通過執行返回結果,不一致則返回空。這樣就解決了非合法來源不能調的問題。
更多參考:http://www.cnblogs.com/dengxi/p/5750170.html