【破文标题】卡特会员卡管理1.1 解码分析
【破文作者】lzq1973[PYG][CZG][OCN][DFCG]
【作者邮箱】lzq9888@126.com
【作者主页】http://my.winzheng.com/?455397
【破解工具】OD、PEiD、C32Asm
【破解平台】WinXP
【软件名称】卡特会员卡管理 1.1
【软件大小】672K
【原版下载】http://www.card95.com/download.asp?n=卡特会员卡管理(单机IC明华版).rar
【保护方式】SN
【软件简介】本系统为绿色软件,解压即可使用。该操作简单,功能强大,包括基本会员资料,商品管理。可以设置积分卡,记次卡,储值卡,折扣卡。有会员生日提醒功能。
【破解声明】俺是只小小鸟,纯为学习,愿与大家分享!
------------------------------------------------------------------------
【破解过程】运行之,假注册,有提示,记住备用。
老规矩,PEID查壳,无,暗喜;OD载入,查相关字符串,找到相关提示,乐。在这里下断
004DF4DC . 55 push ebp
004DF4DD . 8BEC mov ebp, esp
004DF4DF . B9 06000000 mov ecx, 6
004DF4E4 > 6A 00 push 0
004DF4E6 . 6A 00 push 0
004DF4E8 . 49 dec ecx
004DF4E9 .^ 75 F9 jnz short 004DF4E4
004DF4EB . 51 push ecx
004DF4EC . 8945 FC mov [ebp-4], eax
004DF4EF . 33C0 xor eax, eax
004DF4F1 . 55 push ebp
004DF4F2 . 68 0BF74D00 push 004DF70B
004DF4F7 . 64:FF30 push dword ptr fs:[eax]
004DF4FA . 64:8920 mov fs:[eax], esp
004DF4FD . 8D55 EC lea edx, [ebp-14]
004DF500 . 8B45 FC mov eax, [ebp-4]
004DF503 . 8B80 04030000 mov eax, [eax+304]
004DF509 . E8 BEB1F7FF call 0045A6CC
004DF50E . 8B45 EC mov eax, [ebp-14] ; (ASCII "lzq1973")
004DF511 . 8D55 F0 lea edx, [ebp-10]
004DF514 . E8 1F96F2FF call 00408B38
004DF519 . 837D F0 00 cmp dword ptr [ebp-10], 0
004DF51D . 75 1D jnz short 004DF53C
004DF51F . 6A 40 push 40
004DF521 . B9 18F74D00 mov ecx, 004DF718 ; 提示
004DF526 . BA 20F74D00 mov edx, 004DF720 ; 请输入用户名
004DF52B . A1 D8F64E00 mov eax, [4EF6D8]
004DF530 . 8B00 mov eax, [eax]
004DF532 . E8 81B3F9FF call 0047A8B8
004DF537 . E9 77010000 jmp 004DF6B3
004DF53C > 8D55 E4 lea edx, [ebp-1C]
004DF53F . 8B45 FC mov eax, [ebp-4]
004DF542 . 8B80 0C030000 mov eax, [eax+30C]
004DF548 . E8 7FB1F7FF call 0045A6CC
004DF54D . 8B45 E4 mov eax, [ebp-1C]
004DF550 . 8D55 E8 lea edx, [ebp-18]
004DF553 . E8 E095F2FF call 00408B38
004DF558 . 837D E8 00 cmp dword ptr [ebp-18], 0
004DF55C . 75 1D jnz short 004DF57B
004DF55E . 6A 40 push 40
004DF560 . B9 18F74D00 mov ecx, 004DF718 ; 提示
004DF565 . BA 30F74D00 mov edx, 004DF730 ; 请输入注册码
004DF56A . A1 D8F64E00 mov eax, [4EF6D8]
004DF56F . 8B00 mov eax, [eax]
004DF571 . E8 42B3F9FF call 0047A8B8
004DF576 . E9 38010000 jmp 004DF6B3
004DF57B > 8D55 DC lea edx, [ebp-24]
004DF57E . 8B45 FC mov eax, [ebp-4]
004DF581 . 8B80 0C030000 mov eax, [eax+30C]
004DF587 . E8 40B1F7FF call 0045A6CC
004DF58C . 8B45 DC mov eax, [ebp-24]
004DF58F . 8D55 E0 lea edx, [ebp-20]
004DF592 . E8 A195F2FF call 00408B38
004DF597 . 8B45 E0 mov eax, [ebp-20]
004DF59A . 50 push eax
004DF59B . 8D55 D4 lea edx, [ebp-2C]
004DF59E . 8B45 FC mov eax, [ebp-4]
004DF5A1 . 8B80 04030000 mov eax, [eax+304]
004DF5A7 . E8 20B1F7FF call 0045A6CC
004DF5AC . 8B45 D4 mov eax, [ebp-2C]
004DF5AF . 8D55 D8 lea edx, [ebp-28]
004DF5B2 . E8 514AFFFF call 004D4008 ; 算法关键处
004DF5B7 . 8B55 D8 mov edx, [ebp-28] ; 注册码(ASCII "591148")
004DF5BA . 58 pop eax
004DF5BB . E8 5451F2FF call 00404714
004DF5C0 . 74 1D je short 004DF5DF
004DF5C2 . 6A 40 push 40
004DF5C4 . B9 18F74D00 mov ecx, 004DF718 ; 提示
004DF5C9 . BA 40F74D00 mov edx, 004DF740 ; 注册码不对,注册未成功
004DF5CE . A1 D8F64E00 mov eax, [4EF6D8]
004DF5D3 . 8B00 mov eax, [eax]
004DF5D5 . E8 DEB2F9FF call 0047A8B8
004DF5DA . E9 D4000000 jmp 004DF6B3
004DF5DF > 33C0 xor eax, eax
004DF5E1 . 55 push ebp
004DF5E2 . 68 87F64D00 push 004DF687
004DF5E7 . 64:FF30 push dword ptr fs:[eax]
004DF5EA . 64:8920 mov fs:[eax], esp
004DF5ED . B2 01 mov dl, 1
004DF5EF . A1 64E04300 mov eax, [43E064]
004DF5F4 . E8 6BEBF5FF call 0043E164
004DF5F9 . 8945 F8 mov [ebp-8], eax
004DF5FC . BA 02000080 mov edx, 80000002
004DF601 . 8B45 F8 mov eax, [ebp-8]
004DF604 . E8 FBEBF5FF call 0043E204
004DF609 . 8D45 F4 lea eax, [ebp-C]
004DF60C . BA 60F74D00 mov edx, 004DF760 ; software\czkgl\mrmf
004DF611 . E8 8A4DF2FF call 004043A0
004DF616 . B1 01 mov cl, 1
004DF618 . 8B55 F4 mov edx, [ebp-C]
004DF61B . 8B45 F8 mov eax, [ebp-8]
004DF61E . E8 45ECF5FF call 0043E268
004DF623 . 84C0 test al, al
004DF625 . 74 42 je short 004DF669
004DF627 . 8D55 D0 lea edx, [ebp-30]
004DF62A . 8B45 FC mov eax, [ebp-4]
004DF62D . 8B80 0C030000 mov eax, [eax+30C]
004DF633 . E8 94B0F7FF call 0045A6CC
004DF638 . 8B4D D0 mov ecx, [ebp-30]
004DF63B . BA 7CF74D00 mov edx, 004DF77C ; passwd
004DF640 . 8B45 F8 mov eax, [ebp-8]
004DF643 . E8 BCEDF5FF call 0043E404
004DF648 . 8D55 CC lea edx, [ebp-34]
004DF64B . 8B45 FC mov eax, [ebp-4]
004DF64E . 8B80 04030000 mov eax, [eax+304]
004DF654 . E8 73B0F7FF call 0045A6CC
004DF659 . 8B4D CC mov ecx, [ebp-34]
004DF65C . BA 8CF74D00 mov edx, 004DF78C ; username
004DF661 . 8B45 F8 mov eax, [ebp-8]
004DF664 . E8 9BEDF5FF call 0043E404
004DF669 > 8B45 F8 mov eax, [ebp-8]
004DF66C . E8 63EBF5FF call 0043E1D4
004DF671 . 33C0 xor eax, eax
004DF673 . 5A pop edx
004DF674 . 59 pop ecx
004DF675 . 59 pop ecx
004DF676 . 64:8910 mov fs:[eax], edx
004DF679 . 68 8EF64D00 push 004DF68E
004DF67E > 8B45 F8 mov eax, [ebp-8]
004DF681 . E8 123EF2FF call 00403498
004DF686 . C3 retn
004DF687 .^ E9 A045F2FF jmp 00403C2C
004DF68C .^ EB F0 jmp short 004DF67E
004DF68E . 6A 30 push 30
004DF690 . B9 18F74D00 mov ecx, 004DF718 ; 提示
004DF695 . BA 98F74D00 mov edx, 004DF798 ; 注册成功
004DF69A . A1 D8F64E00 mov eax, [4EF6D8]
004DF69F . 8B00 mov eax, [eax]
004DF6A1 . E8 12B2F9FF call 0047A8B8
004DF6A6 . 8B45 FC mov eax, [ebp-4]
004DF6A9 . C780 4C020000>mov dword ptr [eax+24C], 1
004DF6B3 > 33C0 xor eax, eax
004DF6B5 . 5A pop edx
004DF6B6 . 59 pop ecx
004DF6B7 . 59 pop ecx
004DF6B8 . 64:8910 mov fs:[eax], edx
004DF6BB . 68 12F74D00 push 004DF712
004DF6C0 > 8D45 CC lea eax, [ebp-34]
004DF6C3 . BA 03000000 mov edx, 3
004DF6C8 . E8 5F4CF2FF call 0040432C
004DF6CD . 8D45 D8 lea eax, [ebp-28]
004DF6D0 . E8 334CF2FF call 00404308
004DF6D5 . 8D45 DC lea eax, [ebp-24]
004DF6D8 . E8 2B4CF2FF call 00404308
004DF6DD . 8D45 E0 lea eax, [ebp-20]
004DF6E0 . E8 234CF2FF call 00404308
004DF6E5 . 8D45 E4 lea eax, [ebp-1C]
004DF6E8 . E8 1B4CF2FF call 00404308
004DF6ED > 8D45 E8 lea eax, [ebp-18]
004DF6F0 . E8 134CF2FF call 00404308
004DF6F5 . 8D45 EC lea eax, [ebp-14]
004DF6F8 . E8 0B4CF2FF call 00404308
004DF6FD > 8D45 F0 lea eax, [ebp-10]
004DF700 . BA 02000000 mov edx, 2
004DF705 . E8 224CF2FF call 0040432C
004DF70A . C3 retn
004DF70B .^ E9 1C45F2FF jmp 00403C2C
004DF710 .^ EB AE jmp short 004DF6C0
004DF712 . 8BE5 mov esp, ebp
004DF714 . 5D pop ebp
004DF715 . C3 retn
=====004DF5B2 . E8 514AFFFF call 004D4008=========
004D4008 /$ 55 push ebp ; 来到这里
004D4009 |. 8BEC mov ebp, esp
004D400B |. 83C4 F0 add esp, -10
004D400E |. 53 push ebx
004D400F |. 56 push esi
004D4010 |. 57 push edi
004D4011 |. 33C9 xor ecx, ecx
004D4013 |. 894D F4 mov [ebp-C], ecx
004D4016 |. 8955 F8 mov [ebp-8], edx
004D4019 |. 8945 FC mov [ebp-4], eax ; (ASCII "lzq1973")
004D401C |. 8B45 FC mov eax, [ebp-4]
004D401F |. E8 9407F3FF call 004047B8
004D4024 |. 33C0 xor eax, eax
004D4026 |. 55 push ebp
004D4027 |. 68 AF404D00 push 004D40AF
004D402C |. 64:FF30 push dword ptr fs:[eax]
004D402F |. 64:8920 mov fs:[eax], esp
004D4032 |. 8D45 F4 lea eax, [ebp-C]
004D4035 |. BA C8404D00 mov edx, 004D40C8 ; 字符串常量(ASCII "qwertyuiopasdfghjklzxcvbnm")
004D403A |. E8 6103F3FF call 004043A0
004D403F |. BE F57E0800 mov esi, 87EF5 ; 常数(87EF5)赋给ESI
004D4044 |. 8B45 FC mov eax, [ebp-4]
004D4047 |. E8 7C05F3FF call 004045C8
004D404C |. 85C0 test eax, eax ; 取用户名长度
004D404E |. 7E 37 jle short 004D4087
004D4050 |. 8945 F0 mov [ebp-10], eax
004D4053 |. BB 01000000 mov ebx, 1
004D4058 |> 8B45 F4 /mov eax, [ebp-C] ; 常量赋给EAX
004D405B |. E8 6805F3FF |call 004045C8
004D4060 |. 85C0 |test eax, eax ; 取字符串常量长度
004D4062 |. 7E 1D |jle short 004D4081
004D4064 |. BA 01000000 |mov edx, 1
004D4069 |> 8B4D FC |/mov ecx, [ebp-4] ; 用户名赋给ECX
004D406C |. 0FB64C19 FF ||movzx ecx, byte ptr [ecx+ebx-1] ; 取当前字符
004D4071 |. 8B7D F4 ||mov edi, [ebp-C]
004D4074 |. 0FB67C17 FF ||movzx edi, byte ptr [edi+edx-1]
004D4079 |. 03CF ||add ecx, edi ; 用户名首字符16进制+当前常量的16进制(从左至右逐位取)
004D407B |. 03F1 ||add esi, ecx ; ESI=ESI+ECX
004D407D |. 42 ||inc edx ; 递增
004D407E |. 48 ||dec eax ; 递减
004D407F |.^ 75 E8 |\jnz short 004D4069
004D4081 |> 43 |inc ebx ; 逐位取用户名
004D4082 |. FF4D F0 |dec dword ptr [ebp-10] ; 还剩几位
004D4085 |.^ 75 D1 \jnz short 004D4058
004D4087 |> 8B55 F8 mov edx, [ebp-8]
004D408A |. 8BC6 mov eax, esi
004D408C |. E8 074DF3FF call 00408D98
004D4091 |. 33C0 xor eax, eax
004D4093 |. 5A pop edx
004D4094 |. 59 pop ecx
004D4095 |. 59 pop ecx
004D4096 |. 64:8910 mov fs:[eax], edx
004D4099 |. 68 B6404D00 push 004D40B6
004D409E |> 8D45 F4 lea eax, [ebp-C]
004D40A1 |. E8 6202F3FF call 00404308
004D40A6 |. 8D45 FC lea eax, [ebp-4]
004D40A9 |. E8 5A02F3FF call 00404308
004D40AE \. C3 retn
004D40AF .^ E9 78FBF2FF jmp 00403C2C
004D40B4 .^ EB E8 jmp short 004D409E
004D40B6 . 5F pop edi
004D40B7 . 5E pop esi
004D40B8 . 5B pop ebx
004D40B9 . 8BE5 mov esp, ebp
004D40BB . 5D pop ebp
004D40BC . C3 retn
------------------------------------------------------------------------
【破解总结】
名码比较,算法也简单,如下:
用户名各字符的16进制依次与字串(qwertyuiopasdfghjklzxcvbnm)的各字符16进制和累加后再加上常数(87EF5)后转为10进制就是注册码。
根据飘云老大的注册机教程,试了试,代码如下:
.如果 (编辑框1.内容 ≠ “”)
用户名长度 = 取文本长度 (编辑框1.内容)
字符串常量 = “qwertyuiopasdfghjklzxcvbnm”
字符串常量长度 = 取文本长度 (字符串常量)
.计次循环首 (用户名长度, i)
c = 取代码 (编辑框1.内容, i)
.计次循环首 (字符串常量长度, ii)
cc = 取代码 (字符串常量, ii)
Sn = Sn + c + cc
.计次循环尾 ()
.计次循环尾 ()
.否则
信息框 (“请输入用户名”, 0, )
.如果结束
编辑框2.内容 = 到文本 (Sn + 556789)
.子程序 _按钮2_被单击
信息框 (“制作:lzq1973[PYG][CZG][OCN][DFCG][D.4s]”, 0, “感谢飘云老大”)
收工,首次作算法注册机,痛快~~
------------------------------------------------------------------------
【版权声明】本文纯属技术交流, 转载请注明作者信息并保持文章的完整, 谢谢!
[招生]系统0day安全班,企业级设备固件漏洞挖掘,Linux平台漏洞挖掘!