首页
社区
课程
招聘
[原创]突破技术封锁,JIT层脱壳浅析
发表于: 2011-12-10 01:04 69869

[原创]突破技术封锁,JIT层脱壳浅析

2011-12-10 01:04
69869

现在.Net 壳真是越来越强了,目前的主流保护思想都是基于“方法”层面的了,在内存中我们已经无法获得完整的Assembly了,即使Dump下来,也看不全IL代码。比较有代表性的壳就是Reactor, MaxToCode, DNGuard HVM等等。
    可是不知道为什么,大牛们总是把技术藏着掖着,害得我们这些小菜们破解无路,经过细读rick大牛的文章和在某人的细心指点下,略有心得,特来和大家分享。
    俗话说:“柿子要找软的捏”,在上面提到的三款强壳中,最弱的可就是要算Reactor了。虽然是最弱的,但是我相信几乎可以难倒90%的DOTNET初学者。虽然大牛们不屑一顾,甚至秒杀,但是作为小菜的我们还是需要研究很久的。
    为了便于研究,我们自己先创建一个小小的CrackMe,代码非常简单如下:


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 6
支持
分享
最新回复 (63)
雪    币: 222
活跃值: (1915)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
曾经XX过一个无壳的.net程序,接着第二个程序就遇到了“柿子”,再后来就放弃了
看了楼主的贴子后,又对.net重新拾起了希望。对于楼主的贴子,感觉二个字“很好”,若非得用三个字的话,那就是“非常好”。
2011-12-10 01:17
0
雪    币: 215
活跃值: (17)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
很有用的文章, 謝謝 !
2011-12-10 07:54
0
雪    币: 34
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
收藏此贴,以备不时之需
2011-12-10 08:27
0
雪    币: 2471
活跃值: (2140)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
感谢分享~~~

不知楼主能不能分享一下如何处理 {SmartAssembly}混淆过的程序。
2011-12-10 09:03
0
雪    币: 122
活跃值: (42)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
6
对付{SA}即使不反混淆,利用Profile API 也是可以轻松找到破解位置的。

在反混淆方面,我现在只能做到名称反混淆,而流程反混淆还在学习中,一旦学成归来,定会分享给大家。
2011-12-10 12:33
0
雪    币: 66
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
顶楼主中。。。。。。。。。。。。。。。。。。。
2011-12-10 13:31
0
雪    币: 1015
活跃值: (235)
能力值: ( LV12,RANK:440 )
在线值:
发帖
回帖
粉丝
8
谢谢了楼主的分享
2011-12-11 11:53
0
雪    币: 120
活跃值: (160)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
看到.net的就直接绕路走了。。。。
2011-12-11 21:26
0
雪    币: 108
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
哎?很不错哎。
2011-12-11 22:52
0
雪    币: 615
活跃值: (590)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
11
暂时看不懂,支持楼主共产主义精神
2011-12-11 22:59
0
雪    币: 2471
活跃值: (2140)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
期待你更多的精彩文章与分享~~~
2011-12-12 00:22
0
雪    币: 107
活跃值: (404)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
这个强帖...必须留名.....膜拜.Net破解啊...
2011-12-12 01:15
0
雪    币: 66
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
ILLY不能使用
出现这种情况
上传的附件:
2011-12-12 08:21
0
雪    币: 421
活跃值: (83)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
15
感谢分享。很久没看到这样的精彩帖子了。DotNet的程序一直比较头疼。
2011-12-12 08:35
0
雪    币: 136
活跃值: (429)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
16
支持美女,好文
2011-12-12 09:08
0
雪    币: 122
活跃值: (42)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
17
[QUOTE=chenjacker;1028543]ILLY不能使用
出现这种情况
[/QUOTE]

应该是DOTNET FrameWork的版本问题,建议按照文中所述,在Pure DOTNET环境中测试。建议仅仅安装.NET Framework v2.0.50727 其他任何软件均不要安装。

也有可能是和其他插件冲突,可以尝试将其他插件全部删除后再试。
2011-12-12 10:00
0
雪    币: 291
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
Mark一下,抽时间好好看一下~
2011-12-12 10:27
0
雪    币: 202
活跃值: (46)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
看了楼主的分享的帖子,仿佛自己已经进入了共产主义了。
2011-12-12 10:29
0
雪    币: 5335
活跃值: (3729)
能力值: ( LV13,RANK:283 )
在线值:
发帖
回帖
粉丝
20
顶一下...........
2011-12-12 11:12
0
雪    币: 122
活跃值: (42)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
21
谢谢你的支持,希望大牛们不要吝啬技术,多多帮助我们小菜。除了Hook CompileMethod,希望大牛们能写一些更底层HOOK以及IL代码还原的文章。
2011-12-12 11:34
0
雪    币: 113
活跃值: (100)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
22
学习学习再学习。
2011-12-12 11:55
0
雪    币: 29
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
标记一下,以后试试看。
2011-12-13 02:39
0
雪    币: 210
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
好文,对新手来说也通俗易懂,期待楼主后续大作
2011-12-13 09:41
0
雪    币: 210
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
我们只需要将button_click1方法的RAV重新指向到这个新的解密后的方法就行了(.text2的RAV是14000)。但是这里我们一定要注意一个很大的问题,就是Tiny Method 和 Fat Method,由于计算Fat Method的数据有点多,我们还是当作Tiny Method来处理,经过IL代码的大小计算后得出的Tiny Method头应该是CA,因此我们将RAV 14006处修改为CA,(限于篇幅,具体计算方法可以Google之)然后我们再将按钮点击出的Button_click1的RVA修改为14006


我来补充一下这里,相信很多人还不明白:

二进制低位为 0x2 (bit 10) 的是 Tiny,0x3 (bit 11) 为 Fat。Tiny Method Header 长度为 1 byte,除去 2 bits 标志位,剩余 6 bit 表示方法长度。


转储出来的代码大小从 02 7B 到 20 2A 结束共 50 个字节,转换成二进制就是 110010
再加上 Tiny Method 的标志 10 就是 11001010,转换为16进制就是 CA 啦
2011-12-13 11:42
0
游客
登录 | 注册 方可回帖
返回
//