首页
社区
课程
招聘
[原创]riijj Crackme (3)的详解
2004-12-8 17:13 41160

[原创]riijj Crackme (3)的详解

2004-12-8 17:13
41160
收藏
点赞7
打赏
分享
最新回复 (54)
雪    币: 2657
活跃值: (464)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
greentea 2005-1-27 13:43
26
0
谢谢,收到
雪    币: 216
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
布丁 2005-1-28 15:26
27
0
厉害,看来破解路真还漫长呀
现在看不到、尽头拉
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
icbcodc 2005-1-30 17:18
28
0
感谢riijj的这么详细的分析。
  我之前使用OD破一个小软件时,遇到了你贴中所说的SEH保护,我当时不知道用SHIFT F9过它,只好先让软件运行,之后再用OD的ATTACH功能。在看了你的文章后,回去试了一试,很方便。
  另外,你这个小软件有个小BUG:运行时,吃内存,内存慢慢地会被全部耗尽。能解释一下是代码中的什么部分造成的吗?
雪    币: 2319
活跃值: (565)
能力值: (RANK:300 )
在线值:
发帖
回帖
粉丝
riijj 7 2005-1-30 17:23
29
0
最初由 icbcodc 发布
感谢riijj的这么详细的分析。
我之前使用OD破一个小软件时,遇到了你贴中所说的SEH保护,我当时不知道用SHIFT F9过它,只好先让软件运行,之后再用OD的ATTACH功能。在看了你的文章后,回去试了一试,很方便。
另外,你这个小软件有个小BUG:运行时,吃内存,内存慢慢地会被全部耗尽。能解释一下是代码中的什么部分造成的吗?


估计是某处 memory leak ,暂时不知道,要测试一下  
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
linzishun 2005-2-1 10:21
30
0
我想问一下,如果一个软件f9运行不会发生SHE异常,f7单步跟踪会发生SHE异常,那怎么办啊?
雪    币: 272
活跃值: (460)
能力值: ( LV9,RANK:410 )
在线值:
发帖
回帖
粉丝
sharpair 10 2005-2-1 12:56
31
0
好文,真详细!收藏!
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
dwolf 2005-2-2 15:02
32
0
-----------------------
“我们把 SetUnhandledExceptionFilter 的地方修改了,当我们用 OD 运行时,程序便会顺利地到达下一个执行位置,不会发生
   异常。我们把现在的程序关闭,用 OD 把刚才修改了的 crack2.exe 打开

   我们再设定断点在 SetUnhandledExceptionFilter,小心地把所有 SetUnhandledExceptionFilter 的陷阱清除。

       bp SetUnhandledExceptionFilter

   F9 运行,每按一下 Shift+F9,便留意 OD

       果然,我们再断在 SetUnhandledExceptionFilter,按几下 F8 返回,来到了

00401830   . 56              PUSH ESI
00401831   . 6A 00           PUSH 0                                   ; /pTopLevelFilter = NULL
00401833   . FF15 48504000   CALL DWORD PTR DS:[<&KERNEL32.SetUnhandl>; \SetUnhandledExceptionFilter
00401839   . E8 92FFFFFF     CALL riijj_cr.004017D0   <-------我们在这里
0040183E   . 68 80694000     PUSH riijj_cr.00406980                   ; /Buffer = riijj_cr.00406980
00401843   . 68 F4010000     PUSH 1F4                                 ; |BufSize = 1F4 (500.)
00401848   . FF15 44504000   CALL DWORD PTR DS:[<&KERNEL32.GetTempPat>; \GetTempPathA
0040184E   . 68 74604000     PUSH riijj_cr.00406074                   ; /pModule = "kernel32.dll"
00401853   . FF15 40504000   CALL DWORD PTR DS:[<&KERNEL32.GetModuleH>; \GetModuleHandleA
00401859   . 68 C06B4000     PUSH riijj_cr.00406BC0                   ; /ProcNameOrOrdinal = ""
0040185E   . 50              PUSH EAX                                 ; |hModule
0040185F   . FF15 20504000   CALL DWORD PTR DS:[<&KERNEL32.GetProcAdd>; \GetProcAddress
00401865   . 8BF0            MOV ESI,EAX
00401867   > FFD6            CALL ESI
00401869   . 85C0            TEST EAX,EAX
0040186B   . 74 05           JE SHORT riijj_cr.00401872
0040186D   . E8 BEF9FFFF     CALL riijj_cr.00401230
00401872   > E8 89FEFFFF     CALL riijj_cr.00401700
00401877   . E8 34F9FFFF     CALL riijj_cr.004011B0
0040187C   . C705 58694000 0>MOV DWORD PTR DS:[406958],1
00401886   .^EB DF           JMP SHORT riijj_cr.00401867

----------------------

为什么我F8的时候断在了这里?
00401C22     00             DB 00
00401C23   . C745 FC FFFFFF>MOV DWORD PTR SS:[EBP-4],-1
00401C2A   . E9 E8000000    JMP riijj_cr.00401D17
00401C2F   . B8 01000000    MOV EAX,1
00401C34   . C3             RETN
00401C35   . 8B65 E8        MOV ESP,DWORD PTR SS:[EBP-18]
00401C38   . C745 FC 050000>MOV DWORD PTR SS:[EBP-4],5
00401C3F   . 6A 00          PUSH 0                                   ; /pArguments = NULL
00401C41   . 6A 00          PUSH 0                                   ; |nArguments = 0
00401C43   . 6A 01          PUSH 1                                   ; |ExceptionFlags = EXCEPTION_NONCONTINUABLE
00401C45   . 68 333312C0    PUSH C0123333                            ; |ExceptionCode = C0123333
00401C4A   . FF15 4C504000  CALL DWORD PTR DS:[<&KERNEL32.RaiseExcep>; \RaiseException
00401C50   . C745 FC FFFFFF>MOV DWORD PTR SS:[EBP-4],-1 //我断在了这里
00401C57   . E9 B4000000    JMP riijj_cr.00401D10
00401C5C   . B8 01000000    MOV EAX,1
00401C61   . C3             RETN
00401C62   . 8B65 E8        MOV ESP,DWORD PTR SS:[EBP-18]
00401C65   . C745 FC 060000>MOV DWORD PTR SS:[EBP-4],6
00401C6C   . 68 90184000    PUSH riijj_cr.00401890                   ; /Arg2 = 00401890
00401C71   . 6A 0F          PUSH 0F                                  ; |Arg1 = 0000000F
00401C73   . E8 BB030000    CALL riijj_cr.00402033                   ; \riijj_cr.00402033
00401C78   . 83C4 08        ADD ESP,8
00401C7B   . FF25 54694000  JMP DWORD PTR DS:[406954]

然后我持续F8,最后停在了这里:
77F8EE02  ^EB AD            JMP SHORT ntdll.77F8EDB1
77F8EE04 > B8 E0000000      MOV EAX,0E0
77F8EE09   8D5424 04        LEA EDX,DWORD PTR SS:[ESP+4]
77F8EE0D   CD 2E            INT 2E
77F8EE0F   C2 0800          RETN 8            //停在了这里
77F8EE12   803D 0403FD77 00 CMP BYTE PTR DS:[77FD0304],0
77F8EE19   0F85 3E430000    JNZ ntdll.77F9315D
77F8EE1F   834D FC FF       OR DWORD PTR SS:[EBP-4],FFFFFFFF
77F8EE23   E8 0F000000      CALL ntdll.77F8EE37
77F8EE28   8B4D F0          MOV ECX,DWORD PTR SS:[EBP-10]

然后就终止了,请斑竹清点迷津,谢谢!
雪    币: 2319
活跃值: (565)
能力值: (RANK:300 )
在线值:
发帖
回帖
粉丝
riijj 7 2005-2-2 15:18
33
0
最初由 dwolf 发布
-----------------------
为什么我SHIFT+F9的时候断在了这里?

........


下断 bp SetUnhandledExceptionFilter
不停按 shift+F9 通过,直至 OD 断在 SetUnhandledExceptionFilter 的断点,再按几下 F8 从 retn 返回 crackme
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
dwolf 2005-2-2 15:44
34
0
感谢斑竹!

现在我RETUN返回到了

77F8EE04 > B8 E0000000      MOV EAX,0E0
77F8EE09   8D5424 04        LEA EDX,DWORD PTR SS:[ESP+4]
77F8EE0D   CD 2E            INT 2E
77F8EE0F   C2 0800          RETN 8
77F8EE12   803D 0403FD77 00 CMP BYTE PTR DS:[77FD0304],0
77F8EE19   0F85 3E430000    JNZ ntdll.77F9315D
77F8EE1F   834D FC FF       OR DWORD PTR SS:[EBP-4],FFFFFFFF

然后就终止了~

我把这个过程做了个动画:
http://www.sharesec.com/riijj.rar

请指点,谢谢!
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
dwolf 2005-2-2 16:16
35
0
本人初学CRACK,屡经挫折,思而不解,RIIJJ斑竹可以留下联系方式或者加我QQ吗?感激不尽!
QQ:48249
雪    币: 2319
活跃值: (565)
能力值: (RANK:300 )
在线值:
发帖
回帖
粉丝
riijj 7 2005-2-2 19:15
36
0
你遇到 Exception C0123333 的时候 (留意 OD 左下方) ,继续按 shift +F9 通过,在 OD 下方出现
  Breakpoint at KERNEL32. SetUnhandledExceptionFilter  的时候才开始 F8 跟踪
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
richpine 2005-2-5 12:51
37
0
支持支持
雪    币: 200
活跃值: (17)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
winipcfg 2005-2-16 02:19
38
0
楼主讲解很详细。收藏起来我等菜鸟好好学习。谢谢楼主!
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
dwolf 2005-2-18 11:10
39
0
"============================
我们要知道这个秘密的程序,必须要用硬件断点

  我们按一下 F9,让程序正常运行

  在 OD 下方的内存窗口,输入 406B84 ,来到了 406B84 的位置

  按一下鼠标右键,选 Long -> Hex ,使显示模式变成 Long (4 字节)  

  我们发现,406B84 的值是 0,现在点选在 406B84 的资料上,

  按鼠标右键,选 breakpoint -> hardware, on access -> DWORD ,这样便设定了硬件断点在这 4 个字位上

  这时候,程序突然断下,看来它被我们的断点拦截了

00401030  /$ A1 846B4000    MOV EAX,DWORD PTR DS:[406B84]
00401035  |. 85C0           TEST EAX,EAX            <---------我们在这里
00401037  |. 0F84 90000000  JE riijj_cr.004010CD
0040103D  |. 56             PUSH ESI
0040103E  |. 57             PUSH EDI
================"

请问因为有 exception,按F9怎么正常运行啊?我按SHIFT+F9才可以
“在 OD 下方的内存窗口,输入 406B84 ,来到了 406B84 的位置”,我输入怎么没效果呢,下拉找到了406B80和406B90,就是没406B84啦~~

请斑竹赐教,谢谢!
雪    币: 2319
活跃值: (565)
能力值: (RANK:300 )
在线值:
发帖
回帖
粉丝
riijj 7 2005-2-18 11:31
40
0
当然是依文章先把所有 exception 的地方修改,使程序没有 exception 才继续这里

内存的窗口点 鼠标右键,选 Go to -> Expression ,输入位置,按确定
雪    币: 538
活跃值: (32)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Saver 2005-2-25 20:03
41
0
分析的太好了,进来学习
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
兰色烟火 2005-2-26 22:02
42
0
本论坛最大的一只菜鸟是我啊~~~~晕菜了,看不懂。。。
努力学习啦
雪    币: 4441
活跃值: (805)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
windtrace 2005-3-8 21:26
43
0
学习呀,谢谢
雪    币: 216
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
阵雨 2005-3-9 03:20
44
0
riijj 斑竹好热心,感动中。。。。
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
dqkx 2005-10-7 22:55
45
0
版主,能不能把这个crackme的源码穿上来,让大家参考学习一下
雪    币: 211
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
babyrobin 2006-6-24 15:37
46
0
hao.............
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
zxqqq 2006-7-5 14:03
47
0
(设置是没有使用插件,没有隐藏 OD)

是什么意思呀,谢谢
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
dujing 2006-7-7 15:32
48
0
强贴啊
雪    币: 219
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
zgsbid 2010-3-19 13:00
49
0
认真学习了一遍。好文,谢谢!
雪    币: 220
活跃值: (17)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
freezer 2011-11-11 12:49
50
0
这个贴子真的不错,完整而详细,风格很好。
游客
登录 | 注册 方可回帖
返回