160 个 CrackMe 之 004 算法分析及易语言注册机实现

160 个 CrackMe 之 004 算法分析及易语言注册机实现
直入正题:
这个CrackMe  ,输入用户名 注册码,点击没有任何反应,因为是Borland Delphi 4.0 - 5.0,我的方法直接采用,Delphi 按钮事件脚本下断,于是段在如下call(注册事件的call)

[Asm] 纯文本查看 复制代码

进入call,来到这里,通过跟踪后发现 没有任何有意思的代码,得到的数据不是注册码,不可用。
00457FB8  /.  55            push ebp
00457FB9  |.  8BEC          mov ebp,esp
00457FBB  |.  B9 04000000   mov ecx,0x4
00457FC0  |>  6A 00         /push 0x0
00457FC2  |.  6A 00         |push 0x0
00457FC4  |.  49            |dec ecx
00457FC5  |.^ 75 F9         \jnz short CKme.00457FC0
00457FC7  |.  51            push ecx
00457FC8  |.  53            push ebx
00457FC9  |.  56            push esi
00457FCA  |.  8BF0          mov esi,eax
00457FCC  |.  33C0          xor eax,eax
00457FCE  |.  55            push ebp
00457FCF  |.  68 FD804500   push CKme.004580FD
00457FD4  |.  64:FF30       push dword ptr fs:[eax]
00457FD7  |.  64:8920       mov dword ptr fs:[eax],esp
00457FDA  |.  33DB          xor ebx,ebx
00457FDC  |>  8D55 F4       /lea edx,[local.3]
00457FDF  |.  8B86 D4020000 |mov eax,dword ptr ds:[esi+0x2D4]
00457FE5  |.  E8 5EB3FCFF   |call CKme.00423348                      ;  取用户名长度
00457FEA  |.  8B45 F4       |mov eax,[local.3]                       ;  用户名给eax
00457FED  |.  E8 8ABBFAFF   |call CKme.00403B7C                      ;  用户名长度eax
00457FF2  |.  83C0 1E       |add eax,0x1E                            ;  用户名长度加1e 给eax
00457FF5  |.  8D55 F8       |lea edx,[local.2]
00457FF8  |.  E8 07FBFAFF   |call CKme.00407B04
00457FFD  |.  FF75 F8       |push [local.2]                          ;  压入 用户名长度加 1e 的十进制值
00458000  |.  8D55 F0       |lea edx,[local.4]
00458003  |.  8B86 D4020000 |mov eax,dword ptr ds:[esi+0x2D4]
00458009  |.  E8 3AB3FCFF   |call CKme.00423348
0045800E  |.  FF75 F0       |push [local.4]                          ;  msctf.754B3F35
00458011  |.  8D55 EC       |lea edx,[local.5]
00458014  |.  8BC3          |mov eax,ebx
00458016  |.  E8 E9FAFAFF   |call CKme.00407B04
0045801B  |.  FF75 EC       |push [local.5]
0045801E  |.  8D45 FC       |lea eax,[local.1]
00458021  |.  BA 03000000   |mov edx,0x3

od 中继续往下翻,没有可用代码,于是就网上翻着看,一定要仔细看,发现了可逆字符,于是就在来到如下代码,在段首下断,并且删除 按钮事件那个断点

00457C1C   .  53 75 6E 20 4>ascii "Sun Bird",0     可疑字符  暂时不知道是什么用处
00457C25      00            db 00
00457C26      00            db 00
00457C27      00            db 00
00457C28   .  FFFFFFFF      dd FFFFFFFF
00457C2C   .  0F000000      dd 0000000F
00457C30   .  64 73 65 6C 6>ascii "dseloffc-012-OK",0    可疑字符,暂时不知道是什么用处
00457C40  /.  55            push ebp                     段首下断,删除按钮事件那个断点
00457C41  |.  8BEC          mov ebp,esp
00457C43  |.  51            push ecx
00457C44  |.  B9 05000000   mov ecx,0x5
00457C49  |>  6A 00         /push 0x0
00457C4B  |.  6A 00         |push 0x0
00457C4D  |.  49            |dec ecx
00457C4E  |.^ 75 F9         \jnz short CKme.00457C49
00457C50  |.  51            push ecx
00457C51  |.  874D FC       xchg [local.1],ecx
00457C54  |.  53            push ebx
00457C55  |.  56            push esi
00457C56  |.  8BD8          mov ebx,eax
00457C58  |.  33C0          xor eax,eax
00457C5A  |.  55            push ebp
00457C5B  |.  68 3D7E4500   push CKme.00457E3D
00457C60  |.  64:FF30       push dword ptr fs:[eax]
00457C63  |.  64:8920       mov dword ptr fs:[eax],esp
00457C66  |.  8BB3 F8020000 mov esi,dword ptr ds:[ebx+0x2F8]         ;  用户名长度给esi
00457C6C  |.  83C6 05       add esi,0x5                              ;  esi=用户名长度加5
00457C6F  |.  FFB3 10030000 push dword ptr ds:[ebx+0x310]            ;  压入字符串 黑头Sun Bird
00457C75  |.  8D55 F8       lea edx,[local.2]
00457C78  |.  8BC6          mov eax,esi                              ;  eax=esi 用户名长度加5
00457C7A  |.  E8 85FEFAFF   call CKme.00407B04
00457C7F  |.  FF75 F8       push [local.2]                           ;  取用户名长度 加 5
00457C82  |.  FFB3 14030000 push dword ptr ds:[ebx+0x314]            ;  压入字符串 dseloffc-012-OK
00457C88  |.  8D55 F4       lea edx,[local.3]
00457C8B  |.  8B83 D4020000 mov eax,dword ptr ds:[ebx+0x2D4]
00457C91  |.  E8 B2B6FCFF   call CKme.00423348                       ;  取用户名长度
00457C96  |.  FF75 F4       push [local.3]                           ;  压入用户名用户名
00457C99  |.  8D83 18030000 lea eax,dword ptr ds:[ebx+0x318]
00457C9F  |.  BA 04000000   mov edx,0x4
00457CA4  |.  E8 93BFFAFF   call CKme.00403C3C
00457CA9  |.  33D2          xor edx,edx
00457CAB  |.  8B83 F4020000 mov eax,dword ptr ds:[ebx+0x2F4]
00457CB1  |.  E8 AAB5FCFF   call CKme.00423260
00457CB6  |.  8B93 18030000 mov edx,dword ptr ds:[ebx+0x318]         ;  得到的字符串给edx  黑头Sun Bird12dseloffc-012-OKwbz_007  ,可疑字符串出现,验证注册成功
00457CBC  |.  8B83 F4020000 mov eax,dword ptr ds:[ebx+0x2F4]
00457CC2  |.  E8 B1B6FCFF   call CKme.00423378
00457CC7  |.  33F6          xor esi,esi                              ;  esi 清零
00457CC9  |>  8D55 EC       /lea edx,[local.5]
00457CCC  |.  8B83 D4020000 |mov eax,dword ptr ds:[ebx+0x2D4]
00457CD2  |.  E8 71B6FCFF   |call CKme.00423348                      ;  取用户名长度
00457CD7  |.  8B45 EC       |mov eax,[local.5]                       ;  用户名给eax
00457CDA  |.  E8 9DBEFAFF   |call CKme.00403B7C
00457CDF  |.  83C0 03       |add eax,0x3                             ;  用户名长度加3
00457CE2  |.  8D55 F0       |lea edx,[local.4]
00457CE5  |.  E8 1AFEFAFF   |call CKme.00407B04
00457CEA  |.  FF75 F0       |push [local.4]                          ;  msctf.754B3F35
00457CED  |.  8D55 E8       |lea edx,[local.6]
00457CF0  |.  8B83 D4020000 |mov eax,dword ptr ds:[ebx+0x2D4]
00457CF6  |.  E8 4DB6FCFF   |call CKme.00423348
00457CFB  |.  FF75 E8       |push [local.6]
00457CFE  |.  8D55 E4       |lea edx,[local.7]
00457D01  |.  8BC6          |mov eax,esi
00457D03  |.  E8 FCFDFAFF   |call CKme.00407B04
00457D08  |.  FF75 E4       |push [local.7]
00457D0B  |.  8D45 FC       |lea eax,[local.1]
00457D0E  |.  BA 03000000   |mov edx,0x3
00457D13  |.  E8 24BFFAFF   |call CKme.00403C3C
00457D18  |.  46            |inc esi
00457D19  |.  83FE 13       |cmp esi,0x13
00457D1C  |.^ 75 AB         \jnz short CKme.00457CC9
00457D1E  |.  8D55 E0       lea edx,[local.8]
00457D21  |.  8B83 D8020000 mov eax,dword ptr ds:[ebx+0x2D8]         ;  CKme.004132A4
00457D27  |.  E8 1CB6FCFF   call CKme.00423348
00457D2C  |.  8B45 E0       mov eax,[local.8]                        ;  假码给eax
00457D2F  |.  8B93 18030000 mov edx,dword ptr ds:[ebx+0x318]         ;  真码  黑头Sun Bird12dseloffc-012-OKwbz_007  给edx
00457D35  |.  E8 52BFFAFF   call CKme.00403C8C                       ;  比较call
00457D3A  |.  75 0A         jnz short CKme.00457D46                  ;  不等就挂了  也是爆破点
00457D3C  |.  C783 0C030000>mov dword ptr ds:[ebx+0x30C],0x3E
00457D46  |>  8B83 0C030000 mov eax,dword ptr ds:[ebx+0x30C]
00457D4C  |.  83C0 10       add eax,0x10

算法很简单:  黑头Sun Bird(作者预设字符串)+用户名长度加5+dseloffc-012-OK(作者预设字符串)+用户名
易语言实现注册机,很简单

注册机及易语言工程文件和Delphi+VB+VC+E等按钮事件脚本.rar

(8.35 KB, 下载次数: 0)

2019-8-4 21:15 上传
点击文件名下载附件

THE END
喜欢就支持以下吧
点赞0
分享
评论 抢沙发
管埋员的头像-小北的自留地

昵称

取消
昵称