close

相信大家都知道,.NET跟Java一樣編譯之後都會產生中介碼
由於中介碼有固定規則的排列組成(組合語言或機械碼的特徵)(←感謝閒逛的過客更正
因此很容易能夠轉回原來的語言
雖然這類型的反組譯程式已經行之有年了
不過我還是昨天才接觸到一款很棒的.NET反組譯工具 Red Gate's Reflector
這個工具非常強大,只要輸入.NET製作的exe或dll
就可以直接看到他的程式碼喔
(非常感謝克洛洛的提醒,我才知道我寫的程式都被看光光了)

官方網站(內有免費的下載點)

我試用過的結果,真的非常強大
我隨便拿了一個我幫人狼遊戲寫的書記程式
結果根本完全被看光嘛!太強大了
雖然有些地方還是有點不同,比方說某段程式自動被加上GoTo指令
或是原始碼自動補上對某些變數的轉型...等等

Reflector_1.gif

而且厲害的地方在於,他還可以把程式碼轉成不同的Code顯示
比方說上面是C#顯示的程式碼(我的程式是用VB 2005寫的)
下面就是用Visual Basic的方式來顯示的程式碼
不過不知為何Visual Basic的字串都會變成ChrW(編號)的方式來顯示
而C#就能直接顯示出來?
可能是因為編譯方式的不同吧

Reflector_2.gif 

還有一個網站能夠線上反組譯喔,只要上傳程式上去即可
不過免費版只能看前十個method,所以實用性並不大

Salamander .NET Decompiler

或許有人會問,程式設計師有沒有辦法不讓別人反組譯程式碼?
因為MSIL設計的關係,事實上是沒辦法的
但還是有辦法讓程式碼作高度的模糊化
像是把funtion name改成a跟b這種東西,而且把程式邏輯整個搞亂
讓人就算打開也沒辦法看懂
這是克洛洛幫我加密過的程式,真是切得很好很強大

Reflector_3.gif 

這種模糊化程式其實也很多
最常見的應該是Visual Studio內附的Dotfuscator
為了這個程式我還特地把Visual Studio 2008裝起來
不過每次模糊,他都說我用.NET Framework 2.0的專案無法模糊...
不知道是不是我操作錯誤了

我也去用過其他軟體如Spices Decompiler
只是免費版好像只能模糊化function name
無法模糊化裡面的程式碼架構
不意外,這些軟體都是要錢的...
等我找到免費又好用的MSIL模糊工具,會再分享的

還是要提醒一下,希望大家都能把這個程式用在正途上(ex. 觀摩學習)
不要去盜用別人寫的程式碼喔

arrow
arrow
    全站熱搜

    蕭雲 發表在 痞客邦 留言(4) 人氣()