为使用Sixxpack加壳的.net程序脱壳
今天看到一个程序,用万能的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自己的对立软件就不错,真的是矛和盾啊!!