最近一直學習DotNet相關資料,sscli真是好東西啊:P。
一邊學習一邊把知識綜合了一下,做了這個小工具。
保護原理和國人的remotesoft,maxtocode差不多。加密後的程式發佈時也需要附帶一個運行庫,
不過和那兩個不同,附帶的運作函式庫不是純native的dll,而是C++/CLI的混合組件。
工具已經有了雛形,整體內核框架完成了。用來加密了一個sample,運作正常。
有些方面甚至超過了maxtocode。
1.不依賴微軟的ildasm和ilasm程式。
IL反組譯和IL彙編都程式實作。
可以加密包含本機代碼的組件。
2.Anti反編譯工具,maxtocode加密的組件無法用reflector直接查看,但是程式運行後用pedumper,dump後就可以用reflecotr查看結構了,當然還是看不到程式碼的。
dnguard加密的組件比我預期的效果還要好,加密後的組件無法用reflector查看,dump後的也無法用reflector插件。
感覺reflector還是有些弱,同類軟體Disa#, Xenocode fox 就可以直接開啟查看maxtocode和dnguard加密的組件。
為此我嘗試在dnguard加密的組件裡面增加了結構混淆,有一點效果,就是在Disa#和fox裡面查看結構是會出現一些張冠李戴的混亂,即類A的函數可能會顯示到類B中。效果還不是很好,會出現問題的函數每個類別只有很少的幾個。
3.Anti .Net 2.0的新特性,不是很強,強度和maxtocode 3.13(內部版)差不多,聽說maxtocode出了3.14了,不知道強度是否有增強(看Jason的blog裡的回復似乎和3.13是一樣的)。 max的3.12patch幾個位元組,反射就可以用了,3.13也差不太多,需要patch的位元組數比3.12還要少。
關於這個方面現在有一個比較好的方案,能夠在不影響效率的前提下使強度提高很多。但也不能完全防dump。
還有一個比較完美的防dump的方案,需要配合另一項保護技術一起才能實現。
這個面向不打算再深入探討了,等DNGuard加密殼完成後,會著手另一項保護技術,最後將兩項保護合在一起。
4. Anti dump後用ildasm,ilasm恢復程序集。 DNGuard除了anti .net 2.0的新功能防dump外,還增加了anti,我早期做的dumper。另外也利用C++/CLI混合組件的特性實作了,防dump後ildasm。不過這個強度不大,對小程式集能被很容易修復後實現il彙編。
現在需要做的工作還有很多,加密演算法還沒弄,運行庫本身的保護也還沒做。發現純native的dll可以找到現成的保護工具,就thmida很不錯,maxtocode的運作庫就有用這個殼,C++/CLI的dll就一直找不到好的方法。看來只能手動加一層保護了,已經開始著手試驗了。現在準備加一個簡單的加密殼,等這個做完就把DNGuard放一個demo上來。
DNGuard加密程序集後用reflector查看:
DNGuard加密程式集dump後用reflector查看:
Maxtocode加密後的程式集用Reflector查看:
Maxtocode加密程序集Dump後用Reflector查看: