首页
社区
课程
招聘
[原创]Xenocode Fox 2007 Community Edition主程序脱壳及网络验证爆破
发表于: 2006-9-13 15:31 18047

[原创]Xenocode Fox 2007 Community Edition主程序脱壳及网络验证爆破

2006-9-13 15:31
18047

Xenocode是.net下非常著名的软件加密公司,Fox是其产品之一,是一个反汇编器(另外还有个postbuild是加密的)。Fox 2007的功能包括查看,分析,及Profile .Net程序。可惜免费的Community版不提供Profile的功能,Professional版的网上又没的下。不过无所谓,PEBrowse里连Profiler的源代码都提供了,为了这个花钱也不值得。Fox 2007 CE的下载地址是http://www.xenocode.com/Products/Fox/Setup.msi,让我们看看这款著名的软件其最新版的保护方式吧。
    安装后目录下就Fox.exe这一个程序,用Reflector打开,发现错误,不含CLR头。不是吧,现在这么流行用win32加密.net程序吗?



    用PEiD查一下壳,显示UPolyX v0.5 *。通常这是不可信的,好像我试过的被本地代码加密过的.net程序查出都是这个壳。就算是,偶也不会脱,哈哈。用OD载入,果然是本地代码程序。试着跟了一会,没有头绪。还是从.net下PE执行的原理着手吧。
    过去讲过,.net下加壳分两种,一种是像MaxtoCode那样,分Method加密解密,在内存中不存在完整的assembly。另一种是用传统的加壳技术,解密后原来完整的assembly会出现在内存中,这就给我们dump之提供了先决条件。Fox用的是第二种。可是断点下在哪儿呢?就下在“万能断点”,mscorjit.dll的compileMethod处,在我的机上是7906E7F4。在OD中下断,bp 7906E7F4。这里要注意,就是在入口点下断会显示地址无效,因为mscorjit.dll还没有被载入,运行一段后就可以下断了。
当第一次中断时,我们看堆栈值
0012EDE8        79E9776F  返回到 mscorwks.79E9776F
0012EDEC        790AF170  mscorjit.790AF170
0012EDF0        0012EF2C
0012EDF4        0012EFB8
0012EDF8        00107210
0012EDFC        0012F06C

    原来讲过,第四行的值指向了struct CORINFO_METHOD_INFO_结构,该结构如下:
struct CORINFO_METHOD_INFO
{
    CORINFO_METHOD_HANDLE       ftn;
    CORINFO_MODULE_HANDLE       scope;
    BYTE *                      ILCode;
    unsigned                    ILCodeSize;
    unsigned short              maxStack;
    unsigned short              EHcount;
    CorInfoOptions              options;
    CORINFO_SIG_INFO            args;
    CORINFO_SIG_INFO            locals;
};

    我们在OD中这样选择:



    然后在数据窗口中查看BYTE *   ILCode的地址。


    至于这段代码的内容是什么,我们不关心,但这是JIT引擎编译的第一个method,也就是说如果FOX是整个assembly解密,这时已经解密完成了。根据.net下PE结构的定义,IL代码是定义在.text节中的,和win32下的PE差不多,在内存中也遵循rva偏移定位的原则。我们来到0138DA40所在的段:


    双击,查看这段内存的数据,看到了什么?PE文件头!难道这就是解密后的原文件?不妨dump下来看看。点右键,选“保存数据到文件”,然后把扩展名从mem改为exe。呵呵,图标一下又变成fox了。


    用Reflector再次打开dump.exe,这次Reflector能完全显示出来了。这就是Fox的本体。


    试着运行一下,报错。“Unalbe to find a runtime version to run this application.”。没事,这种小困难不算啥,我不会修复让微软帮忙。直接用ildasm.exe反编译,然后原封不动地再用ilasm.exe编译回来。OK,一切问题解决,程序可以正常运行了。

/////////////////////////////////////////////////////////////

    下面解决网络验证问题。当你联网运行fox时,会出现个小窗口,提示你输入在fox网站的用户名和密码,进行验证。这可不爽,难道每次运行FOX我都得联网?而且还有天数限制。不过既然源代码已经出来了,就把网络验证块给爆了吧。


    在Reflector中来到入口处,代码如下。(跟踪窗口的产生过程,用PEBrowse调试比较方便。如果哪个call你跳过去后,窗口就显示的话,就跟进去,直到找到网络验证的地方,就像OD中的F7,F8。我已经调试过了,所以这里直接给出静态的流程。)

[STAThread]
private static void xc447809891322395()
{
      Application.EnableVisualStyles();
      Application.SetCompatibleTextRenderingDefault(false);
      [COLOR=red]x3e4e23fadc83a77e xeefadcae1 = new x3e4e23fadc83a77e();[/COLOR]
      while (xeefadcae1.x69b9cb33c60f0e3b)
      {
            Application.Run(xeefadcae1);
            if (2 != 0)
            {
                  return;
            }
      }
}

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 7
支持
分享
最新回复 (19)
雪    币: 47147
活跃值: (20450)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
2
tankaiha能否将这个破解好了的Fox传一份上来?以后分析.net时可能用的上。
2006-9-13 15:46
0
雪    币: 5275
活跃值: (456)
能力值: (RANK:1170 )
在线值:
发帖
回帖
粉丝
3
汉,我拔号,不如直接传给你吧
而且不如传dump过的程序,这样大家自己反编译,再编译成自己平台的运行版本。
偶的是.net Framework 2.0,这样1.1的用户就用不了了。

btw:这个版本是免费的,不过我dump后大家也好分析一点。
2006-9-13 16:02
0
雪    币: 47147
活跃值: (20450)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
4

尽量断网时用,如果要联网用,先在HK_USER\Software\Oak Vale Networks里建个UserSerial,随便输入点东西,这样联网时也不会提示了。

上传的附件:
2006-9-13 16:27
0
雪    币: 97697
活跃值: (200824)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
5
最初由 tankaiha 发布
汉,我拔号,不如直接传给你吧
而且不如传dump过的程序,这样大家自己反编译,再编译成自己平台的运行版本。
偶的是.net Framework 2.0,这样1.1的用户就用不了了。

btw:这个版本是免费的,不过我dump后大家也好分析一点。


tankaiha
2006-9-13 16:41
0
雪    币: 61
活跃值: (160)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
6
学习
2006-9-13 23:41
0
雪    币: 206
活跃值: (32)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
最近难得一见的精华贴。
2006-9-14 11:23
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
谢谢!非常好的文章!
2006-9-14 13:00
0
雪    币: 338
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
9
爆强!!支持!!
2006-9-14 19:14
0
雪    币: 230
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
非常好的帖子
2006-9-14 19:20
0
雪    币: 370
活跃值: (15)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
11
.net破解领域独树一帜的专家能手
学习过多篇tankaiba的文章,篇篇绝对精华
2006-9-14 23:04
0
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
偶想进NE365了,牛人好多....那个病毒样本还不敢看的说......
2006-9-15 08:14
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
学习了!支持!
2006-9-19 12:56
0
雪    币: 204
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
牛人真多!学习!
2006-10-1 20:26
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
收下学习!支持!
2006-10-2 13:32
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
thank you , tankaiha
2006-10-2 14:58
0
雪    币: 690
活跃值: (1826)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
17
请问楼主:我的机器中mscorjit.dll的compileMethod没有导出,难道MS隐藏了
2006-10-15 11:44
0
雪    币: 222
活跃值: (115)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
18
请问楼主:我的机器中mscorjit.dll的compileMethod没有导出,

我的也没有啊,没法中断程序,请楼主仔细看下
2007-1-29 20:31
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
好文章,支持。楼主能否把那个postbuild也破了,挺好的软件。
2007-1-29 21:15
0
雪    币: 401
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
为什么我无法dump内存数据,"保存数据到文件"报错.而且我看到的段中访问性是R,不是楼主的RWE,并且我是Imag,不是Map
2007-3-27 08:17
0
游客
登录 | 注册 方可回帖
返回
//