NET程序的代碼混淆、加殼與脫殼

NET程序的代碼混淆、加殼與脫殼

ID:37863135

大?。?59.50 KB

頁數(shù):9頁

時(shí)間:2019-06-01

NET程序的代碼混淆、加殼與脫殼_第1頁
NET程序的代碼混淆、加殼與脫殼_第2頁
NET程序的代碼混淆、加殼與脫殼_第3頁
NET程序的代碼混淆、加殼與脫殼_第4頁
NET程序的代碼混淆、加殼與脫殼_第5頁
資源描述:

《NET程序的代碼混淆、加殼與脫殼》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。

1、.NET程序的代碼混淆、加殼與脫殼通常我們通過代碼混淆、加密的形式達(dá)到軟件保護(hù)的目的。在Web開發(fā)里我們接觸過的可能就是JS代碼加密了,可以通過對(duì)JS代碼進(jìn)行混淆、加密從而實(shí)現(xiàn)對(duì)核心JS代碼的保護(hù)。如果沒有接觸過的可以在這里簡單了解一下,這次我們就不去細(xì)說了。在以前Win32的軟件中,加殼脫殼的技術(shù)已經(jīng)發(fā)展的非常成熟,國內(nèi)有大名鼎鼎的看雪、吾愛破解等論壇,三四年前還在上學(xué)時(shí),論壇里的大牛一直都是自己的偶像。而.NET程序因?yàn)榫幾g結(jié)果不是機(jī)器代碼語言,而是IL語言,所以加殼脫殼相關(guān)的軟件還不是很多,我搜索到了一些,如VS自帶的DotFuscator、.NETReactor

2、、xeoncode等,這次我們就簡單介紹下手邊有的.NETReactor。1.代碼混淆代碼混淆主要通過一些名稱替換、移位、流程混淆的方式來實(shí)現(xiàn)。先來看一個(gè)測(cè)試的DEMO程序,很簡單的一個(gè)Winform程序,實(shí)例化窗體時(shí)實(shí)例化一個(gè)User類,點(diǎn)擊按鈕顯示用戶名,這樣也可以測(cè)試加密、加殼后程序是否能夠繼續(xù)運(yùn)行。?1?using?System;?2?using?System.Windows.Forms;?3??4?namespace?CodeObfuscator?5?{?6?????public?partial?class?Form1?:?Form?7?????{?8????

3、?????private?readonly?User?_currentUser;?9?????????public?Form1()10?????????{11?????????????InitializeComponent();12?????????????_currentUser?=?new?User13?????????????{14?????????????????UserID?=?1,15?????????????????UserName?=?"Parry@cnblogs"16?????????????};17?????????}18?19?????????pr

4、ivate?void?ButtonAlertClick(object?sender,?EventArgs?e)20?????????{21?????????????MessageBox.Show(_currentUser.UserName);22?????????}23?????}24?25?????public?class?User26?????{27?????????public?int?UserID?{?get;?set;?}28?????????public?string?UserName?{?get;?set;?}29?????}30?}我們使用最常用的反編譯

5、工具Reflector對(duì)生成的exe反編譯查看源碼。下面我們打開.NETReactor進(jìn)行代碼混淆,載入exe后,在一般設(shè)置里可以設(shè)置壓縮選項(xiàng),不過設(shè)置后程序初始化速度會(huì)變慢,是因?yàn)樾枰獙⒋a解壓縮后再加載到內(nèi)存中。在混淆選項(xiàng)里將Enable設(shè)置為啟用,混淆公共類型,字符串加密等常用的也設(shè)置成啟用。其他的選項(xiàng)Tips里都有詳細(xì)的解釋,就不一一講解。?當(dāng)我們?cè)偈褂肦eflector反編譯查看時(shí),發(fā)現(xiàn)沒有看到混淆后的代碼,而是看到了這個(gè)結(jié)果。猜想應(yīng)該是.NETReactor程序?qū)xe進(jìn)行處理后打了個(gè)包,我們使用查殼工具查看后發(fā)現(xiàn)果然是這樣,外面套了一層Delphi的東西,

6、這個(gè)還不是殼,只是一些額外數(shù)據(jù)。關(guān)于Overlay相關(guān)內(nèi)容可以查看這里。2.加殼與脫殼加殼實(shí)際上就是一種加密方式,被加殼的程序在運(yùn)行前要先運(yùn)行一段附加指令,這段附加的指令完成相關(guān)操作后會(huì)啟動(dòng)主程序,程序就像被包在一個(gè)殼里一樣,加殼的技術(shù)在病毒編寫的時(shí)候也被大量使用。我們使用北斗加殼程序?qū)ι厦娴膃xe加殼后,再來反編譯看一看。反編譯后我們已經(jīng)找不到之前程序任何相關(guān)名稱、代碼,完全被一個(gè)“殼子”包裹了起來,在程序運(yùn)行時(shí),程序?qū)⑾冗\(yùn)行我們反編譯看到的main函數(shù)進(jìn)行一系列的解壓、解密動(dòng)作后將代碼加載到內(nèi)存中運(yùn)行原始的程序,這樣就實(shí)現(xiàn)了對(duì)程序的保護(hù)功能。脫殼就是對(duì)程序進(jìn)行解壓縮

7、、解密,將外面的一層殼脫去后,繼續(xù)進(jìn)行逆向工程進(jìn)行破解。?而關(guān)于脫殼,本人也是略知皮毛,不敢胡亂賣弄,感興趣的可以去論壇里學(xué)習(xí)相關(guān)知識(shí)。這里介紹的混淆、加殼的方法也只是為了在需要對(duì)自己的程序進(jìn)行保護(hù)時(shí)的一種方法。覺得文章還行的話就推薦下吧,哈哈。作者:Parry?出處:http://www.cnblogs.com/parry/?本文版權(quán)歸作者和博客園共有,歡迎轉(zhuǎn)載,但未經(jīng)作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責(zé)任的權(quán)利。分類:?03.Sugars,?04..NET標(biāo)簽:?.NET,?安全綠色通道:?好

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無此問題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。