:00402B1A 83F87A cmp eax, 0000007A :00402B1D 7E11 jle 00402B30 <----如果是小写字母,则返回
* Referenced by a (U)nconditional or (C)onditional Jump at Address: :00402B18(C)
:00402B1F 83F831 cmp eax, 00000031 :00402B22 7C05 jl 00402B29 :00402B24 83F839 cmp eax, 00000039 :00402B27 7E07 jle 00402B30 <----如果是数学,则返回
* Referenced by a (U)nconditional or (C)onditional Jump at Address: :00402B22(C)
:00402B29 83F00E xor eax, 0000000E :00402B2C 0C31 or al, 31 :00402B2E EBB4 jmp 00402AE4 <----再继续处理.
* Referenced by a (U)nconditional or (C)onditional Jump at Addresses: :00402B1D(C), :00402B27(C)
:00402B30 C3 ret --------------------------------------------------------------- --------------------------------------------------------------- ---------------------------------------------------------------
注册算法 1.将用户名转化为DWORD值; 2.将DWORD值的4个字节依次转化为字符形式,得到第一组注册码 3.再进行3次变化,依次得到后面3组注册码.
-----------------VC++ 6.0 通过------------------ void CHero3000Dlg::OnOK() { char name[512]; unsigned char code1[5]; unsigned char code2[5]; unsigned char code3[5]; unsigned char code4[5]; int namelen; long reg1,reg2,reg3,reg4,temp; int i,n; this->UpdateData(); memset(name,0,512); namelen = this->m_name.GetLength(); strcpy(name,this->m_name); for(i=0;i<namelen;i++) { name[i] = change(i,name[i]); } i = (namelen / 4); if((namelen % 4)>0) i++; reg1 = 0; for(n=0;n<i;n++) { memcpy(&temp,&name[n*4],4); reg1 += temp; _asm mov eax,reg1; _asm mov ecx,n; _asm ror eax,cl; _asm mov reg1,eax; }
memcpy(code1,®1,4); for(i=0;i<4;i++)
上一篇:法律文书、合同样本库 5.10破解手记--算法分析
下一篇:黑马多媒体电子教室精简版简单算法分析
|