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

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

2011-2-14 09:56
23939
做过程序破解的同学都知道,一般的破解分为静态和动态两种,对于动态的破解,大家比较常用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

[2022冬季班]《安卓高级研修班(网课)》月薪两万班招生中~

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

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

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

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