最終版 Reflector v1.0 (+簡單的反流程混淆)
(0415增加簡單的反流程混淆功能,滿足日常使用需要,不再更新,轉向ILSpy,見12點后面)
Reflector過期?這可不行!自己動手吧!
看雪上拿到Reflector 7.0的源碼,根據自己需要稍作修改,自己編譯,就這么簡單!
為了便于使用,自己做了一些修改:
1,移除所有授權相關代碼和資源
2,移除所有報告錯誤相關代碼和資源
3,移除ReflectorInstaller相關代碼和資源,大小由4.3M(混淆壓縮)變成2.8M(未混淆壓縮)
4,增加代碼著色,原來只有黑色和深綠色,看起來要命。類名紅色,方法名綠色,類字段淺黃色,參數淺綠色,本地變量黑色(若不喜歡自己修改代碼)
5,改善if語句,只有一個語句時不換行,不加大括號,增加代碼可讀性。下圖第一行
6,改善表達式圓括號。原來為了嚴禁,幾乎每一個子表達式外面都套一層圓括號,如果一個條件表達式有多個子表達式組成,最后將會看到非常多的圓括號。這里引入運算符優先級,不需要的時候不加圓括號
7,人工對上百個類進行反混淆,增加Reflector代碼可讀性,這次發布的版本也沒有進行任何混淆
9,解除Reflector對部分產品反編譯的限制,里面居然有國產的Dv_News
10,針對名稱混淆,如果出現不可見字符,一律使用斜杠\加ASCII碼的方式
11,解封所有隱藏功能。那個路徑,是vs所在路徑,選擇需要的功能,然后Extract……
12,增加簡單的反流程混淆功能
一般的流程混淆(如SmartAssembly),都是通過增加很多跳轉指令,打亂IL指令的順序,而Reflector采用的是棧式分析,遇到這種最簡單的調整,直接因為棧不平衡而崩潰。我找到問題所在后,發現根本無法補救,因為Reflector可以說壓根就沒有AST!做了一個嘗試,把多余的跳轉全部干掉,結果Reflector的分析過程相當脆弱……最后,在進行指令分析之前,增加一塊功能,根據強跳轉給指令來一個排序,排序后,每一個強跳轉,實際上就是下一句,然后再花最小的代價增強Reflector的分析功能(因為它還是脆弱得立馬崩潰……)
寫到最后,忽然間想起來,我在08年做過反名稱混淆和反流程混淆的工具,基于Cecil,離開上海后不知道代碼丟哪里去了。當然,我的工具還有一些非常具有特色的功能,移植到Reflector是不可能了,因為Reflector的架構真的很糟糕!
同根生與Cecil,我很看好ILSpy!并且我發現ILSpy有很棒的AST和專門的反流程混淆!
下載地址改為:http://xcode.codeplex.com/releases/view/64499
最后,為了辨別不同的修改版,把版本號給改了一下!
最最后,Reflector的反流程混淆能力依然很差,這里推薦新生的ILSpy,它的開源和規范化,有取代Reflector的趨勢!
源代碼(密碼是:NewLife+群號碼,7個字母和8個數字,別偷懶o(∩_∩)o )











浙公網安備 33010602011771號