今天看到一個程式,用萬能的reflector 看了一下,竟然隻有一個actmp.dll ,如何谷歌了一下,發現是用的一款叫Sixxpack進行了壓縮和加殼
網上有人說非常安全,那個寒...
說一下脫殼的過程
一、用reflector 直接輸出項目
二、打開項目,編譯,會有一些類型的小錯誤,修正一下
三、修改一行代碼
Stream
stream2= new FileStream(Application.ExecutablePath.Substring(Application.ExecutablePath.LastIndexOf(\'\\\') + 1), FileMode.Open, FileAccess.Read);
改成:
Stream stream2 = new FileStream(@"c:\hhh.exe", FileMode.Open, FileAccess.Read); //這個路徑指的是那個被加殼的程式
四、加一行代碼
在這行之前:Assembly assembly = Assembly.Load(compressor.Decompress(inStream));
加上:System.IO.File.WriteAllBytes(@"c:\test.exe", compressor.Decompress(inStream));要不要retrun,自己看着辦
五、c:\test.exe 就是被脫殼的程式了。
結論:
1、該種方法就是将原程式寫在固定程式的尾部,加了之後,是不會影響固定程式的運作的,好像N多年前搞VB的時候,玩過這種方法,包括現在很多flash檔案的exe形式,也是這樣的
2、固定檔案的大小是固定,像上面的這個就是 internal static int orig = 0xa000;
3、在加到尾部之前,使用了7-zip進行了壓縮!(該代碼可以好好用下)
4、上面的方法很爛!!!
5、要保護.net代碼還是建議大家使用混淆名稱和混淆流程的保護軟體,reflector自己的對立軟體就不錯,真的是矛和盾啊!!
