首页
社区
课程
招聘
我的第 3 个 CrackMe
2006-2-15 22:03 6513

我的第 3 个 CrackMe

dummy 活跃值
23
2006-2-15 22:03
6513
收藏
点赞7
打赏
分享
最新回复 (14)
雪    币: 207
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
davidguo 2006-2-15 23:12
2
0
发贴0的无法下载,回帖算不算数?
雪    币: 207
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
davidguo 2006-2-16 04:57
3
0
00401525    8B5D C4                  MOV EBX,DWORD PTR [EBP-3C]
00401528    8BCB                     MOV ECX,EBX
0040152A    E8 51710200              CALL CRACKME3.00428680     ----应该是通过ECX来取名和码地址的,没细看
0040152F    8378 08 02               CMP DWORD PTR [EAX+8],2    ----码长度>2跳到名验证
00401533    0F87 A6000000            JA CRACKME3.004015DF
00401539    8B4D C8                  MOV ECX,DWORD PTR [EBP-38]
0040153C    E8 3F710200              CALL CRACKME3.00428680
00401541    8B70 08                  MOV ESI,DWORD PTR [EAX+8]
00401544    8BCB                     MOV ECX,EBX
00401546    E8 35710200              CALL CRACKME3.00428680
0040154B    3B70 08                  CMP ESI,DWORD PTR [EAX+8]  ----名长度>码长度跳到名验证
0040154E    0F87 8B000000            JA CRACKME3.004015DF       ----不跳奔错误而去。
此段判断有错误。我们可以直接写3位码通过(名验证的地方又有错误,下边详说),或超过2位的名和2位的码通过。(为什么是2位码不是1位码?1位码的验证不是更简单么?下边详说)

用户名验证
004015E4    8BCF                     MOV ECX,EDI                ----此处开始循环取名的字符
004015E6    E8 95700200              CALL CRACKME3.00428680
004015EB    3B70 08                  CMP ESI,DWORD PTR [EAX+8]  ----如果取到最后1位
004015EE   /73 53                    JNB SHORT CRACKME3.00401643----跳出循环(如果我们的名是空的,那么直接就跳了)
004015F0   |8BCF                     MOV ECX,EDI
004015F2   |E8 89700200              CALL CRACKME3.00428680
004015F7   |8B40 04                  MOV EAX,DWORD PTR [EAX+4]
004015FA   |85C0                     TEST EAX,EAX               
004015FC   |75 07                    JNZ SHORT CRACKME3.00401605
004015FE   |B8 C8A74B00              MOV EAX,CRACKME3.004BA7C8
00401603   |EB 02                    JMP SHORT CRACKME3.00401607
00401605   |03C6                     ADD EAX,ESI
00401607   |0FBE08                   MOVSX ECX,BYTE PTR [EAX]
0040160A   |51                       PUSH ECX
0040160B   |E8 99130900              CALL CRACKME3.004929A9    ----大写转换小写
00401610   |83C4 04                  ADD ESP,4
00401613   |83F8 61                  CMP EAX,61
00401616   |7C 2B                    JL SHORT CRACKME3.00401643----如果不是小写字母a-z跳出循环
00401618   |8BCF                     MOV ECX,EDI
0040161A   |E8 61700200              CALL CRACKME3.00428680
0040161F   |8B40 04                  MOV EAX,DWORD PTR [EAX+4]
00401622   |85C0                     TEST EAX,EAX
00401624   |75 07                    JNZ SHORT CRACKME3.0040162D
00401626   |B8 C8A74B00              MOV EAX,CRACKME3.004BA7C8
0040162B   |EB 02                    JMP SHORT CRACKME3.0040162F
0040162D   |03C6                     ADD EAX,ESI
0040162F   |0FBE10                   MOVSX EDX,BYTE PTR [EAX]
00401632   |52                       PUSH EDX
00401633   |E8 71130900              CALL CRACKME3.004929A9    ----大写转换小写
00401638   |83C4 04                  ADD ESP,4
0040163B   |83F8 7A                  CMP EAX,7A
0040163E   |7F 03                    JG SHORT CRACKME3.00401643----如果不是小写字母a-z跳出循环
00401640   |46                       INC ESI                   ----如果是小写a-z,计数器+1
00401641  ^|EB A1                    JMP SHORT CRACKME3.004015E4----循环
00401643   \8BCF                     MOV ECX,EDI
00401645    E8 36700200              CALL CRACKME3.00428680
0040164A    3B70 08                  CMP ESI,DWORD PTR [EAX+8] ----比较字符个数与名长度(其实就是判断名里是否都是大小写字母)
0040164D    0F83 8B000000            JNB CRACKME3.004016DE     ----跳到码验证。不跳又进错误代码段。此处应该判断是否=0,我们名是空的,也跳。

注册码验证
004016DE    8BCB                     MOV ECX,EBX
004016E0    E8 9B6F0200              CALL CRACKME3.00428680
004016E5    8B40 04                  MOV EAX,DWORD PTR [EAX+4]  ----取码
004016E8    85C0                     TEST EAX,EAX               
004016EA    75 05                    JNZ SHORT CRACKME3.004016F1
004016EC    B8 C8A74B00              MOV EAX,CRACKME3.004BA7C8  ----为空就置0
004016F1    50                       PUSH EAX
004016F2    E8 A7120900              CALL CRACKME3.0049299E     ----码字符串转换成整数
004016F7    50                       PUSH EAX
004016F8    E8 03F9FFFF              CALL CRACKME3.00401000     ----计算CALL,在下边
004016FD    83C4 08                  ADD ESP,8
00401700    84C0                     TEST AL,AL                 ----判断是否0
00401702  ^ 0F84 4BFFFFFF            JE CRACKME3.00401653       ----0跳到错误代码
=============
计算的CALL
00401000    56                       PUSH ESI
00401001    8B7424 08                MOV ESI,DWORD PTR [ESP+8]  ----码转换的整数
00401005    83FE 02                  CMP ESI,2                  ----判断是否=2
00401008   /75 04                    JNZ SHORT CRACKME3.0040100E----不=2跳,进行下一步运算
0040100A   |B0 01                    MOV AL,1                   ----=2,AL置1,注册成功
0040100C   |5E                       POP ESI
0040100D   |C3                       RET

0040100E   \85F6                     TEST ESI,ESI
00401010    74 42                    JE SHORT CRACKME3.00401054
00401012    83FE 01                  CMP ESI,1
00401015    74 3D                    JE SHORT CRACKME3.00401054
00401017    8BC6                     MOV EAX,ESI
00401019    25 01000080              AND EAX,80000001
0040101E   /79 05                    JNS SHORT CRACKME3.00401025----奇偶校验
00401020   |48                       DEC EAX
00401021   |83C8 FE                  OR EAX,FFFFFFFE
00401024   |40                       INC EAX
00401025   X74 2D                    JE SHORT CRACKME3.00401054 ----不为奇跳到返回,AL=0,注册失败
00401027    DB4424 08                FILD DWORD PTR [ESP+8]
0040102B    D9FA                     FSQRT
0040102D    E8 B6170900              CALL CRACKME3.004927E8     ----平方根
00401032    8BC8                     MOV ECX,EAX                ----传给ECX
00401034    83F9 03                  CMP ECX,3                  
00401037    7C 11                    JL SHORT CRACKME3.0040104A ----ECX<3跳到返回,AL=0,注册失败
00401039    8BC6                     MOV EAX,ESI                ----码转换的整数,开始循环
0040103B    99                       CDQ                        ----余数传给EDX
0040103C    F7F9                     IDIV ECX                   ----整除ECX
0040103E    85D2                     TEST EDX,EDX               ----EDX=0跳出循环,因为ECX>=3,所以AL=0,注册失败
00401040    74 08                    JE SHORT CRACKME3.0040104A
00401042    83E9 02                  SUB ECX,2                  ----ECX每次-2
00401045    83F9 03                  CMP ECX,3                  ----ECX>=3循环
00401048  ^ 7D EF                    JGE SHORT CRACKME3.00401039
0040104A    33C0                     XOR EAX,EAX
0040104C    83F9 03                  CMP ECX,3
0040104F    0F9CC0                   SETL AL                    ----如果ECX>3,AL=1,注册成功
00401052    5E                       POP ESI
00401053    C3                       RETN

00401054    32C0                     XOR AL,AL
00401056    5E                       POP ESI
00401057    C3                       RETN
========================

接0040164D处代码

00401708    8BCB                     MOV ECX,EBX
0040170A    E8 716F0200              CALL CRACKME3.00428680
0040170F    8B40 08                  MOV EAX,DWORD PTR [EAX+8]
00401712    33DB                     XOR EBX,EBX
00401714    8D78 FF                  LEA EDI,DWORD PTR [EAX-1]
00401717    3BDF                     CMP EBX,EDI
00401719    0F8F C7000000            JG CRACKME3.004017E6
0040171F    8B4D C4                  MOV ECX,DWORD PTR [EBP-3C]
00401722    E8 596F0200              CALL CRACKME3.00428680
00401727    8B40 04                  MOV EAX,DWORD PTR [EAX+4]
0040172A    BE C8A74B00              MOV ESI,CRACKME3.004BA7C8
0040172F    85C0                     TEST EAX,EAX
00401731    74 03                    JE SHORT CRACKME3.00401736
00401733    8D3418                   LEA ESI,DWORD PTR [EAX+EBX]
00401736    8B4D C4                  MOV ECX,DWORD PTR [EBP-3C]
00401739    E8 426F0200              CALL CRACKME3.00428680
0040173E    8B40 04                  MOV EAX,DWORD PTR [EAX+4]
00401741    85C0                     TEST EAX,EAX
00401743    75 07                    JNZ SHORT CRACKME3.0040174C
00401745    B8 C8A74B00              MOV EAX,CRACKME3.004BA7C8
0040174A    EB 02                    JMP SHORT CRACKME3.0040174E
0040174C    03C7                     ADD EAX,EDI
0040174E    8A0E                     MOV CL,BYTE PTR [ESI]
00401750    8A10                     MOV DL,BYTE PTR [EAX]
00401752    3ACA                     CMP CL,DL
00401754    75 04                    JNZ SHORT CRACKME3.0040175A
00401756    4F                       DEC EDI
00401757    43                       INC EBX
00401758  ^ EB BD                    JMP SHORT CRACKME3.00401717

这块没什么好说的,从码的两头取字符比较,直到中间,都一样的跳到注册成功

流程
先判断名是否都是字母,否注册失败
码先转换整数,判断奇偶,为偶注册失败
用转换的整数的平方根取整做除数(每次-2),用转换的整数去除,如果除数在>3前可以整除,注册失败
从码的两头取字符比较,直到中间,有不同的注册失败。

简单注册的方法
首先在00401005处,我们可以让ESI=2来达到目的,码直接写2,因为码<3位必须名比码长才可以过判断,因此可以用2个或以上的字母做名。

可以用简单的口算得出注册码,比如名XXX,码11。名空,码111、131、313、333等。

时间有限,看的不是很仔细,见笑了。
雪    币: 272
活跃值: (143)
能力值: ( LV15,RANK:930 )
在线值:
发帖
回帖
粉丝
dummy 23 2006-2-18 09:23
4
0
只要注册码为回文质数即可(可能是字符串暴露了验证的地方),
继续努力
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
loon 2006-3-25 20:31
5
0
辛苦了,谢谢!!
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
haigui 2006-3-25 23:17
6
0
能写出一个CRACKME已经不错的啦,顶
雪    币: 257
活跃值: (11)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
ViperDodge 1 2006-3-26 05:31
7
0
怎么这CrackMe程序用到了OpenGL  
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
天涯风雨 2006-3-26 12:15
8
0
想下来看看,没贴就回在这吧:)
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
pkliang 2006-3-29 17:47
9
0
最初由 ViperDodge 发布
怎么这CrackMe程序用到了OpenGL

貌似是透明的。。。
雪    币: 246
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
寒湖鹤影 1 2006-4-3 14:48
10
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
zhangboon 2006-5-11 15:21
11
0
用到OPENGL32.DLL,对话框在哪个模块,哪个函数可以断下呢?
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
ilovemysel 2006-5-15 13:08
12
0
已经找到了一个注册的方式。

用户名: 输入A~z的任何字母2位以上
密码  : 2

不过,开始的时候不知道在哪下断..

发现有三个 提示字符串, 不知道要看哪个..

后来才找到关键..  累.  本人小菜鸟. 希望大家多交流
雪    币: 200
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
一帆风 2006-5-18 22:05
13
0
下回来试试!
雪    币: 200
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
domino 2006-5-22 05:09
14
0


雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
吴波 2006-5-22 18:21
15
0
下来研究研究
游客
登录 | 注册 方可回帖
返回