能力值:
( LV2,RANK:10 )
2 楼
感谢分享 收藏学习
能力值:
( LV2,RANK:10 )
3 楼
学习一下,还不会这些呢
能力值:
( LV6,RANK:90 )
4 楼
VB、VC、C、Delphi等写一个也是非常容易的事。
能力值:
( LV2,RANK:10 )
5 楼
谢谢分享
能力值:
( LV2,RANK:10 )
6 楼
谢谢分享,呵呵!
能力值:
( LV2,RANK:10 )
7 楼
长见识,学习了
能力值:
( LV2,RANK:10 )
8 楼
谢谢班主,以后可以方便的向大家学习和交流了!
能力值:
( LV2,RANK:10 )
9 楼
谢谢分享,看一下
能力值:
( LV2,RANK:10 )
10 楼
囧 我也做好了准备发帖 结果楼主先发了 那我把我的C代码发出来好了
char z[10];
int a,b,c = 0;
scanf("%s",z);
for(int i = 0;z[i];i++){
a = z[i];
b = a;
a <<= 4;
b >>= 5;
a ^= b;
a += 0x26;
a ^= c;
c += a;
}
a = 0x0C0DEF;
a -= c;
a *= a;
printf("CM2-%x-%x\n",c,a);
谢谢13L指出错误 因为是直接十六进制输出 所以请把小写转换成大写哦 亲=w= 我这人懒。。。懒得转换成ASCII码了。。
能力值:
( LV2,RANK:10 )
11 楼
我想请教一下,我现在发现注册机有问题,就是有些注册名出的注册码就不对了,能帮我看看是啥问题么?
比方说用户名是 ilove就不行 iknow也不行,iwant就行,还有2位的貌似都不行,求解。。
能力值:
( LV2,RANK:10 )
12 楼
[QUOTE=夏式;1047200]囧 我也做好了准备发帖 结果楼主先发了 那我把我的C代码发出来好了
char z[10];
int a,b,c = 0;
scanf("%s",z);
for(int i = 0;z[i];i++){
a = z[i];
...[/QUOTE]
谢谢你了,贴出来大家一起分享吧。我想说你也抢先我一步写了纯c代码,我正准备一俩天之内把这个给大家补上呢。
能力值:
( LV2,RANK:10 )
13 楼
找到原因了原来是多了一个0,
iknow 对应 CM2-0819-8C320EE4;第二部分的0是多余的,正确的是CM2-819-8C320EE4
ilove 对应 CM2-0979-6B23E664;正确的是CM2-979-6B23E664
iwant 对应 CM2-3769-23484E24;没问题
刚才试了一下10楼的代码,用户名生成的注册码也有问题。字母应该是大写的而不是小写的。
能力值:
( LV2,RANK:10 )
14 楼
问题都解决了,现在再贴个源码,真正的无bug注册机:谢谢“ T二十天²º¹² ”大哥给我的提示
void CKeyGenDlg::OnBnClickedButton1()
{
char name[]={0};//="ilovecwq"
LPSTR user=new char[32];
TCHAR cCode[100]={0};
int x1,x2;
::GetDlgItemText(AfxGetMainWnd()->m_hWnd,IDC_EDIT1,user,32);
wsprintf(name, "%s", user);
__asm
{
xor edx,edx //新加语句
lea esi,name
xor ecx,ecx
L001:
movsx eax,byte ptr ds:[esi]
mov ebx,eax
sub esi,edx//新加语句
shl eax,04h
shr ebx,05h
xor eax,ebx
add eax,026h
xor eax,ecx
add ecx,eax
inc esi
cmp byte ptr ds:[esi],00h
jnz L001
mov eax,00C0DEFh
sub eax,ecx
imul eax,eax
mov x1,ecx
mov x2,eax
}
wsprintf(cCode,TEXT("CM2-%X-%.4X"),x1,x2); //把第一个%.4X改成%X
::SetDlgItemText(AfxGetMainWnd()->m_hWnd,IDC_EDIT2,cCode);
}
一共修个了3处,谢谢所有帮助我的人,继续努力学汇编啦!