首页
社区
课程
招聘
[原创].NET Reactor分析(适合.net新手实战入门)
发表于: 2007-8-18 10:03 30969

[原创].NET Reactor分析(适合.net新手实战入门)

2007-8-18 10:03
30969

既然目前很多同学对.net的认识还停留在reflector+ildasm+ilasm通知的阶段,干脆,我再写一篇入门的,让大家都能看明白,动起手来也很简单。
     .NET Reactor是EZIRIZ公司出品的一款.net保护软件,该软件保护.net软件的功能不错,可惜对自己的保护却是很弱。前几个版本的混淆强度挺大,很难定位关键代码,可最新的3.3.0.1版保护就太弱了。MegaX已经发布了它的破解,和他交流过程中发现思路我俩的思路有小差别,在此写出来。本文难度较低,适合初学.net的进行实战入门。
    用CFF Explorer载入reactor的主程序,发现没有元数据,是个win32程序。通常来说这种.net程序是被加壳了。Reactor属于whole assembly保护,最大的弱点是完整程序集在内存中出现,脱壳的方法也很简单,用NET Unpacker直接脱既可。脱壳后可发现15个程序集(如图1),其中一个已经显出了reactor的图标,那便是该程序的真身。(注:现在已经有好几种加密壳无法使用NET Unpacker直接脱了,强度比整体保护大很多。)

图1  用NET Unpacker对整体保护的程序进行脱壳

    用Reflector载入dump出的文件,发现其名称混淆形式如图2所示。真不知道EZIRIZ怎么想的,竟然混淆成这么短,且又好读又好记的名称。前几版的名称比该版本麻烦多了。

图2  很简单的名称混淆

    下面看下流程混淆的形式,与前几个版本一样,使用一个跳转,中间加杂使堆栈溢出的指令,且每个方法的开头都是这三句:

L_0000: br L_0007
L_0005: pop 
L_0006: ldc.i4.0 
L_0007: nop 
 

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

上传的附件:
  • 1.JPG (59.31kb,2227次下载)
  • 2.JPG (24.19kb,2200次下载)
  • 3.JPG (102.17kb,2208次下载)
收藏
免费 7
支持
分享
最新回复 (21)
雪    币: 2575
活跃值: (502)
能力值: ( LV2,RANK:85 )
在线值:
发帖
回帖
粉丝
2
.net这块好像很有意思
2007-8-18 10:58
0
雪    币: 716
活跃值: (162)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
3
.net是趋势啊
2007-8-18 11:16
0
雪    币: 296
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
转战.net。。。学习。。
2007-8-18 19:24
0
雪    币: 1844
活跃值: (35)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
5
如果 OD 2.0 带有调试 .net 的功能就好了
2007-8-19 00:12
0
雪    币: 144
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
在黑防看看到你的大作了,原来是组长啊 哈哈 学习了
2007-8-19 12:07
0
雪    币: 370
活跃值: (15)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
7
Tank的.net文章篇篇精彩,在看雪众生中奇葩一朵
2007-8-19 13:51
0
雪    币: 245
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
8
这个dump成il语言后带了一堆资源文件,如果要编译回去,那些资源文件也要加,超麻烦,有没有简单的方法?
2007-8-19 22:16
0
雪    币: 5275
活跃值: (476)
能力值: (RANK:1170 )
在线值:
发帖
回帖
粉丝
9
编译回去只需要加一个资源,/resource=xxxx.res,其余的自动打包
2007-8-20 09:15
0
雪    币: 245
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
10
3ks
另外,这个也可以用那个upacker of .Net Reactor 脱壳.
2007-8-20 09:35
0
雪    币: 208
活跃值: (51)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
对那个流程混淆replace感兴趣,说下原理?
2007-8-22 16:35
0
雪    币: 5275
活跃值: (476)
能力值: (RANK:1170 )
在线值:
发帖
回帖
粉丝
12
N久前提过,运用编译器的自动优化,正在考虑添加针对其它流程混淆形式的反混淆
2007-8-23 14:25
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
C:\Program Files\Eziriz\.NET Reactor\ILCODE\Main.il(7062) : error : syntax erro
at token ''$$method0x60003bc-1'' in:   .field static assembly /* UNKNOWN TYPE
0x15)*/ '$$method0x60003bc-1'

***** FAILURE *****
ilasm 编译的时候 错了。
2007-8-23 17:59
0
雪    币: 5275
活跃值: (476)
能力值: (RANK:1170 )
在线值:
发帖
回帖
粉丝
14
楼上的先脱壳了没?
btw:最新的3.3.1.1保护强度有所增加,不过所遇到的保护手段以前在坛里都提过,有兴趣的试试
2007-8-23 19:56
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
1.按你提供的方法,脱壳15个文件
2007-08-23  16:50            20,480 Unpacked_1.dll
2007-08-23  16:50             6,656 Unpacked_10.dll
2007-08-23  16:50             6,656 Unpacked_11.dll
2007-08-23  16:50             6,656 Unpacked_12.dll
2007-08-23  16:50            16,384 Unpacked_13.dll
2007-08-23  16:50             4,096 Unpacked_14.dll
2007-08-23  16:50             4,096 Unpacked_15.dll
2007-08-23  16:50             6,656 Unpacked_2.dll
2007-08-23  16:50             6,656 Unpacked_3.dll
2007-08-23  16:50             6,656 Unpacked_4.dll
2007-08-23  16:50            16,384 Unpacked_5.dll
2007-08-23  16:50             4,096 Unpacked_6.dll
2007-08-23  16:50             4,096 Unpacked_7.dll
2007-08-23  16:50         3,419,136 Unpacked_8.exe
2007-08-23  16:50            20,480 Unpacked_9.dll

2.然后用ildasm2.0 修改版载入Unpacket_8.exe


Dump 出的il文件头
// Microsoft (R) .NET Framework IL Disassembler. Version 2.0.50727.42
// Copyright (c) Microsoft Corporation. All rights reserved.

// Metadata version: v2.0.50727


3.没有修改IL文件,直接用Ilasm编译回去
C:\Program Files\Microsoft Visual Studio 8\VC>ilasm "C:\Program Files\Eziriz\.NE
T Reactor\ILCODE\Eziriz.il" /resource="C:\Program Files\Eziriz\.NET Reactor\ILCO
DE\Eziriz.res"

中间代码省略
Method Implementations (total): 73
Resolving local member refs: 0 -> 0 defs, 0 refs, 0 unresolved
Writing PE file
Operation completed successfully


运行一下编译的Eziriz.exe,报错:
描述:
  Stopped working

问题签名:
  问题事件名称:	APPCRASH
  Application Name:	Eziriz.exe
  Application Version:	3.3.0.1
  Application Timestamp:	46ce399c
  Fault Module Name:	KERNEL32.dll
  Fault Module Version:	6.0.6000.16386
  Fault Module Timestamp:	4549bd80
  Exception Code:	e0434f4d
  Exception Offset:	0001b09e
  OS 版本:	6.0.6000.2.0.0.256.1
  区域设置 ID:	2052

阅读隐私声明:
  http://go.microsoft.com/fwlink/?linkid=50163&clcid=0x0804


4.重新生成一次IL,册除所有的
 IL_0000:  br         IL_0007

    IL_0005:  pop
    IL_0006:  ldc.i4.0
    IL_0007:  nop
 
5.ilasm回去,此时用fox载入已可以看到多数方法,但还有cctor是看不到。


6.COPY到程序目录运行出错
描述:
  Stopped working

问题签名:
  问题事件名称:	APPCRASH
  Application Name:	Eziriz.exe
  Application Version:	3.3.0.1
  Application Timestamp:	46ce3c1f
  Fault Module Name:	KERNEL32.dll
  Fault Module Version:	6.0.6000.16386
  Fault Module Timestamp:	4549bd80
  Exception Code:	e0434f4d
  Exception Offset:	0001b09e
  OS 版本:	6.0.6000.2.0.0.256.1
  区域设置 ID:	2052

阅读隐私声明:
  http://go.microsoft.com/fwlink/?linkid=50163&clcid=0x0804
 
2007-8-24 10:11
0
雪    币: 334
活跃值: (22)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
16
有技术含量,学习了
2007-8-24 13:21
0
雪    币: 5275
活跃值: (476)
能力值: (RANK:1170 )
在线值:
发帖
回帖
粉丝
17
美丽人生说的是哪个版本?
2007-8-27 21:03
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
Eziriz 加了"Necrobit" 选项之后还能够破解吗? 用 REziriz 脱壳后的程序出现异常,用reflector载入出现没有办法识辨method header,   有谁能够破解加了"Neocrobit" 之后的程序吗?
2007-8-28 13:39
0
雪    币: 261
活跃值: (75)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
Neocrobit 好像是替换了方法头的前四个字节吧?
新版本的脱机已修复这个问题了
2007-8-29 17:35
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
美丽人生的问题解决了
那会儿太笨了,拿1.1 的编译回去了。谢谢!!
2007-9-9 15:47
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
现在.NET的也越来越多了,认真学习中
2008-1-16 14:54
0
雪    币: 201
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
谢谢楼主太厉害了
2008-3-16 11:32
0
游客
登录 | 注册 方可回帖
返回
//