首页
社区
课程
招聘
一个简单的CRACKME算法分析(适合新手)
发表于: 2006-2-13 11:23 10069

一个简单的CRACKME算法分析(适合新手)

2006-2-13 11:23
10069

1)PEID,检查UPX 0.89.6 - 1.02 / 1.05 - 1.24 。
  UPX的壳手脱起来很好脱,不在多说。手脱后检查Borland Delphi 4.0 - 5.0
2)试运行程序。任意输入注册信息后,有错误提示。
3)OD载入程序,用超级字符串查找,找到错误提示信息,
超级字串参考+        , 条目 17
地址=00457E56
反汇编=MOV EDX,up123.00457FAC
文本字串=the serial you entered is in any case not valid !      
双击来到00457E56处。向上找到注册信息计算开始的地方。下断。也可以用bp MessageBoxA
4)OD重新载入程序,任意输入注册信息后。程序中断。
00457BBE  |.  55            PUSH EBP
00457BBF  |.  68 8A7E4500   PUSH up123.00457E8A
00457BC4  |.  64:FF30       PUSH DWORD PTR FS:[EAX]
00457BC7  |.  64:8920       MOV DWORD PTR FS:[EAX],ESP
00457BCA  |.  8D55 FC       LEA EDX,DWORD PTR SS:[EBP-4]
00457BCD  |.  8B83 D8020000 MOV EAX,DWORD PTR DS:[EBX+2D8]
00457BD3  |.  E8 08C3FCFF   CALL up123.00423EE0                      ;  取注册名位数
00457BD8  |.  837D FC 00    CMP DWORD PTR SS:[EBP-4],0               ;  输入注册名了吗
00457BDC  |.  75 18         JNZ SHORT up123.00457BF6
00457BDE  |.  6A 00         PUSH 0
00457BE0  |.  B9 987E4500   MOV ECX,up123.00457E98                   ;  enter your name !
00457BE5  |.  BA AC7E4500   MOV EDX,up123.00457EAC                   ;  you must enter your name !
00457BEA  |.  A1 98A54500   MOV EAX,DWORD PTR DS:[45A598]
00457BEF  |.  8B00          MOV EAX,DWORD PTR DS:[EAX]
00457BF1  |.  E8 3A85FEFF   CALL up123.00440130
00457BF6  |>  8D55 FC       LEA EDX,DWORD PTR SS:[EBP-4]             ;  EBP-4=注册名
00457BF9  |.  8B83 DC020000 MOV EAX,DWORD PTR DS:[EBX+2DC]
00457BFF  |.  E8 DCC2FCFF   CALL up123.00423EE0                      ;  取假码位数
00457C04  |.  837D FC 00    CMP DWORD PTR SS:[EBP-4],0               ;  输入注册码了吗
00457C08  |.  75 18         JNZ SHORT up123.00457C22
00457C0A  |.  6A 00         PUSH 0
00457C0C  |.  B9 C87E4500   MOV ECX,up123.00457EC8                   ;  enter a serial !
00457C11  |.  BA DC7E4500   MOV EDX,up123.00457EDC                   ;  you must enter a serial !
00457C16  |.  A1 98A54500   MOV EAX,DWORD PTR DS:[45A598]
00457C1B  |.  8B00          MOV EAX,DWORD PTR DS:[EAX]
00457C1D  |.  E8 0E85FEFF   CALL up123.00440130
00457C22  |>  33C0          XOR EAX,EAX
00457C24  |.  A3 40B84500   MOV DWORD PTR DS:[45B840],EAX
00457C29  |.  8D55 FC       LEA EDX,DWORD PTR SS:[EBP-4]             ;  EBP-4假码
00457C2C  |.  8B83 D8020000 MOV EAX,DWORD PTR DS:[EBX+2D8]
00457C32  |.  E8 A9C2FCFF   CALL up123.00423EE0                      ;  取注册名位数
00457C37  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]
00457C3A  |.  E8 F9BFFAFF   CALL up123.00403C38
00457C3F  |.  A3 44B84500   MOV DWORD PTR DS:[45B844],EAX
00457C44  |.  A1 44B84500   MOV EAX,DWORD PTR DS:[45B844]
00457C49  |.  E8 82FDFAFF   CALL up123.004079D0
00457C4E  |.  83F8 06       CMP EAX,6                                ;  注册名位数与6相比
00457C51  |.  73 1D         JNB SHORT up123.00457C70                    小于六位就出现错误提示
00457C53  |.  6A 00         PUSH 0
00457C55  |.  B9 F87E4500   MOV ECX,up123.00457EF8                   ;  name too short !
00457C5A  |.  BA 0C7F4500   MOV EDX,up123.00457F0C                   ;  your name must be at least 6 chars long !
00457C5F  |.  A1 98A54500   MOV EAX,DWORD PTR DS:[45A598]
00457C64  |.  8B00          MOV EAX,DWORD PTR DS:[EAX]
00457C66  |.  E8 C584FEFF   CALL up123.00440130
00457C6B  |.  E9 59010000   JMP up123.00457DC9
00457C70  |>  8D55 FC       LEA EDX,DWORD PTR SS:[EBP-4]
00457C73  |.  8B83 D8020000 MOV EAX,DWORD PTR DS:[EBX+2D8]
00457C79  |.  E8 62C2FCFF   CALL up123.00423EE0
00457C7E  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]
00457C81  |.  BA 01000000   MOV EDX,1                                   EDX=1
00457C86  |.  4A            DEC EDX
00457C87  |.  3B50 FC       CMP EDX,DWORD PTR DS:[EAX-4]
00457C8A  |.  72 05         JB SHORT up123.00457C91
00457C8C  |.  E8 F3AEFAFF   CALL up123.00402B84
00457C91  |>  42            INC EDX
00457C92  |.  0FB64410 FF   MOVZX EAX,BYTE PTR DS:[EAX+EDX-1]        ;  取注册名第一位的ASCII值
00457C97  |.  6BF0 02       IMUL ESI,EAX,2                           ;  ESI=EAX*2
00457C9A  |.  71 05         JNO SHORT up123.00457CA1
00457C9C  |.  E8 EBAEFAFF   CALL up123.00402B8C
00457CA1  |>  8D55 F8       LEA EDX,DWORD PTR SS:[EBP-8]
00457CA4  |.  8B83 D8020000 MOV EAX,DWORD PTR DS:[EBX+2D8]
00457CAA  |.  E8 31C2FCFF   CALL up123.00423EE0
00457CAF  |.  8B45 F8       MOV EAX,DWORD PTR SS:[EBP-8]
00457CB2  |.  BA 02000000   MOV EDX,2                                   EDX=2
00457CB7  |.  4A            DEC EDX
00457CB8  |.  3B50 FC       CMP EDX,DWORD PTR DS:[EAX-4]
00457CBB  |.  72 05         JB SHORT up123.00457CC2
00457CBD  |.  E8 C2AEFAFF   CALL up123.00402B84
00457CC2  |>  42            INC EDX
00457CC3  |.  0FB64410 FF   MOVZX EAX,BYTE PTR DS:[EAX+EDX-1]        ;  取注册名第二位的ASCII值
00457CC8  |.  6BC0 02       IMUL EAX,EAX,2                           ;  EAX=EAX*2
00457CCB  |.  71 05         JNO SHORT up123.00457CD2
00457CCD  |.  E8 BAAEFAFF   CALL up123.00402B8C
00457CD2  |>  03F0          ADD ESI,EAX                              ;  ESI=注册名前二位ASCII值经过一定计算后相加
00457CD4  |.  71 05         JNO SHORT up123.00457CDB
00457CD6  |.  E8 B1AEFAFF   CALL up123.00402B8C
00457CDB  |>  8D55 F4       LEA EDX,DWORD PTR SS:[EBP-C]
00457CDE  |.  8B83 D8020000 MOV EAX,DWORD PTR DS:[EBX+2D8]
00457CE4  |.  E8 F7C1FCFF   CALL up123.00423EE0
00457CE9  |.  8B45 F4       MOV EAX,DWORD PTR SS:[EBP-C]
00457CEC  |.  BA 03000000   MOV EDX,3                                   EDX=3
00457CF1  |.  4A            DEC EDX
00457CF2  |.  3B50 FC       CMP EDX,DWORD PTR DS:[EAX-4]
00457CF5  |.  72 05         JB SHORT up123.00457CFC
00457CF7  |.  E8 88AEFAFF   CALL up123.00402B84
00457CFC  |>  42            INC EDX
00457CFD  |.  0FB64410 FF   MOVZX EAX,BYTE PTR DS:[EAX+EDX-1]        ;  取注册名第三位的ASCII值
00457D02  |.  6BC0 02       IMUL EAX,EAX,2                           ;  EAX=EAX*2
00457D05  |.  71 05         JNO SHORT up123.00457D0C
00457D07  |.  E8 80AEFAFF   CALL up123.00402B8C
00457D0C  |>  03F0          ADD ESI,EAX                              ;  ESI=注册名前三位ASCII值经过一定计算后相加
00457D0E  |.  71 05         JNO SHORT up123.00457D15
00457D10  |.  E8 77AEFAFF   CALL up123.00402B8C
00457D15  |>  8D55 F0       LEA EDX,DWORD PTR SS:[EBP-10]
00457D18  |.  8B83 D8020000 MOV EAX,DWORD PTR DS:[EBX+2D8]
00457D1E  |.  E8 BDC1FCFF   CALL up123.00423EE0
00457D23  |.  8B45 F0       MOV EAX,DWORD PTR SS:[EBP-10]
00457D26  |.  BA 04000000   MOV EDX,4                                   EDX=4
00457D2B  |.  4A            DEC EDX
00457D2C  |.  3B50 FC       CMP EDX,DWORD PTR DS:[EAX-4]
00457D2F  |.  72 05         JB SHORT up123.00457D36
00457D31  |.  E8 4EAEFAFF   CALL up123.00402B84
00457D36  |>  42            INC EDX
00457D37  |.  0FB64410 FF   MOVZX EAX,BYTE PTR DS:[EAX+EDX-1]        ;  取注册名第四位的ASCII值
00457D3C  |.  6BC0 02       IMUL EAX,EAX,2                           ;  EAX=EAX*2
00457D3F  |.  71 05         JNO SHORT up123.00457D46
00457D41  |.  E8 46AEFAFF   CALL up123.00402B8C
00457D46  |>  03F0          ADD ESI,EAX                              ;  ESI=注册名前四位ASCII值经过一定计算后相加
00457D48  |.  71 05         JNO SHORT up123.00457D4F
00457D4A  |.  E8 3DAEFAFF   CALL up123.00402B8C
00457D4F  |>  8D55 EC       LEA EDX,DWORD PTR SS:[EBP-14]
00457D52  |.  8B83 D8020000 MOV EAX,DWORD PTR DS:[EBX+2D8]
00457D58  |.  E8 83C1FCFF   CALL up123.00423EE0
00457D5D  |.  8B45 EC       MOV EAX,DWORD PTR SS:[EBP-14]
00457D60  |.  BA 05000000   MOV EDX,5                                   EDX=5
00457D65  |.  4A            DEC EDX
00457D66  |.  3B50 FC       CMP EDX,DWORD PTR DS:[EAX-4]
00457D69  |.  72 05         JB SHORT up123.00457D70
00457D6B  |.  E8 14AEFAFF   CALL up123.00402B84
00457D70  |>  42            INC EDX
00457D71  |.  0FB64410 FF   MOVZX EAX,BYTE PTR DS:[EAX+EDX-1]        ;  取注册名第五位的ASCII值
00457D76  |.  6BC0 02       IMUL EAX,EAX,2                           ;  EAX=EAX*2
00457D79  |.  71 05         JNO SHORT up123.00457D80
00457D7B  |.  E8 0CAEFAFF   CALL up123.00402B8C
00457D80  |>  03F0          ADD ESI,EAX                              ;  ESI=注册名前五位ASCII值经过一定计算后相加
00457D82  |.  71 05         JNO SHORT up123.00457D89
00457D84  |.  E8 03AEFAFF   CALL up123.00402B8C
00457D89  |>  8D55 E8       LEA EDX,DWORD PTR SS:[EBP-18]
00457D8C  |.  8B83 D8020000 MOV EAX,DWORD PTR DS:[EBX+2D8]
00457D92  |.  E8 49C1FCFF   CALL up123.00423EE0
00457D97  |.  8B45 E8       MOV EAX,DWORD PTR SS:[EBP-18]
00457D9A  |.  BA 06000000   MOV EDX,6                                   EDX=6
00457D9F  |.  4A            DEC EDX
00457DA0  |.  3B50 FC       CMP EDX,DWORD PTR DS:[EAX-4]
00457DA3  |.  72 05         JB SHORT up123.00457DAA
00457DA5  |.  E8 DAADFAFF   CALL up123.00402B84
00457DAA  |>  42            INC EDX
00457DAB  |.  0FB64410 FF   MOVZX EAX,BYTE PTR DS:[EAX+EDX-1]        ;  取注册名第六位的ASCII值
00457DB0  |.  6BC0 02       IMUL EAX,EAX,2                           ;  EAX=EAX*2
00457DB3  |.  71 05         JNO SHORT up123.00457DBA
00457DB5  |.  E8 D2ADFAFF   CALL up123.00402B8C
00457DBA  |>  03F0          ADD ESI,EAX                              ;  ESI=注册名前六位ASCII值经过一定计算后相加
00457DBC  |.  71 05         JNO SHORT up123.00457DC3
00457DBE  |.  E8 C9ADFAFF   CALL up123.00402B8C
00457DC3  |>  8935 40B84500 MOV DWORD PTR DS:[45B840],ESI
00457DC9  |>  A1 44B84500   MOV EAX,DWORD PTR DS:[45B844]
00457DCE  |.  E8 FDFBFAFF   CALL up123.004079D0                      ;  取注册名位数
00457DD3  |.  6BC0 02       IMUL EAX,EAX,2                           ;  注册名位数*2
00457DD6  |.  73 05         JNB SHORT up123.00457DDD
00457DD8  |.  E8 AFADFAFF   CALL up123.00402B8C
00457DDD  |>  33D2          XOR EDX,EDX
00457DDF  |.  52            PUSH EDX
00457DE0  |.  50            PUSH EAX
00457DE1  |.  A1 40B84500   MOV EAX,DWORD PTR DS:[45B840]
00457DE6  |.  99            CDQ
00457DE7  |.  030424        ADD EAX,DWORD PTR SS:[ESP]               ; 两步的运算结果相加
00457DEA  |.  135424 04     ADC EDX,DWORD PTR SS:[ESP+4]
00457DEE  |.  71 05         JNO SHORT up123.00457DF5
00457DF0  |.  E8 97ADFAFF   CALL up123.00402B8C
00457DF5  |>  83C4 08       ADD ESP,8
00457DF8  |.  50            PUSH EAX
00457DF9  |.  C1F8 1F       SAR EAX,1F
00457DFC  |.  3BC2          CMP EAX,EDX
00457DFE  |.  58            POP EAX
00457DFF  |.  74 05         JE SHORT up123.00457E06
00457E01  |.  E8 7EADFAFF   CALL up123.00402B84
00457E06  |>  A3 40B84500   MOV DWORD PTR DS:[45B840],EAX
00457E0B  |.  8D55 E4       LEA EDX,DWORD PTR SS:[EBP-1C]
00457E0E  |.  A1 40B84500   MOV EAX,DWORD PTR DS:[45B840]
00457E13  |.  E8 2CF9FAFF   CALL up123.00407744                      ;  结果转换成十进制
00457E18  |.  8B45 E4       MOV EAX,DWORD PTR SS:[EBP-1C]
00457E1B  |.  50            PUSH EAX
00457E1C  |.  8D55 FC       LEA EDX,DWORD PTR SS:[EBP-4]
00457E1F  |.  8B83 DC020000 MOV EAX,DWORD PTR DS:[EBX+2DC]
00457E25  |.  E8 B6C0FCFF   CALL up123.00423EE0
00457E2A  |.  8B55 FC       MOV EDX,DWORD PTR SS:[EBP-4]
00457E2D  |.  58            POP EAX
00457E2E  |.  E8 51BDFAFF   CALL up123.00403B84
00457E33  |.  75 1A         JNZ SHORT up123.00457E4F
00457E35  |.  6A 00         PUSH 0
00457E37  |.  B9 387F4500   MOV ECX,up123.00457F38                   ;  congratz !
00457E3C  |.  BA 447F4500   MOV EDX,up123.00457F44                   ;  you cracked the cff crackme #4 ! please send your solution to [email]acidbytes@gmx.net[/email] !
00457E41  |.  A1 98A54500   MOV EAX,DWORD PTR DS:[45A598]
00457E46  |.  8B00          MOV EAX,DWORD PTR DS:[EAX]
00457E48  |.  E8 E382FEFF   CALL up123.00440130
00457E4D  |.  EB 18         JMP SHORT up123.00457E67
00457E4F  |>  6A 00         PUSH 0
00457E51  |.  B9 987F4500   MOV ECX,up123.00457F98                   ;  serial not valid
00457E56  |.  BA AC7F4500   MOV EDX,up123.00457FAC                   ;  the serial you entered is in any case not valid !
00457E5B  |.  A1 98A54500   MOV EAX,DWORD PTR DS:[45A598]
00457E60  |.  8B00          MOV EAX,DWORD PTR DS:[EAX]
00457E62  |.  E8 C982FEFF   CALL up123.00440130

------------------------------------------------------------------------BY 逍遥风
算法总结:
1)注册名必须大于等于6位。
2)取注册名前6位的ASCII值乘以定值2,并把每一位所得的积相加。设结果为A
3)注册名位数乘以定值2。设结果为B
4)A加B的结果转换成相应的十进制数即得注册码。
例:注册名 tcxbtc
1)t:74*2=E8     c:63*2=C6     x:78*2=F0    b:62*2=C4   t:74*2=E8   c:63*2=C6
  E8+C6+F0+C4+E8+C6=510
2)6*2=C
3)510+C=51C 转换成十进制等于1308
所以 注册名tcxbtc
     注册码1308


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

上传的附件:
收藏
免费 7
支持
分享
最新回复 (29)
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
不错希望能有更多一些适合我等新手的贴!
2006-2-13 22:22
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
00457C6B  |. /E9 59010000   JMP crackme0.00457DC9

这句是什么意思能解释下吗?
2006-2-16 00:46
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
谢谢了,慢慢研究下。
2006-2-16 01:12
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
学习学习,DX指导哦
2006-2-16 02:07
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
新手适用 ,支持楼主
2006-2-17 08:50
0
雪    币: 2256
活跃值: (941)
能力值: (RANK:2210 )
在线值:
发帖
回帖
粉丝
7
水平有限,疏漏在所难免。
还还希忘能与大家多多交流。
2006-2-17 11:22
0
雪    币: 200
活跃值: (42)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
谢谢,真的很有启示!
2006-2-17 13:11
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
顶一下!!!
2006-2-17 15:02
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
能给写一些在内存中隐藏注册码的例子分析一下就太好了
2006-2-20 13:46
0
雪    币: 200
活跃值: (42)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
怎么没人顶呀!
2006-2-21 18:21
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
我来学习一下
2006-2-21 20:20
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
我是爆破的
将00457E33  |.  75 1A         JNZ SHORT up123.00457E4F
中的75 1A改成74 1A 让程序直接跳过报错信息,同时跳过关键调用
然后ok了
呵呵
这是我的第一个破解
都学习一天多了,终于有点成就感了
2006-2-21 20:41
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
谢谢作者,我顶
2006-2-21 20:50
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
学习学习,多谢了
2006-2-22 10:38
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
进来学习一下..因为我很菜..
正在努力学习算法
2006-2-25 17:05
0
雪    币: 202
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
学习中,是个好例子,感谢!
2006-2-26 10:42
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
我来学习来了,顶,再顶,再学。
2006-3-3 12:14
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
谢谢...
2006-3-5 21:00
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
不错不错。支持+学习~
2006-3-6 23:21
0
雪    币: 209
活跃值: (250)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
下来学习一下
2006-3-7 00:31
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
不错希望能有更多一些适合我等新手的贴!
2006-3-7 10:48
0
雪    币: 390
活跃值: (37)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
我现在能追到注册码了!好兴奋啊!
2006-3-11 16:27
0
雪    币: 206
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
努力学习,谢谢!
2006-3-11 17:29
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
下载回来慢慢的学习学习!
2006-3-13 09:33
0
游客
登录 | 注册 方可回帖
返回
//