版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
.NET程序的代碼混淆、加殼與脫殼通常我們通過代碼混淆、加密的形式達到軟件保護的目的。在Web開發(fā)里我們接觸過的可能就是JS代碼加密了,可以通過對JS代碼進行混淆、加密從而實現(xiàn)對核心JS代碼的保護。如果沒有接觸過的可以在這里簡單了解一下,這次我們就不去細說了。在以前Win32的軟件中,加殼脫殼的技術已經(jīng)發(fā)展的非常成熟,國內(nèi)有大名鼎鼎的看雪、吾愛破解等論壇,三四年前還在上學時,論壇里的大牛一直都是自己的偶像。而.NET程序因為編譯結果不是機器代碼語言,而是IL語言,所以加殼脫殼相關的軟件還不是很多,我搜索到了一些,如VS自帶的DotFuscator、.NETReactor、xeoncode等,這次我們就簡單介紹下手邊有的.NETReactor。1.代碼混淆代碼混淆主要通過一些名稱替換、移位、流程混淆的方式來實現(xiàn)。先來看一個測試的DEMO程序,很簡單的一個Winform程序,實例化窗體時實例化一個User類,點擊按鈕顯示用戶名,這樣也可以測試加密、加殼后程序是否能夠繼續(xù)運行。
1
using
System;
2
using
System.Windows.Forms;
3
4
namespace
CodeObfuscator
5
{
6
public
partial
class
Form1
:
Form
7
{
8
private
readonly
User
_currentUser;
9
public
Form1()
10
{
11
InitializeComponent();
12
_currentUser
=
new
User
13
{
14
UserID
=
1,
15
UserName
=
"Parry@cnblogs"
16
};
17
}
18
19
private
void
ButtonAlertClick(object
sender,
EventArgs
e)
20
{
21
MessageBox.Show(_currentUser.UserName);
22
}
23
}
24
25
public
class
User
26
{
27
public
int
UserID
{
get;
set;
}
28
public
string
UserName
{
get;
set;
}
29
}
30
}我們使用最常用的反編譯工具Reflector對生成的exe反編譯查看源碼。下面我們打開.NETReactor進行代碼混淆,載入exe后,在一般設置里可以設置壓縮選項,不過設置后程序初始化速度會變慢,是因為需要將代碼解壓縮后再加載到內(nèi)存中。在混淆選項里將Enable設置為啟用,混淆公共類型,字符串加密等常用的也設置成啟用。其他的選項Tips里都有詳細的解釋,就不一一講解。
當我們再使用Reflector反編譯查看時,發(fā)現(xiàn)沒有看到混淆后的代碼,而是看到了這個結果。猜想應該是.NETReactor程序?qū)xe進行處理后打了個包,我們使用查殼工具查看后發(fā)現(xiàn)果然是這樣,外面套了一層Delphi的東西,這個還不是殼,只是一些額外數(shù)據(jù)。關于Overlay相關內(nèi)容可以查看這里。2.加殼與脫殼加殼實際上就是一種加密方式,被加殼的程序在運行前要先運行一段附加指令,這段附加的指令完成相關操作后會啟動主程序,程序就像被包在一個殼里一樣,加殼的技術在病毒編寫的時候也被大量使用。我們使用北斗加殼程序?qū)ι厦娴膃xe加殼后,再來反編譯看一看。反編譯后我們已經(jīng)找不到之前程序任何相關名稱、代碼,完全被一個“殼子”包裹了起來,在程序運行時,程序?qū)⑾冗\行我們反編譯看到的main函數(shù)進行一系列的解壓、解密動作后將代碼加載到內(nèi)存中運行原始的程序,這樣就實現(xiàn)了對程序的保護功能。脫殼就是對程序進行解壓縮、解密,將外面的一層殼脫去后,繼續(xù)進行逆向工程進行破解。
而關于脫殼,本人也是略知皮毛,不敢胡亂賣弄,感興趣的可以去論壇里學習相關知識。這里介紹的混淆、加殼的方法也只是為了在需要對自己的程序進行保護時的一種方法。覺得文章還行的話就推薦下吧,哈哈。
作者:Parry
出處:/parry/
本文版權歸作者和博客園共有,歡迎轉(zhuǎn)載,但未經(jīng)作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。分類:
03.Sugars,
04..NET標簽:
.NET,
安全綠色通道:
好文要頂
關注我
收藏該文與我聯(lián)系
Parry
關注-16
粉絲-171榮譽:推薦博客+加關注180(請您對文章做出評價)?
上一篇:\o"發(fā)布于2012-11-0917:10"ASP.NETWebAPI(二):安全驗證之使用HTTP基本認證
?
下一篇:\o"發(fā)布于2012-12-0418:37"小心DataContractJsonSerializer和JavaScriptSerializer的內(nèi)部實現(xiàn)差異posted@
2012-11-1417:18
Parry
閱讀(8765)評論(25)
編輯
收藏評論
#1樓
2012-11-1417:31
|
Quella
\o"發(fā)送站內(nèi)短消息"
如果混淆,那就沒辦法看到原來的代碼。。。支持(0)反對(0)
#2樓[樓主]
2012-11-1417:42
|
Parry
\o"發(fā)送站內(nèi)短消息"
\o"查看所回復的評論"@Quella
\o"查看引用原文"引用如果混淆,那就沒辦法看到原來的代碼。。。
是,只是進行了混淆而已,一些邏輯還是能看出來的。支持(0)反對(0)
#3樓
2012-11-1417:44
|
sunriseyuen
\o"發(fā)送站內(nèi)短消息"
\o"查看所回復的評論"@Parry
\o"查看引用原文"引用@Quella
引用引用如果混淆,那就沒辦法看到原來的代碼。。。
是,只是進行了混淆而已,一些邏輯還是能看出來的。
代碼多了,看到你不想看了.支持(0)反對(0)
#4樓[樓主]
2012-11-1417:50
|
Parry
\o"發(fā)送站內(nèi)短消息"
\o"查看所回復的評論"@sunriseyuen
\o"查看引用原文"引用@Parry
引用引用@Quella
引用引用如果混淆,那就沒辦法看到原來的代碼。。。
是,只是進行了混淆而已,一些邏輯還是能看出來的。
代碼多了,看到你不想看了.
但是如果價值很高的話,哈哈!支持(0)反對(0)
#5樓
2012-11-1419:34
|
James-yu
\o"發(fā)送站內(nèi)短消息"
DLL混淆后啥效果?支持(0)反對(0)
#6樓
2012-11-1420:17
|
幻元素
\o"發(fā)送站內(nèi)短消息"
使用了.NETReactor之后,序列化等用到元數(shù)據(jù)的功能就用不了了,不知有沒有什么解決方法.支持(0)反對(0)
#7樓[樓主]
2012-11-1420:41
|
Parry
\o"發(fā)送站內(nèi)短消息"
\o"查看所回復的評論"@James-yu
\o"查看引用原文"引用DLL混淆后啥效果?
效果是一樣的支持(0)反對(0)
#8樓[樓主]
2012-11-1420:44
|
Parry
\o"發(fā)送站內(nèi)短消息"
\o"查看所回復的評論"@幻元素
\o"查看引用原文"引用使用了.NETReactor之后,序列化等用到元數(shù)據(jù)的功能就用不了了,不知有沒有什么解決方法.
還真沒試過,我去看看:-)支持(0)反對(0)
#9樓
2012-11-1420:48
|
rsync
\o"發(fā)送站內(nèi)短消息"
這些混淆沒太大作用。人家直接到處IL,然后修改IL。之后重新build一份就解決問題了。支持(0)反對(0)
#10樓[樓主]
2012-11-1421:41
|
Parry
\o"發(fā)送站內(nèi)短消息"
\o"查看所回復的評論"@imfunny
\o"查看引用原文"引用這些混淆沒太大作用。人家直接到處IL,然后修改IL。之后重新build一份就解決問題了。
你用這種方法試試看能不能看到IL哦支持(0)反對(0)
#11樓
2012-11-1421:44
|
rsync
\o"發(fā)送站內(nèi)短消息"
\o"查看所回復的評論"@Parry
混淆的是可以看到的。我確定。。加殼的不能夠。但是加殼的不一定能夠運行,也不能夠被引用撒的。
用vs帶的ildasm看下就知道了。
至于代碼呢,誰愛看就誰誰拿去的,混淆沒什么意義。支持(0)反對(0)
#12樓
2012-11-1422:17
|
daconglee
\o"發(fā)送站內(nèi)短消息"
至于代碼呢,誰愛看就誰誰拿去的,混淆沒什么意義支持(1)反對(0)
#13樓
2012-11-1422:33
|
LineZero
\o"發(fā)送站內(nèi)短消息"
文章不錯,支持一下支持(0)反對(0)
#14樓
2012-11-1500:27
|
gongji
\o"發(fā)送站內(nèi)短消息"
aspack支持(0)反對(0)
#15樓
2012-11-1507:25
|
liuyilin888
\o"發(fā)送站內(nèi)短消息"
皮毛而已支持(0)反對(0)
#16樓[樓主]
2012-11-1509:45
|
Parry
\o"發(fā)送站內(nèi)短消息"
\o"查看所回復的評論"@liuyilin888
\o"查看引用原文"引用皮毛而已
恩水平一般脫殼的部分還等大牛們來寫
我再學習學習哈哈支持(0)反對(0)
#17樓[樓主]
2012-11-1512:09
|
Parry
\o"發(fā)送站內(nèi)短消息"
\o"查看所回復的評論"@imfunny
一般的混淆是可以的
但是使用上面的.NETReactor混淆后是看不到的,需要脫殼后才能看到。
至于混淆的意義主要看不同的需求了,就想js混淆一樣。支持(0)反對(0)
#18樓
2012-11-1514:07
|
eflay
\o"發(fā)送站內(nèi)短消息"
再保護也比c++的保護好破的多,所以一般最多加個變量名混淆,否則反倒破壞很多東西,降低執(zhí)行效率。。支持(0)反對(0)
#19樓
2012-11-1516:30
|
6572789
\o"發(fā)送站內(nèi)短消息"
混淆后,代碼慢不慢,并且會不會爆病毒錯誤支持(0)反對(0)
#20樓
2012-11-1518:56
|
為樂而來
\o"發(fā)送站內(nèi)短消息"
這個一定要學習。只有winform能這樣做嗎。webform行不行啊支持(0)反對(0)
#21樓
2012-11-1522:29
|
鵬程一鍵財務分析軟件Clojure+Logic+R+C#
\o"發(fā)送站內(nèi)短消息"
使用scala,clojure,等罕用的平臺語言,編譯后相當于進行了一次流程混淆,再用混淆軟件混淆一下,效果應還可以的。支持(0)反對(0)
HYPERLINK"/parry/archive/2012/11/14/Dot_NET_Co
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030全球冷凝水去除泵泵體行業(yè)調(diào)研及趨勢分析報告
- 2025年全球及中國生物制藥中的深層過濾行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 二零二四年游艇俱樂部會員專屬保險及保障服務協(xié)議3篇
- 2024年項目管理人員安全培訓考試題含答案【綜合題】
- 2023年-2024年項目管理人員安全培訓考試題附答案(綜合卷)
- 2023年-2024年項目部治理人員安全培訓考試題及答案【基礎+提升】
- 23年-24年企業(yè)主要負責人安全培訓考試題附參考答案【奪分金卷】
- 2024年項目部安全管理人員安全培訓考試題附答案(精練)
- 2023年項目安全培訓考試題附完整答案【歷年真題】
- 2023年企業(yè)主要負責人安全培訓考試題及完整答案一套
- 《個體防護裝備安全管理規(guī)范AQ 6111-2023》知識培訓
- 五月天歌詞全集
- 商品退換貨申請表模板
- 實習單位鑒定表(模板)
- 六西格瑪(6Sigma)詳解及實際案例分析
- 機械制造技術-成都工業(yè)學院中國大學mooc課后章節(jié)答案期末考試題庫2023年
- 數(shù)字媒體應用技術專業(yè)調(diào)研方案
- 2023年常州市新課結束考試九年級數(shù)學試卷(含答案)
- 正常分娩 分娩機制 助產(chǎn)學課件
- 廣東縣級農(nóng)商銀行聯(lián)社高管候選人公開競聘筆試有關事項上岸提分題庫3套【500題帶答案含詳解】
- 中國成人住院患者高血糖管理目標專家共識課件
評論
0/150
提交評論