徹底破解Dotfuscator

來源:互聯網
上載者:User
破解 前陣子有網友叫我幫忙破解一個控制項.用Dotfuscator混淆了的,字串也加密成這種形式
IL_2b19: ldstr bytearray (9F FA 9A FC 9E FE 8B 00 6E 02 71 04 ) // ........n.q.
IL_2b1e: call string a$PST06000001(string)

.net軟體的保護方法無非就是限試用時間,限訪問IP,用license key,運行時顯示著作權提示這幾種.
限時間或IP是最容易搞定的,不論有沒有被混淆,他都要調用framework的東西,而framework裡的東西無法混淆,所以尋找DateTime, Request之類的字眼,幾下就搞定.
如果用key,也容易跟蹤,起碼他對外曝露了一個類來接收key.如果控制項在檢查到在非法使用時拋出個異常,那是個更愚蠢的做法,因為.net會提供出錯時的呼叫堆疊,方便我跟蹤.顯示著作權提示而且字元給混淆的就最難辦了(沒混淆的倒是容易,尋找就是了)因為他從來不會像正式版那樣工作.
唯一難倒我的控制項是Intersoft WebGrid.net 3.5,因為他用Remotesoft Protector處理過.這Protector不算混淆器,他是把.net的代碼做成win32鏡像,只把中繼資料保留.破他處理過的控制項和破加了密的win32程式一樣難,我沒這樣的本事.當然使用這東西的軟體也很少,因為太貴了,要上千美金
這次破的是一個Chart控制項的試用版,他在渲染圖表時留下了淡淡的聲明著作權的浮水印.要破他只能從他混淆字串的函數入手了,就是string a$PST06000001(string).要寫個逆運算的函數
用反編譯器反編譯了這個函數:
private static string a(string A_0)
{
char[] chs = new char[(uint)A_0.Length];
int i = 732379897;
for (int j = 0; j < (int)chs.Length; j++)
{
char ch = A_0.Chars(j);
byte b1 = (byte)(ch & '\u00ff' ^ i++);
byte b2 = (byte)(ch >> '\b' ^ i++);
chs[j] = (ushort)(b2 << 8 | b1);
}
return string.Intern(new string(chs));
}
第一眼看來,好像很難下手.混淆過程竟然又AND又移位又XOR又OR,還有兩個中間變數,然後又混在一起...但是這個演算法一定是可逆的,不然他怎麼能被加密然後解密.果然,仔細一看,裡面有很多地方是嚇唬人的.本來AND和OR根本是無法復原的,可以肯定相關的運算是廢的:
第一句byte b1 = (byte)(ch & '\u00ff' ^ i++);b1是8位整數,所以ch & ff根本不會改變什麼,於是可以簡化為(byte)(ch ^ i++)
第二句byte b2 = (byte)(ch >> '\b' ^ i++);沒看到什麼不妥,ch是16位的,右移8位可能會有影響
第三句chs[j] = (ushort)(b2 << 8 | b1);又在唬弄人了,b2是8位,右移8就是0了,0|b1就是b1
好了,簡化後的函數是
private static string a(string A_0)
{
char[] chs = new char[(uint)A_0.Length];
int i = 732379897;
for (int j = 0; j < (int)chs.Length; j++)
{
char ch = A_0.Chars(j);
chs[j] = (byte)(ch ^ i++);
i++;
}
return string.Intern(new string(chs));
}

這下就簡單了,^的逆運算就是^,他本身就是加密方法!我可以根據浮水印的字元去il裡尋找了,不過這裡還有個唬人的地方,因為這函數用byte來處理,所以混淆後的高8位應該是0,但是il裡混淆的字串高8位還有東西,明顯是隨機加上去的,對解密結果沒影響.於是,我把加密後的字元用萬用字元來尋找,例如9F ?? 9A ?? .找到了顯示著作權資訊的函數了,把它清空,搞定!
這竟然還是ms推薦的混淆器...


Posted by Yok at September 7, 2004 09:48 PM | TrackBack

Comments
Yok 竟然成為 .Net 破解高手了?



相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。