相信大家都知道,.NET跟Java一樣編譯之後都會產生中介碼
由於中介碼有固定規則的排列組成(組合語言或機械碼的特徵)(←感謝閒逛的過客更正)
因此很容易能夠轉回原來的語言
雖然這類型的反組譯程式已經行之有年了
不過我還是昨天才接觸到一款很棒的.NET反組譯工具 Red Gate's Reflector
這個工具非常強大,只要輸入.NET製作的exe或dll
就可以直接看到他的程式碼喔
(非常感謝克洛洛的提醒,我才知道我寫的程式都被看光光了)
官方網站(內有免費的下載點)
我試用過的結果,真的非常強大
我隨便拿了一個我幫人狼遊戲寫的書記程式
結果根本完全被看光嘛!太強大了
雖然有些地方還是有點不同,比方說某段程式自動被加上GoTo指令
或是原始碼自動補上對某些變數的轉型...等等
而且厲害的地方在於,他還可以把程式碼轉成不同的Code顯示
比方說上面是C#顯示的程式碼(我的程式是用VB 2005寫的)
下面就是用Visual Basic的方式來顯示的程式碼
不過不知為何Visual Basic的字串都會變成ChrW(編號)的方式來顯示
而C#就能直接顯示出來?
可能是因為編譯方式的不同吧
還有一個網站能夠線上反組譯喔,只要上傳程式上去即可
不過免費版只能看前十個method,所以實用性並不大
Salamander .NET Decompiler
或許有人會問,程式設計師有沒有辦法不讓別人反組譯程式碼?
因為MSIL設計的關係,事實上是沒辦法的
但還是有辦法讓程式碼作高度的模糊化
像是把funtion name改成a跟b這種東西,而且把程式邏輯整個搞亂
讓人就算打開也沒辦法看懂
這是克洛洛幫我加密過的程式,真是切得很好很強大
這種模糊化程式其實也很多
最常見的應該是Visual Studio內附的Dotfuscator
為了這個程式我還特地把Visual Studio 2008裝起來
不過每次模糊,他都說我用.NET Framework 2.0的專案無法模糊...
不知道是不是我操作錯誤了
我也去用過其他軟體如Spices Decompiler
只是免費版好像只能模糊化function name
無法模糊化裡面的程式碼架構
不意外,這些軟體都是要錢的...
等我找到免費又好用的MSIL模糊工具,會再分享的
還是要提醒一下,希望大家都能把這個程式用在正途上(ex. 觀摩學習)
不要去盜用別人寫的程式碼喔
好康道相報
※欲轉貼本站文章者,只要註明出處及網址即可,不需我同意了,謝謝您的配合
※留悄悄話的網友請注意:如果您非痞客邦會員(包含使用FB/Google+帳號),是看不到回覆的喔
※痞客邦會自動將疑似廣告留言隱藏,因此若留言後看不到,可能是被系統自動隱藏了,由於我現在很久才會開一次網誌,有看到時我才會將非廣告留言解開,敬請見諒
※留悄悄話的網友請注意:如果您非痞客邦會員(包含使用FB/Google+帳號),是看不到回覆的喔
※痞客邦會自動將疑似廣告留言隱藏,因此若留言後看不到,可能是被系統自動隱藏了,由於我現在很久才會開一次網誌,有看到時我才會將非廣告留言解開,敬請見諒
- Apr 19 Sun 2009 15:33
.NET的反組譯程式 Reflector
全站熱搜
留言列表