首页
社区
课程
招聘
[结束]2008看雪论坛读书月第二题[7.18~7.27]
发表于: 2008-7-18 19:13 53371

[结束]2008看雪论坛读书月第二题[7.18~7.27]

2008-7-18 19:13
53371
收藏
免费 0
支持
分享
最新回复 (139)
雪    币: 5275
活跃值: (461)
能力值: (RANK:1170 )
在线值:
发帖
回帖
粉丝
101
试试WinDBG+SOS呢
(我没试,只是提一下)



这个问题,可以用IDA反编译mscorwks(反编译时加载pdb),完成后导出MAP文件,在OD中读入,就可以显示API的名称了。不过mscorlib可能不行,因为是托管的。
2008-7-25 20:27
0
雪    币: 503
活跃值: (80)
能力值: (RANK:280 )
在线值:
发帖
回帖
粉丝
102
加油好好利用这个周末
2008-7-25 20:52
0
雪    币: 274
活跃值: (13)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
103
如果感觉做注册机太难,那就试一下找出序列号并分析保护机制,不要忘记本题是有两个要求的啊.
2008-7-25 22:02
0
雪    币: 136
活跃值: (20)
能力值: ( LV10,RANK:170 )
在线值:
发帖
回帖
粉丝
104
经过几天的努力,终于弄好了。
上传的附件:
2008-7-26 00:43
0
雪    币: 136
活跃值: (20)
能力值: ( LV10,RANK:170 )
在线值:
发帖
回帖
粉丝
105
好方法!赞一个!
只是,自己IDA不会用,如果你方便,帮我生成一个mscorwks.map好吗?谢谢!
2008-7-26 00:45
0
雪    币: 503
活跃值: (80)
能力值: (RANK:280 )
在线值:
发帖
回帖
粉丝
106
恭喜恭喜
2008-7-26 00:50
0
雪    币: 136
活跃值: (20)
能力值: ( LV10,RANK:170 )
在线值:
发帖
回帖
粉丝
107
谢谢!
在这里学到不少。
我以前走了弯路,分析得太细。
后来听你们说,只找数据,才走出那个弯。。
2008-7-26 00:54
0
雪    币: 503
活跃值: (80)
能力值: (RANK:280 )
在线值:
发帖
回帖
粉丝
108
OD .NET和pcode都一样,如果每个call都进去会累死的,所以该跑的时候一定要跑,该停的时候再停
2008-7-26 01:04
0
雪    币: 136
活跃值: (20)
能力值: ( LV10,RANK:170 )
在线值:
发帖
回帖
粉丝
109
真的好累。而且每个call都累。。
不过,这题有一个CALL必须得跟到系统API,要不然,根本不知道什么意思。
2008-7-26 01:27
0
雪    币: 503
活跃值: (80)
能力值: (RANK:280 )
在线值:
发帖
回帖
粉丝
110
呵呵,坚持到底,不还是胜利了吗,毛主席说得好啊,我们要打持久战
2008-7-26 01:44
0
雪    币: 234
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
111
我怎么下载后打不开 说什么初始化失败之类的 谢谢
2008-7-26 06:04
0
雪    币: 136
活跃值: (20)
能力值: ( LV10,RANK:170 )
在线值:
发帖
回帖
粉丝
112
这是.net的程序,你没有安装.net框架。
2008-7-26 08:58
0
雪    币: 274
活跃值: (13)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
113
哈哈,又有其他人搞出来了,加油啊
2008-7-26 11:39
0
雪    币: 423
活跃值: (11)
能力值: ( LV9,RANK:230 )
在线值:
发帖
回帖
粉丝
114
这就是差距啊!

还看不到希望的曙光。

收获就是对OD的研究和细节体会更深了。
对.NET有了许多直观的理解,基本了解了个框架。

今晚再尝试一下,看看运气!
2008-7-26 19:04
0
雪    币: 503
活跃值: (80)
能力值: (RANK:280 )
在线值:
发帖
回帖
粉丝
115
多玩玩感觉就出来了,加油,祝好运,
2008-7-26 23:42
0
雪    币: 423
活跃值: (11)
能力值: ( LV9,RANK:230 )
在线值:
发帖
回帖
粉丝
116
昨夜跟到两点多,只是理解了沙金开始的苦恼。对他们的对话,我能理解其含义,也能体会
他们成功背后的辛苦。

但要成功追码,对我来说,可能要比他们付出更更多的精力。今天认输放弃了。

对mstwugui的跟踪能力和效率是真佩服,你跟过了就知道他的恐怖了。

回顾一下,收获还是满多的。对几位大侠对于原始追码的精辟讨论,对我的受益和影响是深远的。
在此感谢大侠们的坦诚和宽阔胸怀。

tankaiha :
.net破解,其实搞深了还是win32,只不过要知道一些.net的结构。就像逆向C++程序时,得知道C++类在内存中的布局吧,.net也一样,就是知道元数据在内存中的布局。.net连接了高级语言(如C#)和底层系统,因此逆向时,可上可下。

这句话很精炼,是破解经验的高度升华。

我简单谈谈对这个作品的兼容性问题的一些探讨。

反静态汇编手段的系统兼容性问题。我个人认为有。因为我对此有前后对比的实际体会,也曾经多次跟踪探寻。我认为出错的那段代码,在我运行正常的机器里再次调试,发现系统依然对其识别出错。不同的是在net framework 3.5的环境里,对这个错误进行了类似忽略的处理;而在net framework 2.0的环境里却把这个当成了恐怖活动而迅速地终结。换句话说,net framework 3.5对这类错误采取了宽容的态度,似乎是微软在后期默许了这种保护静态汇编的小伎俩。

对于此,看.NET逆向大侠的精辟论述:

tankaiha :
可能有两个原因:
1)crackme加密的程序本身有兼容性问题。(不过.net 2.0应该就能运行,可能性不大)
2)crackme是有反调试机制的,且是抛出异常的形式,因此有可能是运行了反编译或调试器导致的。

许多朋友运行不正常。我个人的理解是资源的冲突问题。冲突的根源是.NET程序的耗资源特性,这恐怕与它分段频繁解码的加密强度有关吧。其解码的过程占用的内存资源是令我吃惊的(这么简单的CRACK ME)。
在我的调试中,我感触深刻。越跟到后面,mstwugui反映的“占用内存比较大的程序运行时就可能会出错退出”的问题就越突出和频繁。于是我想到了内存的问题,加了一个G的内存,情况得到了极大的改善。那么,还有的问题在哪呢?系统的虚拟内存分配最好由系统自动分配,C盘的剩余空间最好大于1.5G。后台运行的不必要程序最好全退出。我的电脑虚拟内存分配是自定义的(某些游戏的需要),改为系统自动后,与输入法冲突的问题消失了。对于那个无声退出的系统,我进行了资源的优化设置后,加了内存后,运行正常。

这里,我就想到了另一个问题:MAXtocode号称目前加密强度世界最强。那么它的耗资源特点引起的系统兼容性问题是不是存在呢?我个人理解,国外的同类软件加密强度比不上它,最大的原因就是他们更多地注重系统兼容性问题的解决吧。一时的想法,MAXtocode的作者JansonNET莫怪!

当然,有很少部分的人确实是反调试的原因。
2008-7-27 10:27
0
雪    币: 136
活跃值: (20)
能力值: ( LV10,RANK:170 )
在线值:
发帖
回帖
粉丝
117
看了nba2005大牛的分析,倍感惭愧!
说真的,我在分析这个crackme时,有很大的运气成分。
对于内存占用大的情况,我没有去分析,凭感觉是反调试作怪。
当我在找不到API名字时,试过很多调试程序,如:od2.0b
一加载,内存会占用3G以上。 就算看雪的OllyICE,有时也会造成系统无响应。
crackme大部分代码,是反调试的。
在我一直在一个大循环里转圈时

提醒了我。
直接跳过大循环后,明白了“柳暗花明又一村”
回头再看,才知道是反调试代码。

我调试环境:VM虚拟机 Win2003 + OD
可能是系统的优势,很少出现程序出错的现象。
当找到部分重要断点后,跟起来就简单很多,运用OD的F4,省很多事

这次真的学到不少。
2008-7-27 11:58
0
雪    币: 503
活跃值: (80)
能力值: (RANK:280 )
在线值:
发帖
回帖
粉丝
118
是啊,我也重复引用了sessiondiy的提示,当遇到不熟悉的结构时,可能不大容易选择一个合适的代码执行断点来切入,这个时候通常会考虑以数据为入手,确定第一步以后基本上是一半运气一半经验连追带跑,无论是静态汇编还是动态调试,太细致了都不好,要有选择的分析
2008-7-27 12:56
0
雪    币: 503
活跃值: (80)
能力值: (RANK:280 )
在线值:
发帖
回帖
粉丝
119
再次补充一下,如果安装了.NET Framework 2.0 SP1窗口运行起来了然后再出错那也无所谓的
因为注册校验在这之前就完成了,所以只需分析出错在这之前的代码就足够了
2008-7-27 12:58
0
雪    币: 423
活跃值: (11)
能力值: ( LV9,RANK:230 )
在线值:
发帖
回帖
粉丝
120
"就算看雪的OllyICE,有时也会造成系统无响应。"

这应该是时间验证在做怪:
    在关键代码处,进行单步跟踪调试,则从一句代码到另一句代码会运行较长时间。因此可以预估计一下正常的执行时间,然后进行对比,若超过这个时间界限,则认为被调试。

原来你是VM虚拟机。
2008-7-27 13:02
0
雪    币: 423
活跃值: (11)
能力值: ( LV9,RANK:230 )
在线值:
发帖
回帖
粉丝
121
有时是出错在前,有时出错在后。我调试时,有过几次,这应该是反调试的原因了。出错在后的,多是时间验证,用反调试工具很容易对付。出错在前的,就是我上面分析的因素了。

断下来很容易,难的是后面的跟踪,走和跑的把握没感觉。有regshot,有环境的快照,CRACK.NET.EXE.CONFIG,应该是在反调试。有好几处加密的关键数据,跟进去就大海迷茫了。有好几处的明码,具体含义没完全弄懂。跟踪的效率太差了。

mstwugui:
太细致了都不好,要有选择的分析

说起来容易,做起来就是长年的经验积累了。菜鸟的痛苦啊。
2008-7-27 13:05
0
雪    币: 136
活跃值: (20)
能力值: ( LV10,RANK:170 )
在线值:
发帖
回帖
粉丝
122
不过这个crackme,大部分可见字符串。降低了部分分析难度。
只有关键算法里一个可见字符串的产生算法用了一些16进制数。
(不知道这算不算提示?)
2008-7-27 13:21
0
雪    币: 423
活跃值: (11)
能力值: ( LV9,RANK:230 )
在线值:
发帖
回帖
粉丝
123
那应该是我跟踪到的几组明码了。可能你的虚拟机环境和我的调试不同。
下午有事情,也累了。这几天,白天没空,晚上都要弄到一两点钟。

晕,我三、四季度还有个重要的考试呢。已经开始报名了。破解这东西容易上瘾啊。
2008-7-27 13:35
0
雪    币: 136
活跃值: (20)
能力值: ( LV10,RANK:170 )
在线值:
发帖
回帖
粉丝
124
等kanxue老大发出来吧。
或者我私下发给你也可以。
2008-7-27 13:39
0
雪    币: 423
活跃值: (11)
能力值: ( LV9,RANK:230 )
在线值:
发帖
回帖
粉丝
125
谢谢!

等kanxue老大发出来吧。规则还是要尊重的。

这几天想休息一下,正好对.NET的知识梳理一下。
2008-7-27 13:43
0
游客
登录 | 注册 方可回帖
返回
//