首页
社区
课程
招聘
[原创]被CodeVeil加密的.net程序的dump与修复
发表于: 2007-2-22 17:18 13878

[原创]被CodeVeil加密的.net程序的dump与修复

2007-2-22 17:18
13878

2007新年,写此文和大家共同学习,并希望更多朋友一同研究.net软件安全课题。这次研究的对象是MuvAudio,这是一个.net软件,应该用得是CodeVeil加密,本文里涉及的内容包括脱壳,手动修复,后续工作留给读者了(定位关键代码,爆破+Keygen,因为有网络验证)。
    软件的下载地址是:http://www.muvaudio.com/。废话不多说,下面开始。
    拿到手先运行,看一下注册验证的方式,是输入用户名和激活码。用户输入错误时,会有提示。用Reflector载入,显示没有CLR头,是个本地软件。



    用Peid查壳是UPolyX,记得以前看CodeVeil加密的软件也是显示这个壳,这个软件也是。我在《加密与解密》第3版中的.net章节里详细描述了CodeVeil的特点(当然,目前还没出版),这里简单说一下。CodeVeil用本地代码对.net的启动和JIT进行了包装,不过它最大的弱点是整体加密,整体解密,也就是说,在某一时刻内存中存在全部解密完成的IL代码,这便是我们dump的时机。因此第一步,便是dump。
    运行MuvAudio,随后用OllyDbg进行Attach,下断点在7906E7F4,这是.net framework 2.0中JIT函数的地址。随后点击任一个尚未运行过的方法,这里我们点击注册码输入窗口的Activate按钮。中断后,就可以进行dump了。



    不了解为什么下中断在7906E7F4的请参考我以前的文章,也可以进行验证,验证的方法如下:注意中断时椎栈中的第四个参数:0013E648,显示该处数据如下,其中黄色高亮的值代表该方法的IL代码和大小。



    11010FFC指向原文件的.text节,将此时的数据与原文章处的数据对比,发现数据已经改变,这便是解密过的IL代码。扯远了,这些问题都在以前的文章中讲过,大家自己看吧。下面准备dump。
    运行NTCore小组的Explorer Suite软件中的Task Explorer,选择MuvAudio后dump PE,保存为MuvAudio2_Dumped.exe。再试一下用ildasm(或者Reflector)载入这个PE文件,仍然显示没有CLR头。当然,dump的PE仍然用的原被加壳PE的头,那个头是本地的,因此需要修复。在《加密与解密》第3版中我介绍了两种半自动的方法,不过有时不成功,这里介绍全手动修复过程,在工具修复失败时,手动是最保险的。这里要求对.net的PE结构有一定了解。(OllyDbg的任务也告一段落,可以关闭了。)



    首先修复的是数据目录中的项,CLR头的具体结构就不再赘述,改为偏移为0x2008,大小为48即可。



    下面是输入表的修正。大家知道.net可执行exe中本地引入表只引入了mscoree.dll中的_CorExeMain,修复此项时可以参考别的.net Exe文件的数据值,主要是数据目录中的Import Table和IAT项。
    此时的IAT为0x2000,大小为8,这是正确的数值,指向了.text的最初始8个字节,不过该处的数据是错误的。



    应该修改为如下所示:



    0019EBC0指向哪儿呢?应该指向_CorExeMain的前两个字节处,在MuvAudio2_Dumped.exe中来到0019EBC0处,正好指向了_CorExeMain字符串。
    下面是数据目录中的Import Table项,0019EB90,大小大一点无所谓,就60吧。这里的引入表结构与win32下完全相同,不清楚的请查阅相关资料。





    到这里,修正完毕。再用Reflector或者ildasm载入一下,OK,可以正常反编译了。下面的工作大家都知道,搜索关键代码,写出keygen或者进行patch。



    不过这时的程序不能正常运行,要运行很简单,用ildasm编译一下,再用ilasm编译一下既可。附件中提供刚刚dump和文件,修正过的文件,以及最终用ilasm重新编译后的可执行文件,大家可自行对比。
    在进行任何代码修改时,不要忘了将强名称的代码删除掉。


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

收藏
免费 7
支持
分享
最新回复 (11)
雪    币: 5275
活跃值: (476)
能力值: (RANK:1170 )
在线值:
发帖
回帖
粉丝
2
这里是附件,包含三个exe文件:dump后的,修正的,重新编译的。

NND,传不上来,只能发到live-share了

http://www.live-share.com/files/163834/MuvAudio2.rar.html
2007-2-22 17:28
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
图文讲解 真是精彩
2007-2-22 19:33
0
雪    币: 263
活跃值: (10)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
4
学习的说,可是 .NET 的我一个都没搞过,真的菜啊
2007-2-22 22:13
0
雪    币: 191
活跃值: (345)
能力值: ( LV9,RANK:450 )
在线值:
发帖
回帖
粉丝
5
《加密与解密》第3版

这个啥时候上市?
2007-2-23 09:59
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
http://www.live-share.com/files/163834/MuvAudio2.rar.html

老大我下不下来哈
2007-2-23 10:23
0
雪    币: 7325
活跃值: (3803)
能力值: (RANK:1130 )
在线值:
发帖
回帖
粉丝
7
过年还在搞这东西,辛苦了~
2007-2-23 11:25
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
过年还如此努力真是敬佩
2007-2-23 14:01
0
雪    币: 370
活跃值: (15)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
9
.net是越来越看不懂了,正如当初面对pe格式一样茫然,
还是得把基础打牢
2007-2-23 14:12
0
雪    币: 5275
活跃值: (476)
能力值: (RANK:1170 )
在线值:
发帖
回帖
粉丝
10
忘了补充一句,CodeVeil加密的软件用通用脱壳机不好使,因为在内存中的PE结构不是合法.net PE结构。所以可以用静态解密或者像文章中说的那样脱。

汗,过年没整啥,天天喝得大醉,一醉解千愁啊!
2007-2-23 20:31
0
雪    币: 50161
活跃值: (20625)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
11
最初由 tankaiha 发布
这里是附件,包含三个exe文件:dump后的,修正的,重新编译的。

NND,传不上来,只能发到live-share了

http://www.live-share.com/files/163834/MuvAudio2.rar.html


感谢tankaiha ,转份本地收藏:
http://bbs.pediy.com/upload/bbs/39953/MuvAudio2.rar
2007-2-23 21:08
0
雪    币: 167
活跃值: (1574)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
12
.net的文章 收藏 保存~~
2007-2-24 20:48
0
游客
登录 | 注册 方可回帖
返回
//