應(yīng)用文檔
應(yīng)用文檔
首頁
> 應(yīng)用文檔
實(shí)測超級(jí)狗外殼加密.Net程序后對(duì)抗反編譯工具的效果
更新時(shí)間:2020-08-24 15:06:58 點(diǎn)擊量:
C#是由C和C++衍生出來的一種安全的、穩(wěn)定的、簡單的、優(yōu)雅的面向?qū)ο缶幊陶Z言。它在繼承C和C++強(qiáng)大功能的同時(shí)去掉了一些它們的復(fù)雜特性。同時(shí)也C#綜合了VB簡單的可視化操作和C++的高運(yùn)行效率,以其強(qiáng)大的操作能力、優(yōu)雅的語法風(fēng)格、創(chuàng)新的語言特性和便捷的面向組件編程的支持成為.NET開發(fā)的首選語言。而作為一款.net 語言,也有它讓開發(fā)者非常頭疼的問題——就是很容易被反編譯。
綜上所述,C#程序經(jīng)過超級(jí)狗外殼加密后,會(huì)對(duì)對(duì)應(yīng)的類/方法做代碼處理,以達(dá)到隱藏代碼的目的。需要注意的是,要加密哪個(gè)類或方法,需要在加密界面里手動(dòng)選擇對(duì)應(yīng)的方法,選項(xiàng)有代碼混淆和代碼加密兩種,其中混淆能起到更好的代碼保護(hù)作用,但也有可能會(huì)影響程序運(yùn)行效率。
泰雷茲從.net產(chǎn)品面市以來就注意到這個(gè)問題,其在后續(xù)的產(chǎn)品更新中,就加入了對(duì).NET程序的反編譯保護(hù)。
下面以用戶使用量最多的一款產(chǎn)品超級(jí)狗實(shí)測對(duì)C#外殼加密后在幾款反編譯工具中的表現(xiàn)。
1、程序樣本
超級(jí)狗開發(fā)包自帶的32位C# demo程序dot_NET2_bounce.exe,以其中的一個(gè)類/方法move()作為測試內(nèi)容。
2、原始程序在.NET Reflector 8.5中顯示的內(nèi)容
把dot_NET2_bounce.exe拖進(jìn)反編譯工具.NET Reflector 8.5,可以清楚地看到move()方法的代碼。

3、用超級(jí)狗外殼工具對(duì)此demo程序進(jìn)行外殼加密,加密時(shí)選擇對(duì)move()做代碼加密。

4、加密后的程序在.NET Reflector中的顯示結(jié)果

3、用超級(jí)狗外殼工具對(duì)此demo程序進(jìn)行外殼加密,加密時(shí)選擇對(duì)move()做代碼加密。

4、加密后的程序在.NET Reflector中的顯示結(jié)果
將加密后的程序,拖入.NET Reflector,找到對(duì)應(yīng)的move(),可以看到軟件無法解析該方法,直接報(bào)錯(cuò)。

5、加密后的程序在dnspy中的顯示結(jié)果

5、加密后的程序在dnspy中的顯示結(jié)果
再將加密后的程序,拖入到另外一款反編譯工具dnspy 6.14中,看看會(huì)是什么結(jié)果呢?


可以看出代碼是顯示出來了,但已經(jīng)完全看不出原始程序本來的面目了。
綜上所述,C#程序經(jīng)過超級(jí)狗外殼加密后,會(huì)對(duì)對(duì)應(yīng)的類/方法做代碼處理,以達(dá)到隱藏代碼的目的。需要注意的是,要加密哪個(gè)類或方法,需要在加密界面里手動(dòng)選擇對(duì)應(yīng)的方法,選項(xiàng)有代碼混淆和代碼加密兩種,其中混淆能起到更好的代碼保護(hù)作用,但也有可能會(huì)影響程序運(yùn)行效率。