首页
社区
课程
招聘
[原创]新发现一个简单有效的.net程序破解方法(可破隐藏IL级别的保护)
发表于: 2011-2-14 09:56 26043

[原创]新发现一个简单有效的.net程序破解方法(可破隐藏IL级别的保护)

2011-2-14 09:56
26043
做过程序破解的同学都知道,一般的破解分为静态和动态两种,对于动态的破解,大家比较常用ollydbg,其虽然非常强悍,但貌似对.net程序支持不是很好,呵呵也许是我使用不够熟练吧。

   对于.net程序,我们知道,它类似于Java,编译后只是编译成了一种中间码(IL),其高于汇编但低于高等语言如C#,Java之类。其运行时候需要一个运行时,然后在需要的时候才进行JIT,根据当前系统平台将IL转成汇编码。 普通的保护也就是做些混淆,加上强签名,再加上SuppressIldasmAttribute属性禁止Ildasm,相应的破解方法也比较简单,使用修改过的ildasm就可以将相应的IL导出来,然后修改IL代码,再使用ilasm将之编译回去,破解也就完成了。

    不过呢,目前也有一些比较好的.net程序保护工具可以将IL隐藏,如国内的Maxtocode。今天下午我就遇到了一个该类型的保护程序。我使用ildasm打开后查看到所有的方法内容IL都是下边这样:

.method public hidebysig static void  MethodName(class [System.Windows.Forms]System.Windows.Forms.Control contrl,
                                              string text) cil managed noinlining
{
  // 代码大小       4 (0x4)
  .maxstack  4
  IL_0000:  nop
  IL_0001:  nop
  IL_0002:  nop
  IL_0003:  ret
} // end of method CallCtrlWithThreadSafetyEx::SetText

这样的话即使将它们导出也无意义,即使我们使用反射动态的获取它们的IL,也会得到我上边的结果,显然这样的保护做的已经是非常好了。

    那么我们就没有办法了么? 正当我觉得山穷水尽的时候,突然想起来为什么不使用windbg呢。 我们知道任何的保护它都不应该破坏程序的正常逻辑和行为,那么.net的JIT机制是不是也应该还是有效呢?如果有效的话,那么我们是否可以通过windbg的!u addr命令来反编译得到代码呢,说干就干,我立刻挂上目标程序,果不其然,!dumpil得到的依然是上边说到的Il内容,但!U却能得到正确的完整的逻辑。

既然已经得到的汇编代码,那就好办了,使用windbg的ed命令修改一下关键的指令,立刻工作。哈哈,太完美了,下边我就将我的完整破解过程列出来,以防以后忘记。

本来准备将博客中的文章粘贴到这的,可发现粘贴过来后格式、图片全丢了,那详细步骤大家可以移步:http://www.xioxu.com/?p=326010
有朋友说上边地址访问不了,哈哈,没办法我的网站部署在GAE上边,常这样。所以我刚将文章转成了pdf格式,感兴趣的同学请---下载---
存储在Box.net的 下载地址http://www.box.net/shared/cfx9vbxd7h

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

上传的附件:
收藏
免费 7
支持
分享
最新回复 (23)
雪    币: 504
活跃值: (10)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
2
唯一可行的方法使用OD轉存,但是 .NET4就有點煩了
2011-2-14 10:27
0
雪    币: 217
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
.Net4上边倒是确实没有做过,不过我想它应该还是需要这个JIT的过程吧,只要有,问题我估计不大。
2011-2-14 11:18
0
雪    币: 2134
活跃值: (14)
能力值: (RANK:170 )
在线值:
发帖
回帖
粉丝
4
学习,不过url无法访问,楼主可以导一份pdf文件作为附件加到帖子里
2011-2-14 14:55
0
雪    币: 89
活跃值: (151)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
不管怎么说这都 是一个好的思路,,谢谢
2011-2-14 15:50
0
雪    币: 217
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
6
晚上回去我做一个pdf传上去。
2011-2-14 18:14
0
雪    币: 217
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
7
OK,搞定。 PDF已经上传,还请各位指点。
2011-2-14 20:49
0
雪    币: 504
活跃值: (10)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
8
請注意,如果你一般水平,不要搞它,不小心可能會損壞你的硬盤,,,,我第一次轉存后,這個校驗后提示可能會損壞硬盤,不信的不要怪我。。。

看看我轉存后在 Reflector 分析的代碼吧。。。。具體怎樣改,,那就是非常簡單的事情了

這純粹是分析而已,沒有蓄意損害軟件作者的利益。。。

上传的附件:
2011-2-14 22:40
0
雪    币: 189
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
其实NET framework的程序破解不是那么难的!只要有语言基础和调试功底,神马都是浮云!
2011-2-14 23:47
0
雪    币: 504
活跃值: (10)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
10
當然,懂的不難,不懂得,比登天還難
2011-2-15 08:40
0
雪    币: 217
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
11
膜拜,佩服中。 这个是我第一次做破解,我当时实在是没办法找到IL代码,即使使用dumpil也不行,所以最后才想到在JIT后直接修改汇编码,我相信这个是不会破坏硬盘的。
另外,很想知道您是怎样转存的,我是想方设法搞不到IL,您用的是profiling技术么? 有无相关工具,可否将您的步骤Share一下,谢谢。
2011-2-15 08:52
0
雪    币: 1632
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
OD2正在开发支持.net调试,还支持64位,以后绝对震撼上市,相信调试.net会变得更xx(此处省略2字)。
2011-2-15 09:26
0
雪    币: 217
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
13
按理说道高一尺 魔高一丈,破解与保护应该是相互促进的, 貌似以后微软这方面或者做保护程序的开发人员加强了.
2011-2-15 10:59
0
雪    币: 209
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
牛人,如果能把"壳"去掉了.代码就可以方便使用Reflector看了.只是想法而已...
2011-2-15 14:57
0
雪    币: 1
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
好多高手啊  学习了哈
2011-2-15 17:40
0
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
既然用windbg可以调试jit,od也一样可以跟踪调试,dump却是个问题?可以写个Loader,执行到jne/je的时候WriteMemory就可以了。
但是这种方法只是用win exe方式爆破,仍然不能反编译出.net代码,用处不大。
2011-5-31 23:47
0
雪    币: 206
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
试试看
2011-6-1 07:28
0
雪    币: 211
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
学习一下,谢谢
2011-6-1 08:57
0
雪    币: 210
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
兄弟能否大致讲讲如何使用 OD 转存?
2011-9-26 17:35
0
雪    币: 122
活跃值: (42)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
20
才看到这篇文章,泪流满面....
激动中ing.....
2011-9-26 22:36
0
雪    币: 107
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
确实很经典,.NET的破解技术资料很少!
2011-9-29 10:21
0
雪    币: 237
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
dotNet不懂
markk
2011-9-29 16:14
0
雪    币: 419
活跃值: (31)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
这个要顶的,呵呵
2011-9-30 07:59
0
雪    币: 419
活跃值: (31)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
学习一下!!
2012-4-23 23:51
0
游客
登录 | 注册 方可回帖
返回
//