首页
社区
课程
招聘
[转帖]一个CARACK ME 简易分析
发表于: 2013-10-29 10:44 8448

[转帖]一个CARACK ME 简易分析

2013-10-29 10:44
8448
刚学破解不久,在某论坛回复别人的帖子,

无壳,下GetDlgItemTextA断点很容易找到关键CALL...
写下简单的加密算法...

00401960  /> \55            push ebp
00401961  |.  8BEC          mov ebp,esp
00401963  |.  83EC 58       sub esp,58
00401966  |.  53            push ebx
00401967  |.  56            push esi
00401968  |.  57            push edi
00401969  |.  8D7D A8       lea edi,[local.22]
0040196C  |.  B9 16000000   mov ecx,16
00401971  |.  B8 CCCCCCCC   mov eax,CCCCCCCC
00401976  |.  F3:AB         rep stos dword ptr es:[edi]
00401978  |.  8B45 10       mov eax,[arg.3]
0040197B  |.  3B45 14       cmp eax,[arg.4]
0040197E  |.  7E 08         jle short GUI.00401988
00401980  |.  8B4D 10       mov ecx,[arg.3]
00401983  |.  894D EC       mov [local.5],ecx
00401986  |.  EB 06         jmp short GUI.0040198E
00401988  |>  8B55 14       mov edx,[arg.4]
0040198B  |.  8955 EC       mov [local.5],edx
0040198E  |>  837D EC 14    cmp [local.5],14          ;  用户名长度必须小于等于20
00401992  |.  7E 04         jle short GUI.00401998
00401994  |.  33C0          xor eax,eax
00401996  |.  EB 6A         jmp short GUI.00401A02
00401998  |>  8B45 10       mov eax,[arg.3]
0040199B  |.  3B45 14       cmp eax,[arg.4]
0040199E  |.  7D 08         jge short GUI.004019A8
004019A0  |.  8B4D 10       mov ecx,[arg.3]
004019A3  |.  894D E8       mov [local.6],ecx
004019A6  |.  EB 06         jmp short GUI.004019AE
004019A8  |>  8B55 14       mov edx,[arg.4]
004019AB  |.  8955 E8       mov [local.6],edx
004019AE  |>  837D E8 06    cmp [local.6],6            ;  密码长度必须大于等于6
004019B2  |.  7D 04         jge short GUI.004019B8
004019B4  |.  33C0          xor eax,eax
004019B6  |.  EB 4A         jmp short GUI.00401A02
004019B8  |>  8B45 10       mov eax,[arg.3]
004019BB  |.  50            push eax
004019BC  |.  8B4D 0C       mov ecx,[arg.2]
004019BF  |.  51            push ecx
004019C0  |.  E8 72F6FFFF   call GUI.00401037             ;  对用户名处理得到一个数值A
004019C5  |.  83C4 08       add esp,8
004019C8  |.  8945 F4       mov [local.3],eax
004019CB  |.  837D F4 00    cmp [local.3],0
004019CF  |.  7D 04         jge short GUI.004019D5
004019D1  |.  33C0          xor eax,eax
004019D3  |.  EB 2D         jmp short GUI.00401A02
004019D5  |>  8B55 14       mov edx,[arg.4]
004019D8  |.  52            push edx
004019D9  |.  8B45 08       mov eax,[arg.1]
004019DC  |.  50            push eax
004019DD  |.  E8 5AF6FFFF   call GUI.0040103C         ;  对密码处理得到一个数值B
004019E2  |.  83C4 08       add esp,8
004019E5  |.  8945 F0       mov [local.4],eax
004019E8  |.  837D F0 00    cmp [local.4],0
004019EC  |.  7D 04         jge short GUI.004019F2
004019EE  |.  33C0          xor eax,eax
004019F0  |.  EB 10         jmp short GUI.00401A02
004019F2  |>  8B4D F0       mov ecx,[local.4]
004019F5  |.  51            push ecx
004019F6  |.  8B55 F4       mov edx,[local.3]
004019F9  |.  52            push edx
004019FA  |.  E8 33F6FFFF   call GUI.00401032            ;  A^B = C;,如果C等于0x71则注册成功!
004019FF  |.  83C4 08       add esp,8
00401A02  |>  5F            pop edi
00401A03  |.  5E            pop esi
00401A04  |.  5B            pop ebx
00401A05  |.  83C4 58       add esp,58
00401A08  |.  3BEC          cmp ebp,esp
00401A0A  |.  E8 91000000   call GUI.00401AA0
00401A0F  |.  8BE5          mov esp,ebp
00401A11  |.  5D            pop ebp
00401A12  \.  C3            retn

call GUI.00401037             ;  对用户名处理得到一个数值A
对用户名处理,这里需要用户名是字母或数字.
假设用户名字符串为 USERNAME

UINT A = 0;
for(int i = 0;i<USERNAME.LENGTH;i++)
A += (char)USERNAME[i] ^ ((char)(0x30 + i));

call 0040103C 是对密码进行处理得到B
B的要求数值,后一个数字必须必前数字大.
计算方法是
计算所有数值的ACII码的和B

最后如果A^B等于0x71.则注册成功.

给一个注册码: 721243641812146652 ,密码123456

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

上传的附件:
收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 31
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
iiizwr   EFGHJJ
2013-11-7 14:23
0
游客
登录 | 注册 方可回帖
返回
//