小隐的博客

人生在世,笑饮一生
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

为使用Sixxpack加壳的.net程序脱壳

Posted on 2011-03-31 22:03  隐客  阅读(3934)  评论(1编辑  收藏  举报

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

QQ交流