【破文作者】 rdsnow[BCG][PYG]
【 E-mail 】 rdsnow@163.com
【 作者QQ 】 83757177
【文章题目】 两款网页特效软件的注册
【软件名称】 ××网页特效制作管理精灵王 V3.75
××特效梦工厂 V2.0
----------------------------------------------------------------------------------------------
【加密方式】 序列号
【破解工具】 FlyOD V1.10、W32DASM V8.93
【软件限制】 NAG、使用次数限制、功能限制
【破解平台】 Microsoft Windows XP SP2
----------------------------------------------------------------------------------------------
【文章简介】
最近,单位要建立一个网站,以扩大宣传,要偶来负责,偶网页制作水平一般,于是找来了几个网页特效的程序,很多都是免费的,但也有几个共享软件需要注册,作者宣称没有采用强劲的加密算法,正好让偶等菜鸟学习一下。考虑这种类型的程序制作作者需要花费大量的精力去收集整理,所以隐去程序名,支持一下程序的作者。程序的注册很简单,高手就不要看了。
----------------------------------------------------------------------------------------------
【破解过程】
××网页特效制作管理精灵王 V3.75
加了ASPack 2.12 -> Alexey Solodovnikov的外壳,AspackDie V1.41脱掉,Borland Delphi 6.0 - 7.0编写。
004C0786 . 8D55 FC LEA EDX,DWORD PTR SS:[EBP-4]
004C0789 . 8B83 2C030000 MOV EAX,DWORD PTR DS:[EBX+32C]
004C078F . E8 DC37F8FF CALL Unpacked.00443F70 ; 读取注册码
004C0794 . 837D FC 00 CMP DWORD PTR SS:[EBP-4],0
004C0798 . 74 14 JE SHORT Unpacked.004C07AE
004C079A . 8D55 F8 LEA EDX,DWORD PTR SS:[EBP-8]
004C079D . 8B83 30030000 MOV EAX,DWORD PTR DS:[EBX+330]
004C07A3 . E8 C837F8FF CALL Unpacked.00443F70 ; 读取用户名
004C07A8 . 837D F8 00 CMP DWORD PTR SS:[EBP-8],0
004C07AC . 75 1D JNZ SHORT Unpacked.004C07CB
004C07AE > 6A 40 PUSH 40
004C07B0 . B9 38094C00 MOV ECX,Unpacked.004C0938
004C07B5 . BA 40094C00 MOV EDX,Unpacked.004C0940 ; 对话框:用户名和注册码都必须输入,请检查!
004C07BA . A1 9C744C00 MOV EAX,DWORD PTR DS:[4C749C]
004C07BF . 8B00 MOV EAX,DWORD PTR DS:[EAX]
004C07C1 . E8 8639FAFF CALL Unpacked.0046414C
004C07C6 . E9 2D010000 JMP Unpacked.004C08F8
004C07CB > 33C0 XOR EAX,EAX
004C07CD . 55 PUSH EBP
004C07CE . 68 E7084C00 PUSH Unpacked.004C08E7
004C07D3 . 64:FF30 PUSH DWORD PTR FS:[EAX]
004C07D6 . 64:8920 MOV DWORD PTR FS:[EAX],ESP
004C07D9 . A1 348E4C00 MOV EAX,DWORD PTR DS:[4C8E34]
004C07DE . E8 F9FEFFFF CALL Unpacked.004C06DC ; 这个 Call就是校验注册码了
004C07E3 . 84C0 TEST AL,AL
004C07E5 . 0F84 B0000000 JE Unpacked.004C089B
004C07EB . B2 01 MOV DL,1
004C07ED . A1 C8164700 MOV EAX,DWORD PTR DS:[4716C8]
004C07F2 . E8 D10FFBFF CALL Unpacked.004717C8
004C07F7 . 8BF0 MOV ESI,EAX
004C07F9 . BA 02000080 MOV EDX,80000002
004C07FE . 8BC6 MOV EAX,ESI
004C0800 . E8 6310FBFF CALL Unpacked.00471868
004C0805 . B1 01 MOV CL,1
004C0807 . BA 6C094C00 MOV EDX,Unpacked.004C096C ; ASCII "Software\dingdongsoft\ddnettxw"
004C080C . 8BC6 MOV EAX,ESI
004C080E . E8 B910FBFF CALL Unpacked.004718CC
004C0813 . 8D55 F4 LEA EDX,DWORD PTR SS:[EBP-C]
004C0816 . 8B83 2C030000 MOV EAX,DWORD PTR DS:[EBX+32C]
004C081C . E8 4F37F8FF CALL Unpacked.00443F70
004C0821 . 8B4D F4 MOV ECX,DWORD PTR SS:[EBP-C]
004C0824 . BA 94094C00 MOV EDX,Unpacked.004C0994 ; ASCII "sn"
004C0829 . 8BC6 MOV EAX,ESI
004C082B . E8 3812FBFF CALL Unpacked.00471A68
004C0830 . 8D55 F0 LEA EDX,DWORD PTR SS:[EBP-10]
004C0833 . A1 9C744C00 MOV EAX,DWORD PTR DS:[4C749C]
004C0838 . 8B00 MOV EAX,DWORD PTR DS:[EAX]
004C083A . E8 A532FAFF CALL Unpacked.00463AE4
004C083F . 8B55 F0 MOV EDX,DWORD PTR SS:[EBP-10]
004C0842 . A1 7C734C00 MOV EAX,DWORD PTR DS:[4C737C]
004C0847 . 8B00 MOV EAX,DWORD PTR DS:[EAX]
004C0849 . E8 5237F8FF CALL Unpacked.00443FA0
004C084E . 8D55 E8 LEA EDX,DWORD PTR SS:[EBP-18]
004C0851 . 8B83 30030000 MOV EAX,DWORD PTR DS:[EBX+330]
004C0857 . E8 1437F8FF CALL Unpacked.00443F70
004C085C . 8B45 E8 MOV EAX,DWORD PTR SS:[EBP-18]
004C085F . 8D55 EC LEA EDX,DWORD PTR SS:[EBP-14]
004C0862 . E8 35FCFFFF CALL Unpacked.004C049C
004C0867 . A1 7C734C00 MOV EAX,DWORD PTR DS:[4C737C]
004C086C . 8B00 MOV EAX,DWORD PTR DS:[EAX]
004C086E . 8B80 9C030000 MOV EAX,DWORD PTR DS:[EAX+39C]
004C0874 . BA A0094C00 MOV EDX,Unpacked.004C09A0 ; 已经注册
004C0879 . E8 BE50F9FF CALL Unpacked.0045593C
004C087E . A1 7C734C00 MOV EAX,DWORD PTR DS:[4C737C]
004C0883 . 8B00 MOV EAX,DWORD PTR DS:[EAX]
004C0885 . 8B80 9C030000 MOV EAX,DWORD PTR DS:[EAX+39C]
004C088B . 33D2 XOR EDX,EDX
004C088D . E8 6E51F9FF CALL Unpacked.00455A00
004C0892 . 8BC3 MOV EAX,EBX
004C0894 . E8 7700FAFF CALL Unpacked.00460910
004C0899 . EB 42 JMP SHORT Unpacked.004C08DD
004C089B > 6A 10 PUSH 10
004C089D . B9 38094C00 MOV ECX,Unpacked.004C0938
004C08A2 . BA AC094C00 MOV EDX,Unpacked.004C09AC ; 用户名和注册码输入错误,请联系作者注册!
004C08A7 . A1 9C744C00 MOV EAX,DWORD PTR DS:[4C749C]
004C08AC . 8B00 MOV EAX,DWORD PTR DS:[EAX]
004C08AE . E8 9938FAFF CALL Unpacked.0046414C
进入004C07DE CALL Unpacked.004C06DC
………………
004C06F9 |. 8B83 2C030000 MOV EAX,DWORD PTR DS:[EBX+32C]
004C06FF |. E8 6C38F8FF CALL Unpacked.00443F70 ; 计算假注册码的长度
004C0704 |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
004C0707 |. 50 PUSH EAX
004C0708 |. 8D55 F4 LEA EDX,DWORD PTR SS:[EBP-C]
004C070B |. 8B83 28030000 MOV EAX,DWORD PTR DS:[EBX+328]
004C0711 |. E8 5A38F8FF CALL Unpacked.00443F70 ; 计算机器码的长度
004C0716 |. 8B45 F4 MOV EAX,DWORD PTR SS:[EBP-C]
004C0719 |. 8D55 F8 LEA EDX,DWORD PTR SS:[EBP-8]
004C071C |. E8 BFFEFFFF CALL Unpacked.004C05E0 ; 计算注册码得到真注册码
004C0721 |. 8B55 F8 MOV EDX,DWORD PTR SS:[EBP-8]
004C0724 |. 58 POP EAX
004C0725 |. E8 AE43F4FF CALL Unpacked.00404AD8 ; 比较真假注册码
004C072A |. 75 04 JNZ SHORT Unpacked.004C0730 ; 关键跳
004C072C |. B3 01 MOV BL,1 ; 这句代码让Call返回1
004C072E |. EB 02 JMP SHORT Unpacked.004C0732
004C0730 |> 33DB XOR EBX,EBX
004C0732 |> 33C0 XOR EAX,EAX ; 这句代码让Call返回0
进入004C071C CALL Unpacked.004C05E0
………………
004C05FF |. 55 PUSH EBP
004C0600 |. 68 CD064C00 PUSH Unpacked.004C06CD
004C0605 |. 64:FF30 PUSH DWORD PTR FS:[EAX]
004C0608 |. 64:8920 MOV DWORD PTR FS:[EAX],ESP
004C060B |. 33F6 XOR ESI,ESI
004C060D |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
004C0610 |. E8 7F43F4FF CALL Unpacked.00404994 ; 取得机器码的长度,作为循环次数
004C0615 |. 8BD8 MOV EBX,EAX
004C0617 |. 85DB TEST EBX,EBX
004C0619 |. 7E 32 JLE SHORT Unpacked.004C064D
004C061B |. C745 F4 0100000>MOV DWORD PTR SS:[EBP-C],1
004C0622 |> 8D45 F0 /LEA EAX,DWORD PTR SS:[EBP-10]
004C0625 |. 50 |PUSH EAX
004C0626 |. B9 01000000 |MOV ECX,1
004C062B |. 8B55 F4 |MOV EDX,DWORD PTR SS:[EBP-C]
004C062E |. 8B45 FC |MOV EAX,DWORD PTR SS:[EBP-4]
004C0631 |. E8 B645F4FF |CALL Unpacked.00404BEC
004C0636 |. 8B45 F0 |MOV EAX,DWORD PTR SS:[EBP-10]
004C0639 |. E8 4E45F4FF |CALL Unpacked.00404B8C
004C063E |. 8A00 |MOV AL,BYTE PTR DS:[EAX]
004C0640 |. 25 FF000000 |AND EAX,0FF
004C0645 |. 03F0 |ADD ESI,EAX
004C0647 |. FF45 F4 |INC DWORD PTR SS:[EBP-C]
004C064A |. 4B |DEC EBX
004C064B |.^ 75 D5 \JNZ SHORT Unpacked.004C0622 ; 循环求得机器码各位字符的ASC的和
004C064D |> 8BC6 MOV EAX,ESI
004C064F |. B9 0C000000 MOV ECX,0C
004C0654 |. 99 CDQ
004C0655 |. F7F9 IDIV ECX ; 求得的和除以0xC
004C0657 |. 69C0 DD870C00 IMUL EAX,EAX,0C87DD ; 商乘以0xC87DD
004C065D |. 8D55 EC LEA EDX,DWORD PTR SS:[EBP-14]
004C0660 |. E8 5788F4FF CALL Unpacked.00408EBC ; 转化为十进制字符串,得到字符串一
004C0665 |. FF75 EC PUSH DWORD PTR SS:[EBP-14]
004C0668 |. 8D55 E8 LEA EDX,DWORD PTR SS:[EBP-18]
004C066B |. 6BC6 13 IMUL EAX,ESI,13 ; 机器码各个字符的ASC的和乘以0x13
004C066E |. E8 4988F4FF CALL Unpacked.00408EBC ; 转化为十进制字符串,得到字符串二
004C0673 |. FF75 E8 PUSH DWORD PTR SS:[EBP-18]
004C0676 |. 8D55 E4 LEA EDX,DWORD PTR SS:[EBP-1C]
004C0679 |. 8D86 DD870C00 LEA EAX,DWORD PTR DS:[ESI+C87DD] ; 机器码各个字符的ASC的和加上0xC87DD
004C067F |. E8 3888F4FF CALL Unpacked.00408EBC ; 转化为十进制字符串,得到字符串三
004C0684 |. FF75 E4 PUSH DWORD PTR SS:[EBP-1C]
004C0687 |. 8D55 E0 LEA EDX,DWORD PTR SS:[EBP-20]
004C068A |. 69C6 D1020000 IMUL EAX,ESI,2D1 ; 机器码各个字符的ASC的和乘以0x2D1
004C0690 |. 05 BE070000 ADD EAX,7BE ; 再加上0x7BE
004C0695 |. E8 2288F4FF CALL Unpacked.00408EBC ; 转化为十进制字符串,得到字符串四
004C069A |. FF75 E0 PUSH DWORD PTR SS:[EBP-20]
004C069D |. 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
004C06A0 |. BA 04000000 MOV EDX,4
004C06A5 |. E8 AA43F4FF CALL Unpacked.00404A54 ; 连接上面得到的四个十进制字符串,这里得到的就是注册码了
004C06AA |. 33C0 XOR EAX,EAX
004C06AC |. 5A POP EDX
004C06AD |. 59 POP ECX
004C06AE |. 59 POP ECX
004C06AF |. 64:8910 MOV DWORD PTR FS:[EAX],EDX
004C06B2 |. 68 D4064C00 PUSH Unpacked.004C06D4
004C06B7 |> 8D45 E0 LEA EAX,DWORD PTR SS:[EBP-20]
004C06BA |. BA 05000000 MOV EDX,5
004C06BF |. E8 3C40F4FF CALL Unpacked.00404700
004C06C4 |. 8D45 FC LEA EAX,DWORD PTR SS:[EBP-4]
004C06C7 |. E8 1040F4FF CALL Unpacked.004046DC
004C06CC \. C3 RETN
应该看到注册码是怎样形成的了;
【注册机源码】
void CMy001Dlg::OnOK()
{
// TODO: Add extra validation here
//CDialog::OnOK();
UpdateData(true);
long i,n=0;
char cMechine[20],SN1[20],SN2[20],SN3[20],SN4[20];
strcpy(cMechine,m_Edit1);
//求机器码各个字符的ASC的总和
for (i=0;i<m_Edit1.GetLength ();i++) n += cMechine[i];
//求注册码的第一部分
i=n/12;
i *= 0xC87DD;
_itoa(i,SN1,10);
//求注册码的第二部分
i=n*19;
_itoa(i,SN2,10);
//求注册码的第三部分
i=n+0xC87DD;
_itoa(i,SN3,10);
//求注册码的第四部分
i=n*0x2D1+0x7BE;
_itoa(i,SN4,10);
//连接得到注册码
m_Edit2="";
m_Edit2 = m_Edit2+SN1+SN2+SN3+SN4;
UpdateData(false);
}
----------------------------------------------------------------------------------------------
××特效梦工厂 V2.0
UPX 0.89.6 - 1.02 / 1.05 - 1.24 -> Markus & Laszlo的外壳,用UPX自己脱掉,Borland Delphi 6.0 - 7.0编写
004E11D4 |. 8D55 F8 LEA EDX,DWORD PTR SS:[EBP-8]
004E11D7 |. 8B86 E4090000 MOV EAX,DWORD PTR DS:[ESI+9E4]
004E11DD |. E8 7ECDF5FF CALL JSBuilde.0043DF60 ; 取得注册码
004E11E2 |. 837D F8 00 CMP DWORD PTR SS:[EBP-8],0
004E11E6 |. 75 1F JNZ SHORT JSBuilde.004E1207
004E11E8 |. B8 60134E00 MOV EAX,JSBuilde.004E1360
004E11ED |. E8 2A60F5FF CALL JSBuilde.0043721C ; 对话框:请输入注册码
004E11F2 |. 8B96 E4090000 MOV EDX,DWORD PTR DS:[ESI+9E4]
004E11F8 |. A1 F8504F00 MOV EAX,DWORD PTR DS:[4F50F8]
004E11FD |. E8 127EF7FF CALL JSBuilde.00459014
004E1202 |. E9 1E010000 JMP JSBuilde.004E1325
004E1207 |> 8D55 FC LEA EDX,DWORD PTR SS:[EBP-4]
004E120A |. 8B86 E4090000 MOV EAX,DWORD PTR DS:[ESI+9E4]
004E1210 |. E8 4BCDF5FF CALL JSBuilde.0043DF60
004E1215 |. 8D55 F4 LEA EDX,DWORD PTR SS:[EBP-C]
004E1218 |. 8B86 E4090000 MOV EAX,DWORD PTR DS:[ESI+9E4]
004E121E |. E8 3DCDF5FF CALL JSBuilde.0043DF60
004E1223 |. 8B45 F4 MOV EAX,DWORD PTR SS:[EBP-C]
004E1226 |. E8 FD3AF2FF CALL JSBuilde.00404D28 ; 计算注册码的长度作为循环次数
004E122B |. 8BD0 MOV EDX,EAX
004E122D |. 85D2 TEST EDX,EDX
004E122F |. 7E 3C JLE SHORT JSBuilde.004E126D
004E1231 |. B8 01000000 MOV EAX,1
004E1236 |> 8B4D FC /MOV ECX,DWORD PTR SS:[EBP-4]
004E1239 |. 8A4C01 FF |MOV CL,BYTE PTR DS:[ECX+EAX-1]
004E123D |. 80F9 30 |CMP CL,30
004E1240 |. 72 08 |JB SHORT JSBuilde.004E124A
004E1242 |. 8B5D FC |MOV EBX,DWORD PTR SS:[EBP-4]
004E1245 |. 80F9 39 |CMP CL,39
004E1248 |. 76 1F |JBE SHORT JSBuilde.004E1269
004E124A |> B8 7C134E00 |MOV EAX,JSBuilde.004E137C ; 对话框:注册码输入有误,请重新输入!
004E124F |. E8 C85FF5FF |CALL JSBuilde.0043721C
004E1254 |. 8B96 E4090000 |MOV EDX,DWORD PTR DS:[ESI+9E4]
004E125A |. A1 F8504F00 |MOV EAX,DWORD PTR DS:[4F50F8]
004E125F |. E8 B07DF7FF |CALL JSBuilde.00459014
004E1264 |. E9 BC000000 |JMP JSBuilde.004E1325
004E1269 |> 40 |INC EAX
004E126A |. 4A |DEC EDX
004E126B |.^ 75 C9 \JNZ SHORT JSBuilde.004E1236 ; 用循环检验注册码是否全部是数字
004E126D |> 8D55 F0 LEA EDX,DWORD PTR SS:[EBP-10]
004E1270 |. 8B86 E0090000 MOV EAX,DWORD PTR DS:[ESI+9E0]
004E1276 |. E8 E5CCF5FF CALL JSBuilde.0043DF60 ; 取得机器码
004E127B |. 8B45 F0 MOV EAX,DWORD PTR SS:[EBP-10]
004E127E |. E8 A17EF2FF CALL JSBuilde.00409124 ; 机器码的字符串转化为整数
004E1283 |. E8 FC9BFEFF CALL JSBuilde.004CAE84 ; 计算真注册码
004E1288 |. 8BD8 MOV EBX,EAX
004E128A |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
004E128D |. E8 927EF2FF CALL JSBuilde.00409124 ; 假注册码的字符串转化为整数
004E1292 |. 3BD8 CMP EBX,EAX
004E1294 |. 0F85 81000000 JNZ JSBuilde.004E131B ; 关键跳转
004E129A |. B2 01 MOV DL,1
004E129C |. A1 B8C64600 MOV EAX,DWORD PTR DS:[46C6B8]
004E12A1 |. E8 12B5F8FF CALL JSBuilde.0046C7B8
004E12A6 |. 8BD8 MOV EBX,EAX
004E12A8 |. BA 02000080 MOV EDX,80000002
004E12AD |. 8BC3 MOV EAX,EBX
004E12AF |. E8 A4B5F8FF CALL JSBuilde.0046C858
004E12B4 |. 33C9 XOR ECX,ECX
004E12B6 |. BA A0134E00 MOV EDX,JSBuilde.004E13A0 ; ASCII "System\CurrentControlSet\Services\Class\knightsoft\JSBuilder"
004E12BB |. 8BC3 MOV EAX,EBX
004E12BD |. E8 D6B6F8FF CALL JSBuilde.0046C998
004E12C2 |. 8D55 EC LEA EDX,DWORD PTR SS:[EBP-14]
004E12C5 |. 8B86 E0090000 MOV EAX,DWORD PTR DS:[ESI+9E0]
004E12CB |. E8 90CCF5FF CALL JSBuilde.0043DF60
004E12D0 |. 8B45 EC MOV EAX,DWORD PTR SS:[EBP-14]
004E12D3 |. E8 4C7EF2FF CALL JSBuilde.00409124
004E12D8 |. E8 A79BFEFF CALL JSBuilde.004CAE84
004E12DD |. 8BC8 MOV ECX,EAX
004E12DF |. BA E8134E00 MOV EDX,JSBuilde.004E13E8 ; ASCII "registecode"
004E12E4 |. 8BC3 MOV EAX,EBX
004E12E6 |. E8 FDB7F8FF CALL JSBuilde.0046CAE8
004E12EB |. 8BC3 MOV EAX,EBX
004E12ED |. E8 36B5F8FF CALL JSBuilde.0046C828
004E12F2 |. 8BC3 MOV EAX,EBX
004E12F4 |. E8 0B2AF2FF CALL JSBuilde.00403D04
004E12F9 |. B8 FC134E00 MOV EAX,JSBuilde.004E13FC ; ××特效梦工厂 XP 注册成功,谢谢您对本软件的支持,您的认可是我最大的动力!
004E12FE |. E8 195FF5FF CALL JSBuilde.0043721C
004E1303 |. B8 4C144E00 MOV EAX,JSBuilde.004E144C
004E1308 |. E8 0F5FF5FF CALL JSBuilde.0043721C
004E130D |. A1 A0844E00 MOV EAX,DWORD PTR DS:[4E84A0]
004E1312 |. 8B00 MOV EAX,DWORD PTR DS:[EAX]
004E1314 |. E8 0BCDF7FF CALL JSBuilde.0045E024
004E1319 |. EB 0A JMP SHORT JSBuilde.004E1325
004E131B |> B8 78144E00 MOV EAX,JSBuilde.004E1478 ; 错误,××特效梦工厂 XP 注册认证失败
004E1320 |. E8 F75EF5FF CALL JSBuilde.0043721C
进入004E1283 CALL JSBuilde.004CAE84
004CAE9B |. BB D9D10E00 MOV EBX,0ED1D9 ; EBX赋初值
004CAEA0 |. 8D45 FC LEA EAX,DWORD PTR SS:[EBP-4]
004CAEA3 |. BA 68AF4C00 MOV EDX,JSBuilde.004CAF68 ; ASCII "wangshuang"
004CAEA8 |. E8 5B9CF3FF CALL JSBuilde.00404B08
004CAEAD |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
004CAEB0 |. E8 739EF3FF CALL JSBuilde.00404D28 ; 取得字符串"wangshuang"的长度作为循环次数
004CAEB5 |. 85C0 TEST EAX,EAX
004CAEB7 |. 7E 1B JLE SHORT JSBuilde.004CAED4
004CAEB9 |. BA 01000000 MOV EDX,1
004CAEBE |> 8B4D FC /MOV ECX,DWORD PTR SS:[EBP-4]
004CAEC1 |. 0FB64C11 FF |MOVZX ECX,BYTE PTR DS:[ECX+EDX-1>
004CAEC6 |. 8D0C89 |LEA ECX,DWORD PTR DS:[ECX+ECX*4] ; ASC[i]×5
004CAEC9 |. 8D0C89 |LEA ECX,DWORD PTR DS:[ECX+ECX*4] ; ASC[i]再×5,也就是×25
004CAECC |. 03D9 |ADD EBX,ECX ; 结果加到EBX里
004CAECE |. 03DE |ADD EBX,ESI ; 机器码也加到EBX里
004CAED0 |. 42 |INC EDX
004CAED1 |. 48 |DEC EAX
004CAED2 |.^ 75 EA \JNZ SHORT JSBuilde.004CAEBE ; EBX保存循环结果,继续参与下面的计算
004CAED4 |> 8D45 FC LEA EAX,DWORD PTR SS:[EBP-4]
004CAED7 |. BA 7CAF4C00 MOV EDX,JSBuilde.004CAF7C ; ASCII "yaoyuan"
004CAEDC |. E8 279CF3FF CALL JSBuilde.00404B08
004CAEE1 |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
004CAEE4 |. E8 3F9EF3FF CALL JSBuilde.00404D28 ; 取得字符串"yaoyuan"的长度作为循环次数
004CAEE9 |. 85C0 TEST EAX,EAX
004CAEEB |. 7E 1B JLE SHORT JSBuilde.004CAF08
004CAEED |. BA 01000000 MOV EDX,1
004CAEF2 |> 8B4D FC /MOV ECX,DWORD PTR SS:[EBP-4]
004CAEF5 |. 0FB64C11 FF |MOVZX ECX,BYTE PTR DS:[ECX+EDX-1>
004CAEFA |. 8D0C89 |LEA ECX,DWORD PTR DS:[ECX+ECX*4] ; ASC[i]×5
004CAEFD |. 8D0C89 |LEA ECX,DWORD PTR DS:[ECX+ECX*4] ; ASC[i]再×5,也就是×25
004CAF00 |. 03D9 |ADD EBX,ECX ; 结果加到EBX里
004CAF02 |. 03DE |ADD EBX,ESI ; 机器码也加到EBX里
004CAF04 |. 42 |INC EDX
004CAF05 |. 48 |DEC EAX
004CAF06 |.^ 75 EA \JNZ SHORT JSBuilde.004CAEF2 ; EBX保存循环结果,继续参与下面的计算
004CAF08 |> 8D45 FC LEA EAX,DWORD PTR SS:[EBP-4]
004CAF0B |. BA 8CAF4C00 MOV EDX,JSBuilde.004CAF8C ; ASCII "JSBuilder"
004CAF10 |. E8 F39BF3FF CALL JSBuilde.00404B08
004CAF15 |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
004CAF18 |. E8 0B9EF3FF CALL JSBuilde.00404D28 ; 取得字符串"JSBuilder"的长度,准备循环
004CAF1D |. 85C0 TEST EAX,EAX
004CAF1F |. 7E 1B JLE SHORT JSBuilde.004CAF3C
004CAF21 |. BA 01000000 MOV EDX,1
004CAF26 |> 8B4D FC /MOV ECX,DWORD PTR SS:[EBP-4]
004CAF29 |. 0FB64C11 FF |MOVZX ECX,BYTE PTR DS:[ECX+EDX-1>
004CAF2E |. 8D0C89 |LEA ECX,DWORD PTR DS:[ECX+ECX*4] ; ASC[i]×5
004CAF31 |. 8D0C89 |LEA ECX,DWORD PTR DS:[ECX+ECX*4] ; ASC[i]再×5,也就是×25
004CAF34 |. 03D9 |ADD EBX,ECX ; 结果加到EBX里
004CAF36 |. 03DE |ADD EBX,ESI ; 机器码也加到EBX里
004CAF38 |. 42 |INC EDX
004CAF39 |. 48 |DEC EAX
004CAF3A |.^ 75 EA \JNZ SHORT JSBuilde.004CAF26 ; EBX保存循环结果,转化为十进制字符串就是真注册码了
004CAF3C |> 33C0 XOR EAX,EAX
004CAF3E |. 5A POP EDX
004CAF3F |. 59 POP ECX
004CAF40 |. 59 POP ECX
004CAF41 |. 64:8910 MOV DWORD PTR FS:[EAX],EDX
004CAF44 |. 68 59AF4C00 PUSH JSBuilde.004CAF59
004CAF49 |> 8D45 FC LEA EAX,DWORD PTR SS:[EBP-4]
004CAF4C |. E8 1F9BF3FF CALL JSBuilde.00404A70
004CAF51 \. C3 RETN
【注册机源码】
void CMy001Dlg::OnOK()
{
// TODO: Add extra validation here
//CDialog::OnOK();
UpdateData(true);
int i;
char cKey[50]={"wangshuangyaoyuanJSBuilder"};
m_Edit2=0xED1D9;
for(i=0;i<26;i++){
m_Edit2 += (m_Edit1+cKey[i]*25);
}
UpdateData(false);
}
----------------------------------------------------------------------------------------------
【破解心得】
两个程序的注册信息保存在注册表中,具体在那儿看程序就知道了,注册过程都不是太复杂,不同的是××网页特效制作管理精灵王 V3.75,采用字符串比较真假注册码,而××特效梦工厂 V2.0,采用整数类型比较真假注册码,文章写完时发现××特效梦工厂 V2.0已经升级到V2.3了,好在没有改变注册过程。
----------------------------------------------------------------------------------------------
【破解声明】 我是一只小菜鸟,偶得一点心得,愿与大家分享:)
【版权声明】 本文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!
----------------------------------------------------------------------------------------------
文章写于2005-6-7 23:31:11