精诚餐饮行业管理系统注册算法的详细分析
【破解作者】 jsliyangsj
【作者邮箱】 sjcrack@yahoo.com.cn
【使用工具】 peid OllyDbg1.10
【破解平台】 Winxp
【软件名称】 精诚餐饮行业管理系统
【下载地址】 http://www.zyycxx.com/zydsljj/
它的系列软件都差不多,有兴趣,你可以自己试试。
 精诚物品资产管理系统 v5.0308 2997KB 
 精诚车辆配件管理系统 v5.0306 5493KB 
 精诚客户档案管理系统 v5.0306 2277KB 
 精诚服装鞋帽店管理系统 v5.0308 4631KB 
 精诚药业(店)管理系统 v5.0306 4992KB 
 精诚超市管理系统 v5.0308 4596KB 
 精诚中草药查询大全 V4.1102   
 精诚工资、薪金个人所得税计算软件 V4.1102   
 湖北省地方税收与社保费动态数据交换平台 V4.0421   
 精诚易用进销存管理系统 V5.0129   
………………………………………………………………………………………………………………………………
随便输入注册码,确定后,被告知:请关闭软件,重新打开后生效,明显是个重起验证!!
分析了一下,知道把输入码储存在\Software\JingCheng\CYMS,直接查找字符串\Software\JingCheng\CYMS下断
005BD408   /.  55    push ebp
005BD409   |.  8BEC  mov ebp,esp
005BD40B   |.  B9 08>mov ecx,8
005BD410   |>  6A 00 /push 0
005BD412   |.  6A 00 |push 0
005BD414   |.  49    |dec ecx
005BD415   |.^ 75 F9 \jnz short CYMS.005BD410
005BD417   |.  53    push ebx
005BD418   |.  56    push esi
005BD419   |.  8BD8  mov ebx,eax
005BD41B   |.  33C0  xor eax,eax
005BD41D   |.  55    push ebp
005BD41E   |.  68 D7>push CYMS.005BD6D7
005BD423   |.  64:FF>push dword ptr fs:[eax]
005BD426   |.  64:89>mov dword ptr fs:[eax],esp
005BD429   |.  BA EC>mov edx,CYMS.005BD6EC
005BD42E   |.  8BC3  mov eax,ebx
005BD430   |.  E8 27>call CYMS.00450D5C
005BD435   |.  A1 C0>mov eax,dword ptr ds:[6163C0]
005BD43A   |.  8B00  mov eax,dword ptr ds:[eax]
005BD43C   |.  BA 14>mov edx,CYMS.005BD714
005BD441   |.  E8 0E>call CYMS.00471C54
005BD446   |.  E8 1D>call CYMS.0040B968
005BD44B   |.  83C4 >add esp,-8
005BD44E   |.  DD1C2>fstp qword ptr ss:[esp]
005BD451   |.  9B    wait
005BD452   |.  8B83 >mov eax,dword ptr ds:[ebx+338]
005BD458   |.  E8 03>call CYMS.004CEC60
005BD45D   |.  8D55 >lea edx,dword ptr ss:[ebp-8]
005BD460   |.  A1 C0>mov eax,dword ptr ds:[6163C0]
005BD465   |.  8B00  mov eax,dword ptr ds:[eax]
005BD467   |.  E8 4C>call CYMS.004726B8
005BD46C   |.  8B45 >mov eax,dword ptr ss:[ebp-8]
005BD46F   |.  8D55 >lea edx,dword ptr ss:[ebp-4]
005BD472   |.  E8 B1>call CYMS.00409E28
005BD477   |.  8B55 >mov edx,dword ptr ss:[ebp-4]
005BD47A   |.  8D83 >lea eax,dword ptr ds:[ebx+354]
005BD480   |.  B9 34>mov ecx,CYMS.005BD734            ;  ASCII "logo.bmp"
005BD485   |.  E8 AA>call CYMS.00404B34
005BD48A   |.  8B83 >mov eax,dword ptr ds:[ebx+354]
005BD490   |.  E8 3F>call CYMS.00409BD4
005BD495   |.  84C0  test al,al
005BD497   |.  75 0B jnz short CYMS.005BD4A4
005BD499   |.  8D83 >lea eax,dword ptr ds:[ebx+354]
005BD49F   |.  E8 8C>call CYMS.00404830
005BD4A4   |>  8BC3  mov eax,ebx
005BD4A6   |.  E8 95>call CYMS.005BDF40
005BD4AB   |.  B2 01 mov dl,1
005BD4AD   |.  A1 58>mov eax,dword ptr ds:[4ABC58]
005BD4B2   |.  E8 0D>call CYMS.004ABDC4
005BD4B7   |.  8BF0  mov esi,eax
005BD4B9   |.  89B3 >mov dword ptr ds:[ebx+34C],esi
005BD4BF   |.  BA 02>mov edx,80000002
005BD4C4   |.  8BC6  mov eax,esi
005BD4C6   |.  E8 D5>call CYMS.004ABEA0
005BD4CB   |.  B1 01 mov cl,1
005BD4CD   |.  BA 48>mov edx,CYMS.005BD748            ;  ASCII "\Software\JingCheng\CYMS"
005BD4D2   |.  8B83 >mov eax,dword ptr ds:[ebx+34C]
005BD4D8   |.  E8 07>call CYMS.004ABFE4
005BD4DD   |.  84C0  test al,al
005BD4DF   |.  0F84 >je CYMS.005BD62F
005BD4E5   |.  8D4D >lea ecx,dword ptr ss:[ebp-C]
005BD4E8   |.  BA 6C>mov edx,CYMS.005BD76C            ;  ASCII "BackGround"
005BD4ED   |.  8B83 >mov eax,dword ptr ds:[ebx+34C]
005BD4F3   |.  E8 B4>call CYMS.004AC1AC
005BD4F8   |.  8B55 >mov edx,dword ptr ss:[ebp-C]
005BD4FB   |.  A1 FC>mov eax,dword ptr ds:[6162FC]
005BD500   |.  E8 7F>call CYMS.00404884
005BD505   |.  8D4D >lea ecx,dword ptr ss:[ebp-10]
005BD508   |.  BA 80>mov edx,CYMS.005BD780            ;  ASCII "Register_PassWord"
005BD50D   |.  8B83 >mov eax,dword ptr ds:[ebx+34C]
005BD513   |.  E8 94>call CYMS.004AC1AC               ;  取第一次注册码
005BD518   |.  8B55 >mov edx,dword ptr ss:[ebp-10]
005BD51B   |.  A1 6C>mov eax,dword ptr ds:[61656C]
005BD520   |.  E8 5F>call CYMS.00404884
005BD525   |.  8D4D >lea ecx,dword ptr ss:[ebp-14]
005BD528   |.  BA 9C>mov edx,CYMS.005BD79C            ;  ASCII "Register_F_PassWord"
005BD52D   |.  8B83 >mov eax,dword ptr ds:[ebx+34C]
005BD533   |.  E8 74>call CYMS.004AC1AC               ;  取另一输入码
005BD538   |.  8B55 >mov edx,dword ptr ss:[ebp-14]
005BD53B   |.  A1 28>mov eax,dword ptr ds:[616528]
005BD540   |.  E8 3F>call CYMS.00404884
005BD545   |.  8D4D >lea ecx,dword ptr ss:[ebp-18]
005BD548   |.  BA B8>mov edx,CYMS.005BD7B8            ;  ASCII "user"
005BD54D   |.  8B83 >mov eax,dword ptr ds:[ebx+34C]
005BD553   |.  E8 54>call CYMS.004AC1AC
005BD558   |.  8B55 >mov edx,dword ptr ss:[ebp-18]
005BD55B   |.  8B83 >mov eax,dword ptr ds:[ebx+33C]
005BD561   |.  E8 F6>call CYMS.00450D5C
005BD566   |.  A1 FC>mov eax,dword ptr ds:[6162FC]
005BD56B   |.  8338 >cmp dword ptr ds:[eax],0
005BD56E   |.  75 27 jnz short CYMS.005BD597
005BD570   |.  8D55 >lea edx,dword ptr ss:[ebp-20]
005BD573   |.  33C0  xor eax,eax
005BD575   |.  E8 D6>call CYMS.00402B50
005BD57A   |.  8B45 >mov eax,dword ptr ss:[ebp-20]
005BD57D   |.  8D55 >lea edx,dword ptr ss:[ebp-1C]
005BD580   |.  E8 A3>call CYMS.00409E28
005BD585   |.  8B55 >mov edx,dword ptr ss:[ebp-1C]
005BD588   |.  A1 FC>mov eax,dword ptr ds:[6162FC]
005BD58D   |.  B9 C8>mov ecx,CYMS.005BD7C8            ;  ASCII "BackGround.bmp"
005BD592   |.  E8 9D>call CYMS.00404B34
005BD597   |>  8D4D >lea ecx,dword ptr ss:[ebp-24]
005BD59A   |.  BA E0>mov edx,CYMS.005BD7E0            ;  ASCII "MomeriedPassWord"
005BD59F   |.  8B83 >mov eax,dword ptr ds:[ebx+34C]
005BD5A5   |.  E8 02>call CYMS.004AC1AC
005BD5AA   |.  8B45 >mov eax,dword ptr ss:[ebp-24]
005BD5AD   |.  BA FC>mov edx,CYMS.005BD7FC
005BD5B2   |.  E8 75>call CYMS.00404C2C
005BD5B7   |.  75 21 jnz short CYMS.005BD5DA
005BD5B9   |.  8D4D >lea ecx,dword ptr ss:[ebp-28]
005BD5BC   |.  BA 08>mov edx,CYMS.005BD808            ;  ASCII "password"
005BD5C1   |.  8B83 >mov eax,dword ptr ds:[ebx+34C]
005BD5C7   |.  E8 E0>call CYMS.004AC1AC               ;  取出登陆密码
005BD5CC   |.  8B55 >mov edx,dword ptr ss:[ebp-28]
005BD5CF   |.  8B83 >mov eax,dword ptr ds:[ebx+340]
005BD5D5   |.  E8 82>call CYMS.00450D5C
005BD5DA   |>  8D4D >lea ecx,dword ptr ss:[ebp-2C]
005BD5DD   |.  BA E0>mov edx,CYMS.005BD7E0            ;  ASCII "MomeriedPassWord"
005BD5E2   |.  8B83 >mov eax,dword ptr ds:[ebx+34C]
005BD5E8   |.  E8 BF>call CYMS.004AC1AC
005BD5ED   |.  8B45 >mov eax,dword ptr ss:[ebp-2C]
005BD5F0   |.  BA FC>mov edx,CYMS.005BD7FC
005BD5F5   |.  E8 32>call CYMS.00404C2C
005BD5FA   |.  0F94C>sete dl
005BD5FD   |.  8B83 >mov eax,dword ptr ds:[ebx+344]
005BD603   |.  8B08  mov ecx,dword ptr ds:[eax]
005BD605   |.  FF91 >call dword ptr ds:[ecx+C8]
005BD60B   |.  B8 48>mov eax,CYMS.005BD748            ;  把\Software\JingCheng\CYMS准备放入密码表的前面,取代原来密码表
005BD610   |.  8D55 >lea edx,dword ptr ss:[ebp-30]
005BD613   |.  E8 80>call CYMS.0057E298               ;  算法的地方
005BD618   |.  8B55 >mov edx,dword ptr ss:[ebp-30]
005BD61B   |.  A1 6C>mov eax,dword ptr ds:[61656C]
005BD620   |.  8B00  mov eax,dword ptr ds:[eax]
005BD622   |.  E8 05>call CYMS.00404C2C               ;  关键比较
005BD627   |.  A1 68>mov eax,dword ptr ds:[615F68]
005BD62C   |.  0F940>sete byte ptr ds:[eax]           ;  关键的615f68置1标志比较位
005BD62F   |>  A1 08>mov eax,dword ptr ds:[616508]
005BD634   |.  8B00  mov eax,dword ptr ds:[eax]
005BD636   |.  8B70 >mov esi,dword ptr ds:[eax+78]
005BD639   |.  8BC6  mov eax,esi
………………………………………………………………………………………………………………………………
进入005BD613   |.  E8 80>call CYMS.0057E298               ;  算法的地方
………………………………………………………………………………………………………………………………
0057E298   /$  55    push ebp
0057E299   |.  8BEC  mov ebp,esp
0057E29B   |.  33C9  xor ecx,ecx
0057E29D   |.  51    push ecx
0057E29E   |.  51    push ecx
0057E29F   |.  51    push ecx
0057E2A0   |.  51    push ecx
0057E2A1   |.  51    push ecx
0057E2A2   |.  51    push ecx
0057E2A3   |.  53    push ebx
0057E2A4   |.  56    push esi
0057E2A5   |.  57    push edi
0057E2A6   |.  8955 >mov dword ptr ss:[ebp-8],edx
0057E2A9   |.  8945 >mov dword ptr ss:[ebp-4],eax
0057E2AC   |.  8B45 >mov eax,dword ptr ss:[ebp-4]
0057E2AF   |.  E8 1C>call CYMS.00404CD0
0057E2B4   |.  33C0  xor eax,eax
0057E2B6   |.  55    push ebp
0057E2B7   |.  68 81>push CYMS.0057E381
0057E2BC   |.  64:FF>push dword ptr fs:[eax]
0057E2BF   |.  64:89>mov dword ptr fs:[eax],esp
0057E2C2   |.  8D45 >lea eax,dword ptr ss:[ebp-4]     ;  下面是密码表
0057E2C5   |.  BA 98>mov edx,CYMS.0057E398            ;  ASCII "Aa5BnfuewmmkI0aCv2JmldbaHierrtLPanYrhUuuSmNbyswwjdjOJjjaoioCrU889A76"
0057E2CA   |.  E8 21>call CYMS.00404AF0               ;  合并注册码在注册表中的地址与密码表,作为新的密码表
0057E2CF   |.  8D45 >lea eax,dword ptr ss:[ebp-C]
0057E2D2   |.  E8 61>call CYMS.0057E238               ;  得到机器码的字符穿
0057E2D7   |.  8B45 >mov eax,dword ptr ss:[ebp-C]
0057E2DA   |.  E8 09>call CYMS.00404AE8               ;  判断机器码是否为0并得到机器码的位数
0057E2DF   |.  8BF8  mov edi,eax
0057E2E1   |.  85FF  test edi,edi
0057E2E3   |.  7E 79 jle short CYMS.0057E35E
0057E2E5   |.  BB 01>mov ebx,1
0057E2EA   |>  8D45 >/lea eax,dword ptr ss:[ebp-14]   ;  得到地址准备存入
0057E2ED   |.  8B55 >|mov edx,dword ptr ss:[ebp-C]    ;  得到机器码
0057E2F0   |.  8A541>|mov dl,byte ptr ds:[edx+ebx-1]  ;  依次得到机器码的ASCII码一个一个
0057E2F4   |.  E8 17>|call CYMS.00404A10              ;  把ASCII码存入[EAX]
0057E2F9   |.  8B45 >|mov eax,dword ptr ss:[ebp-14]   ;  得到ASCII码的存入地址
0057E2FC   |.  E8 B7>|call CYMS.004098B8              ;  把ASCII码和2D,2B,24,78,58,30,比较不是的话就减30
0057E301   |.  8BF0  |mov esi,eax                     ;  机器码转换来的16进制数据
0057E303   |.  8D049>|lea eax,dword ptr ds:[ebx+ebx*4>;  次数乘以4加本身(5倍的次数)
0057E306   |.  03F0  |add esi,eax                     ;  循环次数的5倍加上此位机器码
0057E308   |.  8B45 >|mov eax,dword ptr ss:[ebp-4]    ;  装入密码表(已经与注册表的存放地址合并了)
0057E30B   |.  E8 D8>|call CYMS.00404AE8              ;  得到密码表的位数
0057E310   |.  3BF0  |cmp esi,eax
0057E312   |.  7E 02 |jle short CYMS.0057E316         ;  看是否超过
0057E314   |.  8BF3  |mov esi,ebx
0057E316   |>  8D45 >|lea eax,dword ptr ss:[ebp-18]
0057E319   |.  8B55 >|mov edx,dword ptr ss:[ebp-4]
0057E31C   |.  8A543>|mov dl,byte ptr ds:[edx+esi-1]  ;  从密码表中取值
0057E320   |.  E8 EB>|call CYMS.00404A10
0057E325   |.  8B45 >|mov eax,dword ptr ss:[ebp-18]   ;  把得到的结果存入EAX
0057E328   |.  8D55 >|lea edx,dword ptr ss:[ebp-10]
0057E32B   |.  E8 C4>|call CYMS.004090F4              ;  看从密码表中取得的字符是否为小写,如果是小写这里把字母转化为大写
0057E330   |.  8B45 >|mov eax,dword ptr ss:[ebp-10]   ;  得到转化后的存放地址在EAX中
0057E333   |.  BA E8>|mov edx,CYMS.0057E3E8           ;  57E3E8地址处是5c就是一个“\”
0057E338   |.  E8 EF>|call CYMS.00404C2C              ;  检查从密码表取出的值是否等于“\”
0057E33D   |.  75 0D |jnz short CYMS.0057E34C
0057E33F   |.  8D45 >|lea eax,dword ptr ss:[ebp-10]
0057E342   |.  BA F4>|mov edx,CYMS.0057E3F4           ;  0057e3f4处的是38就是“8”
0057E347   |.  E8 7C>|call CYMS.004048C8              ;  用8替换掉“\”
0057E34C   |>  8B45 >|mov eax,dword ptr ss:[ebp-8]
0057E34F   |.  8B55 >|mov edx,dword ptr ss:[ebp-10]   ;  得到转化后的字母地址
0057E352   |.  E8 99>|call CYMS.00404AF0              ;  保存字母
0057E357   |.  8B45 >|mov eax,dword ptr ss:[ebp-8]    ;  到保存的地址[EAX]
0057E35A   |.  43    |inc ebx                         ;  增加循环次数
0057E35B   |.  4F    |dec edi
0057E35C   |.^ 75 8C \jnz short CYMS.0057E2EA
………………………………………………………………………………………………………………………………
进入0057E2D2   |.  E8 61>call CYMS.0057E238               ;  得到机器码
………………………………………………………………………………………………………………………………
0057E238   /$  53    push ebx
0057E239   |.  56    push esi
0057E23A   |.  83C4 >add esp,-10
0057E23D   |.  8BF0  mov esi,eax
0057E23F   |.  B8 04>mov eax,4
0057E244   |.  E8 DF>call CYMS.00402828
0057E249   |.  8BD8  mov ebx,eax
0057E24B   |.  6A 00 push 0                           ; /pFileSystemNameSize = NULL
0057E24D   |.  6A 00 push 0                           ; |pFileSystemNameBuffer = NULL
0057E24F   |.  8D442>lea eax,dword ptr ss:[esp+C]     ; |
0057E253   |.  50    push eax                         ; |pFileSystemFlags
0057E254   |.  8D442>lea eax,dword ptr ss:[esp+C]     ; |
0057E258   |.  50    push eax                         ; |pMaxFilenameLength
0057E259   |.  53    push ebx                         ; |pVolumeSerialNumber
0057E25A   |.  6A 00 push 0                           ; |MaxVolumeNameSize = 0
0057E25C   |.  6A 00 push 0                           ; |VolumeNameBuffer = NULL
0057E25E   |.  68 94>push CYMS.0057E294               ; |RootPathName = "c:\"
0057E263   |.  E8 08>call <jmp.&kernel32.GetVolumeInf>; \GetVolumeInformationA
0057E268   |.  8B03  mov eax,dword ptr ds:[ebx]       ;  上面得到C盘的序列号的十六进制(EAX)
0057E26A   |.  05 B2>add eax,2B2                      ;  加上2B2这就得到我的机器码
0057E26F   |.  89442>mov dword ptr ss:[esp+8],eax
0057E273   |.  33C0  xor eax,eax
0057E275   |.  89442>mov dword ptr ss:[esp+C],eax
0057E279   |.  DF6C2>fild qword ptr ss:[esp+8]        ;  机器码转化为实数
0057E27D   |.  83C4 >add esp,-0C
0057E280   |.  DB3C2>fstp tbyte ptr ss:[esp]          ; |
0057E283   |.  9B    wait                             ; |
0057E284   |.  8BC6  mov eax,esi                      ; |
0057E286   |.  E8 69>call CYMS.0040B1F4               ; \CYMS.0040B1F4


………………………………………………………………………………………………………………………………
这里只完成了第1个注册码的计算(不过也够了)
算法是这样的:用机器码的位数乘以5在加上此位机器码的数据,得到的结果在密码表中找字符如果是小写转化成大写
机器码多少位,注册码就多少位
第一次密码表:
00C8153C  5C 53 6F 66 74 77 61 72  \Softwar
00C81544  65 5C 4A 69 6E 67 43 68  e\JingCh
00C8154C  65 6E 67 5C 43 59 4D 53  eng\CYMS
00C81554  41 61 35 42 6E 66 75 65  Aa5Bnfue
00C8155C  77 6D 6D 6B 49 30 61 43  wmmkI0aC
00C81564  76 32 4A 6D 6C 64 62 61  v2Jmldba
00C8156C  48 69 65 72 72 74 4C 50  HierrtLP
00C81574  61 6E 59 72 68 55 75 75  anYrhUuu
00C8157C  53 6D 4E 62 79 73 77 77  SmNbysww
00C81584  6A 64 6A 4F 4A 6A 6A 61  jdjOJjja
00C8158C  6F 69 6F 43 72 55 38 38  oioCrU88
00C81594  39 41 37 36              9A76

………………………………………………………………………………………………………………………………
第2位地方:
………………………………………………………………………………………………………………………………
0060FF29   |.  8B83 >mov eax,dword ptr ds:[ebx+3F4]
0060FF2F   |.  8B40 >mov eax,dword ptr ds:[eax+4C]
0060FF32   |.  8B15 >mov edx,dword ptr ds:[616668]    ;  CYMS.0061905C
0060FF38   |.  8902  mov dword ptr ds:[edx],eax
0060FF3A   |.  8B15 >mov edx,dword ptr ds:[616544]    ;  CYMS.00619014
0060FF40   |.  8B12  mov edx,dword ptr ds:[edx]
0060FF42   |.  8BC3  mov eax,ebx
0060FF44   |.  E8 13>call CYMS.00450D5C
0060FF49   |.  8B83 >mov eax,dword ptr ds:[ebx+370]
0060FF4F   |.  8B80 >mov eax,dword ptr ds:[eax+208]
0060FF55   |.  33D2  xor edx,edx
0060FF57   |.  E8 08>call CYMS.004BB464
0060FF5C   |.  BA B4>mov edx,CYMS.006100B4
0060FF61   |.  E8 5A>call CYMS.004BB3C0
0060FF66   |.  8B83 >mov eax,dword ptr ds:[ebx+370]
0060FF6C   |.  8B80 >mov eax,dword ptr ds:[eax+208]
0060FF72   |.  BA 01>mov edx,1
0060FF77   |.  E8 E8>call CYMS.004BB464
0060FF7C   |.  50    push eax
0060FF7D   |.  BA D8>mov edx,CYMS.006100D8
0060FF82   |.  8D45 >lea eax,dword ptr ss:[ebp-18]
0060FF85   |.  E8 D2>call CYMS.0040305C
0060FF8A   |.  8B15 >mov edx,dword ptr ds:[615E58]    ;  CYMS.00619040
0060FF90   |.  8D45 >lea eax,dword ptr ss:[ebp-18]
0060FF93   |.  B1 11 mov cl,11
0060FF95   |.  E8 92>call CYMS.0040302C
0060FF9A   |.  8D55 >lea edx,dword ptr ss:[ebp-18]
0060FF9D   |.  8D45 >lea eax,dword ptr ss:[ebp-4]
0060FFA0   |.  E8 E7>call CYMS.00404A8C
0060FFA5   |.  8B55 >mov edx,dword ptr ss:[ebp-4]
0060FFA8   |.  58    pop eax
0060FFA9   |.  E8 12>call CYMS.004BB3C0
0060FFAE   |.  8B83 >mov eax,dword ptr ds:[ebx+370]
0060FFB4   |.  8B80 >mov eax,dword ptr ds:[eax+208]
0060FFBA   |.  BA 02>mov edx,2
0060FFBF   |.  E8 A0>call CYMS.004BB464
0060FFC4   |.  50    push eax
0060FFC5   |.  8B0D >mov ecx,dword ptr ds:[6164BC]    ;  CYMS.00619024
0060FFCB   |.  8B09  mov ecx,dword ptr ds:[ecx]
0060FFCD   |.  8D45 >lea eax,dword ptr ss:[ebp-1C]
0060FFD0   |.  BA E8>mov edx,CYMS.006100E8
0060FFD5   |.  E8 5A>call CYMS.00404B34
0060FFDA   |.  8B55 >mov edx,dword ptr ss:[ebp-1C]
0060FFDD   |.  58    pop eax
0060FFDE   |.  E8 DD>call CYMS.004BB3C0
0060FFE3   |.  A1 68>mov eax,dword ptr ds:[615F68]
0060FFE8   |.  8038 >cmp byte ptr ds:[eax],0          ;  比较关键比较位如果为1的话显示“已注册”
0060FFEB   |.  74 22 je short CYMS.0061000F
0060FFED   |.  8B83 >mov eax,dword ptr ds:[ebx+370]
0060FFF3   |.  8B80 >mov eax,dword ptr ds:[eax+208]
0060FFF9   |.  BA 03>mov edx,3
0060FFFE   |.  E8 61>call CYMS.004BB464
00610003   |.  BA FC>mov edx,CYMS.006100FC            ;  显示已注册
00610008   |.  E8 B3>call CYMS.004BB3C0
0061000D   |.  EB 20 jmp short CYMS.0061002F
0061000F   |>  8B83 >mov eax,dword ptr ds:[ebx+370]
00610015   |.  8B80 >mov eax,dword ptr ds:[eax+208]
0061001B   |.  BA 03>mov edx,3
00610020   |.  E8 3F>call CYMS.004BB464
00610025   |.  BA 18>mov edx,CYMS.00610118            ;  显示未未注册
0061002A   |.  E8 91>call CYMS.004BB3C0
0061002F   |>  8BC3  mov eax,ebx
00610031   |.  E8 56>call CYMS.0060FB8C
00610036   |.  8D55 >lea edx,dword ptr ss:[ebp-24]
00610039   |.  A1 44>mov eax,dword ptr ds:[616544]
0061003E   |.  8B00  mov eax,dword ptr ds:[eax]       ;  在EAX地址中可以看到“精诚酒家”
00610040   |.  E8 3F>call CYMS.0057F484               ;  取“精诚酒家”开头拼音四个字母
00610045   |.  8D45 >lea eax,dword ptr ss:[ebp-24]
00610048   |.  BA 34>mov edx,CYMS.00610134            ;  ASCII "\Software\JingCheng\CYMS"
0061004D   |.  E8 9E>call CYMS.00404AF0               ;  取我的第二个输入码
00610052   |.  8B45 >mov eax,dword ptr ss:[ebp-24]
00610055   |.  8D55 >lea edx,dword ptr ss:[ebp-20]
00610058   |.  E8 3B>call CYMS.0057E298               ;  重新取机器码计算注册码
0061005D   |.  8B55 >mov edx,dword ptr ss:[ebp-20]
00610060   |.  A1 28>mov eax,dword ptr ds:[616528]
00610065   |.  8B00  mov eax,dword ptr ds:[eax]       ;  出现我的第二个输入码!!
00610067   |.  E8 C0>call CYMS.00404C2C               ;  比较第二次的输入码(不会对结果有作用了)
0061006C   |.  A1 20>mov eax,dword ptr ds:[615F20]
00610071   |.  0F940>sete byte ptr ds:[eax]           ;  置标志位0061906D为1
00610074   |.  8BD3  mov edx,ebx
00610076   |.  8BC3  mov eax,ebx
………………………………………………………………………………………………………………………………
第2次注册码的算法与第一次的算法差不多用机器码的位数乘以5在加上此位机器码的数据,得到的结果在密码表中找字符如果是小写转化成大写
机器码多少位,注册码就多少位
只不过密码表换成了:
00C8822C  4A 43 4A 4A 5C 53 6F 66  JCJJ\Sof
00C88234  74 77 61 72 65 5C 4A 69  tware\Ji
00C8823C  6E 67 43 68 65 6E 67 5C  ngCheng\
00C88244  43 59 4D 53 41 61 35 42  CYMSAa5B
00C8824C  6E 66 75 65 77 6D 6D 6B  nfuewmmk
00C88254  49 30 61 43 76 32 4A 6D  I0aCv2Jm
00C8825C  6C 64 62 61 48 69 65 72  ldbaHier
00C88264  72 74 4C 50 61 6E 59 72  rtLPanYr
00C8826C  68 55 75 75 53 6D 4E 62  hUuuSmNb
00C88274  79 73 77 77 6A 64 6A 4F  yswwjdjO
00C8827C  4A 6A 6A 61 6F 69 6F 43  JjjaoioC
00C88284  72 55 38 38 39 41 37 36  rU889A76
注册信息保存在\Software\JingCheng\CYMS中。
………………………………………………………………………………………………………………………………
下面一段是取一个汉字的拼音的首字母的算法
0057F270   /$  55    push ebp
0057F271   |.  8BEC  mov ebp,esp
0057F273   |.  51    push ecx
0057F274   |.  53    push ebx
0057F275   |.  8945 >mov dword ptr ss:[ebp-4],eax
0057F278   |.  8B45 >mov eax,dword ptr ss:[ebp-4]
0057F27B   |.  E8 50>call CYMS.00404CD0
0057F280   |.  33C0  xor eax,eax
0057F282   |.  55    push ebp
0057F283   |.  68 75>push CYMS.0057F475
0057F288   |.  64:FF>push dword ptr fs:[eax]
0057F28B   |.  64:89>mov dword ptr fs:[eax],esp
0057F28E   |.  8B45 >mov eax,dword ptr ss:[ebp-4]
0057F291   |.  0FB60>movzx eax,byte ptr ds:[eax]     ;  取一个汉字的一半ASCII码
0057F294   |.  C1E0 >shl eax,8
0057F297   |.  8B55 >mov edx,dword ptr ss:[ebp-4]
0057F29A   |.  0FB65>movzx edx,byte ptr ds:[edx+1]   ;  又取另一个汉字的一半ASCII码
0057F29E   |.  03C2  add eax,edx                     ;  合在一起得到全部汉字的ASCII码
0057F2A0       3D E8>cmp eax,0C2E8                   ;  与,0C2E8比较
0057F2A5   |.  0F8D >jge CYMS.0057F35F               ;  大于跳走
0057F2AB   |.  3D A2>cmp eax,0B7A2                   ;  与0B7A2比较
0057F2B0   |.  7D 50 jge short CYMS.0057F302         ;  大于跳走
0057F2B2       3D C1>cmp eax,0B2C1                   ;  与B2C1比较
0057F2B7   |.  7D 1E jge short CYMS.0057F2D7         ;  大于跳走
0057F2B9   |.  05 5F>add eax,FFFF4F5F                ;  汉字的ASCII码加上FFFF4F5F
0057F2BE   |.  83E8 >sub eax,24                      ;  再减24
0057F2C1   |.  0F82 >jb CYMS.0057F401
0057F2C7   |.  2D FC>sub eax,1FC
0057F2CC   |.  0F82 >jb CYMS.0057F405
0057F2D2   |.  E9 86>jmp CYMS.0057F45D
0057F2D7   |>  05 3F>add eax,FFFF4D3F                ;  加上FFFF4D3F
0057F2DC   |.  2D 2D>sub eax,22D                     ;  再减去22d
0057F2E1   |.  0F82 >jb CYMS.0057F409
0057F2E7   |.  2D FC>sub eax,1FC
0057F2EC   |.  0F82 >jb CYMS.0057F40D
0057F2F2   |.  2D B8>sub eax,0B8
0057F2F7   |.  0F82 >jb CYMS.0057F411
0057F2FD   |.  E9 5B>jmp CYMS.0057F45D
0057F302   |>  3D F7>cmp eax,0BBF7
0057F307   |.  7D 2B jge short CYMS.0057F334
0057F309   |.  05 5E>add eax,FFFF485E
0057F30E   |.  2D 1F>sub eax,11F
0057F313   |.  0F82 >jb CYMS.0057F415
0057F319   |.  2D 3D>sub eax,13D
0057F31E   |.  0F82 >jb CYMS.0057F419
0057F324   |.  2D F9>sub eax,1F9
0057F329   |.  0F82 >jb CYMS.0057F41D
0057F32F   |.  E9 29>jmp CYMS.0057F45D
0057F334   |>  05 09>add eax,FFFF4409
0057F339   |.  2D AF>sub eax,3AF
0057F33E   |.  0F82 >jb CYMS.0057F421
0057F344   |.  2D 06>sub eax,106
0057F349   |.  0F82 >jb CYMS.0057F425
0057F34F   |.  2D 3C>sub eax,23C
0057F354   |.  0F82 >jb CYMS.0057F429
0057F35A   |.  E9 FE>jmp CYMS.0057F45D
0057F35F   |>  3D F6>cmp eax,0C8F6
0057F364   |.  7D 59 jge short CYMS.0057F3BF
0057F366   |.  3D BE>cmp eax,0C5BE
0057F36B   |.  7D 29 jge short CYMS.0057F396
0057F36D   |.  05 18>add eax,FFFF3D18
0057F372   |.  2D DB>sub eax,1DB
0057F377   |.  0F82 >jb CYMS.0057F42D
0057F37D   |.  2D F3>sub eax,0F3
0057F382   |.  0F82 >jb CYMS.0057F431
0057F388   |.  83E8 >sub eax,8
0057F38B   |.  0F82 >jb CYMS.0057F435
0057F391   |.  E9 C7>jmp CYMS.0057F45D
0057F396   |>  05 42>add eax,FFFF3A42
0057F39B   |.  2D 1C>sub eax,11C
0057F3A0   |.  0F82 >jb CYMS.0057F439
0057F3A6   |.  2D E1>sub eax,1E1
0057F3AB   |.  0F82 >jb CYMS.0057F43D
0057F3B1   |.  83E8 >sub eax,3B
0057F3B4   |.  0F82 >jb CYMS.0057F441
0057F3BA   |.  E9 9E>jmp CYMS.0057F45D
0057F3BF   |>  3D F4>cmp eax,0CEF4
0057F3C4   |.  7D 1C jge short CYMS.0057F3E2
0057F3C6   |.  05 0A>add eax,FFFF370A
0057F3CB   |.  2D 04>sub eax,304
0057F3D0   |.  72 73 jb short CYMS.0057F445
0057F3D2   |.  2D E0>sub eax,1E0
0057F3D7   |.  72 70 jb short CYMS.0057F449
0057F3D9   |.  2D 1A>sub eax,11A
0057F3DE   |.  72 6D jb short CYMS.0057F44D
0057F3E0   |.  EB 7B jmp short CYMS.0057F45D
0057F3E2   |>  05 0C>add eax,FFFF310C
0057F3E7   |.  2D 95>sub eax,295
0057F3EC   |.  72 63 jb short CYMS.0057F451
0057F3EE   |.  83C0 >add eax,-30
0057F3F1   |.  2D 18>sub eax,318
0057F3F6   |.  72 5D jb short CYMS.0057F455
0057F3F8   |.  2D 29>sub eax,329
0057F3FD   |.  72 5A jb short CYMS.0057F459
0057F3FF   |.  EB 5C jmp short CYMS.0057F45D
0057F401   |>  B3 41 mov bl,41                       ;  拼音A
0057F403   |.  EB 5A jmp short CYMS.0057F45F
0057F405   |>  B3 42 mov bl,42                       ;  拼音B
0057F407   |.  EB 56 jmp short CYMS.0057F45F
0057F409   |>  B3 43 mov bl,43                       ;  拼音C
0057F40B   |.  EB 52 jmp short CYMS.0057F45F
0057F40D   |>  B3 44 mov bl,44                       ;  拼音D
0057F40F   |.  EB 4E jmp short CYMS.0057F45F
0057F411   |>  B3 45 mov bl,45                       ;  拼音E
0057F413   |.  EB 4A jmp short CYMS.0057F45F
0057F415   |>  B3 46 mov bl,46                       ;  拼音F
0057F417   |.  EB 46 jmp short CYMS.0057F45F
0057F419   |>  B3 47 mov bl,47                       ;  拼音G
0057F41B   |.  EB 42 jmp short CYMS.0057F45F
0057F41D   |>  B3 48 mov bl,48                       ;  拼音H
0057F41F   |.  EB 3E jmp short CYMS.0057F45F
0057F421   |>  B3 4A mov bl,4A                       ;  拼音J
0057F423   |.  EB 3A jmp short CYMS.0057F45F
0057F425   |>  B3 4B mov bl,4B                       ;  拼音K
0057F427   |.  EB 36 jmp short CYMS.0057F45F
0057F429   |>  B3 4C mov bl,4C                       ;  拼音L
0057F42B   |.  EB 32 jmp short CYMS.0057F45F
0057F42D   |>  B3 4D mov bl,4D                       ;  拼音M
0057F42F   |.  EB 2E jmp short CYMS.0057F45F
0057F431   |>  B3 4E mov bl,4E                       ;  拼音N
0057F433   |.  EB 2A jmp short CYMS.0057F45F
0057F435   |>  B3 4F mov bl,4F                       ;  拼音0
0057F437   |.  EB 26 jmp short CYMS.0057F45F
0057F439   |>  B3 50 mov bl,50                       ;  拼音P
0057F43B   |.  EB 22 jmp short CYMS.0057F45F
0057F43D   |>  B3 51 mov bl,51                       ;  拼音Q
0057F43F   |.  EB 1E jmp short CYMS.0057F45F
0057F441   |>  B3 52 mov bl,52                       ;  拼音R
0057F443   |.  EB 1A jmp short CYMS.0057F45F
0057F445   |>  B3 53 mov bl,53                       ;  拼音S
0057F447   |.  EB 16 jmp short CYMS.0057F45F
0057F449   |>  B3 54 mov bl,54                       ;  拼音T
0057F44B   |.  EB 12 jmp short CYMS.0057F45F
0057F44D   |>  B3 57 mov bl,57                       ;  拼音W
0057F44F   |.  EB 0E jmp short CYMS.0057F45F
0057F451   |>  B3 58 mov bl,58                       ;  拼音X
0057F453   |.  EB 0A jmp short CYMS.0057F45F
0057F455   |>  B3 59 mov bl,59                       ;  拼音Y
0057F457   |.  EB 06 jmp short CYMS.0057F45F
0057F459   |>  B3 5A mov bl,5A                       ;  拼音Z
0057F45B   |.  EB 02 jmp short CYMS.0057F45F
0057F45D   |>  33DB  xor ebx,ebx
0057F45F   |>  33C0  xor eax,eax
0057F461   |.  5A    pop edx
0057F462   |.  59    pop ecx
0057F463   |.  59    pop ecx
0057F464   |.  64:89>mov dword ptr fs:[eax],edx
0057F467   |.  68 7C>push CYMS.0057F47C
0057F46C   |>  8D45 >lea eax,dword ptr ss:[ebp-4]
…………………………………………………………………………………………