日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

由浅至深,谈谈.NET混淆原理 -- 五(MaxtoCode原理),六(其它保护方法)

發布時間:2025/3/20 asp.net 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 由浅至深,谈谈.NET混淆原理 -- 五(MaxtoCode原理),六(其它保护方法) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?

新一代NET代碼保護工具 MaxtoCode 的原理簡介

?

MaxtoCode作為新一代保護工具,他有絕對優于目前所有NET代碼保護工具的強度,是目前最保護強度最高的解決方案。但它也有缺點,最大的缺點即是:被加密后的程序集只能在WINDOWS平臺下運行,而不能跨平臺。但,MS的戰略影響,幾乎不可能出現官方非WINDOWS平臺的NET運行環境,所以,此缺點先忽略不計,也許隨著版本的升級,MaxtoCode可能會考慮跨平臺的應用。

?

MaxtoCode為什么說是目前最強壯的NET代碼保護方案呢?

?

如果大家是老程序員,應該知道Win32中的殼保護方案。這是一個非常好的方案,不過可惜,殼的最終較量變成了Anti debug的較量。因為殼有一個致命的弱點,即在會在內存中完全解開被加殼的程序代碼,并將執行指針指向被加殼的程序代碼第一行。所以,只要找到被加殼的程序代碼第一行,即可以得到原來的程序。這種方式被業界叫做脫殼。

?

MaxtoCode 的原身不是NET語言編寫,它借用了Win32的殼概念,并更優于Win32的殼概念(這也是因為NET的特點才能達到這樣的程度)。MaxtoCode借助門檻更高的ASM語言,對NET代碼進行加密,從而得到了更強壯的NET代碼保護方案。

?

MaxtoCode可以理解成NET的殼,但是它是一個不容易被脫掉的殼,如果說Win32的殼是件外套,那么MaxtoCode就是皮膚。殼的特點是在內存中釋放所有的代碼,而MaxtoCode不會這樣做。它比Win32的殼更加安全,它的安全性處決于MaxtoCode的加密算法。這正是MaxtoCode要達到的目地。因為理論上不可能有無法破解的程序,我們要的是無限提高破解成本的保護方案,來迫使破解者放棄對程序的破解。如果MaxtoCode能把破解強度建立在加密算法上,那么,MaxtoCode將能大幅度的提高保護強度。要知道,一,二種算法可能很好破解,可當有一,二十種算法、而且其中還有大量的高強度算法的變種算法,那么,想要完全解出這些算法是一件頭痛的事情。最重要的是MaxtoCode還在不停的增加算法,來增加MaxtoCode的安全性。

?

講了那么多廢話,下面,我們來講述一下MaxtoCode的原理:

首先先說一下CLI的解釋原理:

CLI接到程序集需要解釋的請求后,動態的從內存中取出一段代碼(IL)然后交由CLI解釋,CLI解釋成機器語言,然后提交給CPU執行,在此中間,還產生大量的靜態緩存。特別需要注意的是,CLI是按Method進行解釋的。

正因為這樣的原理,MaxtoCode則有空間將ASM引入到Method中去。

MaxtoCode的大致工作原理如下:

?

CLI提取MethodIL代碼時,MaxtoCode提供的解釋環境將MethodIL代碼解密回去。

CLI提取完畢后,MaxtoCodeMethodIL代碼再進行破壞,達到加密的目地

原理表:

?

CLI > MaxtoCode > IL > CLI > MaxtoCode > 加密

?

從而保證不會象原始的Win32殼一樣留下代碼在內存中。也保證了將NET的保護安全建立在眾多的加密算法之上。

?

同時,由于在未被MaxtoCode解密的情況下是亂碼,根本無法被靜態反編譯,所以不管是高級的反編譯,還是低級的反編譯,都無法得到一個可讀或可看的程序集。

?

動態加、解密成本相對來說提高,所以MaxtoCode在處理結構上做了更多的優化,已經把結構處理得相當的優化,所以,在某些特寫的程序上幾乎感覺不到MaxtoCode的存在,而且MaxtoCode強制了NET的緩存機制,“一般加密方法”還可以提高運行速度1%~5%。重要的方法使用“高級加密方法”可以得到非常穩定的保護(這里要負責任的說一句,高級加密方法會降低運行效率,根據不同的程序產生不同的影響,最好的效果是完全感覺不到。但我們希望不要全部使用高級加密方法進行加密,而是酌情考慮使用和先測試再使用)。

?

―――――――――――――――我是無敵分隔線―――――――――――――――――

其它保護方法

?

還有一些方法,是無法使用工具去實現的,只有手工去做。

如:類折分,方法折分

一個類,寫完后,手工折成上百個類

一個大方法,折成上百個子方法

別覺得這不可能哦,我可親眼見過這樣的程序,不過,從安全性來說……沒多大意義,因為Reflector的功能真的太強大,只要你是能夠看得見的結構,都逃不了被Reflector分析得一個透徹。

???????? 還有一著名的保護方法:Reflector的保護方法,把自己的核心程序做成一個資源包,然后加密,當需要的時候動態加載,只要你在載入的時候夠復雜,還是有一定的保護作用的。其實,這種方法的破解有更好的方法,可以只需要幾分鐘就可以解破。但今天它不是我們需要講解的范圍,故不詳細解說了。免得某些用此方法的同志圍摳我。呵呵。

?

好,至此,從淺到深,談談NET混淆原理已經講完了,由于時間很忙,無法給出更多的例子和實戰經驗,所以希望大家能夠舉一反三,自己多演練,多研究。如果那天有那位大俠要發布反流程混淆的工具,記得給小弟我留一份,非常感謝。

轉載于:https://www.cnblogs.com/Aiasted/archive/2005/07/11/190447.html

總結

以上是生活随笔為你收集整理的由浅至深,谈谈.NET混淆原理 -- 五(MaxtoCode原理),六(其它保护方法)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。