上次发的注册机有个不足就是生成的注册码过长了,看着别扭,那么我再给个好看点的,
注册码与用户名等长度,而且代码超级简单:-)
(当然,有可能生成注册码中出现不可打印字符情况,此时无效,那就换个用户 ...
hoho~好有特色的注册码嘛~
特向兄弟请教,为什么你的易语言算法注册机才8K呀~比源码还要小的说~
+++++++++++++++++++算法分析先别放~ 原帖由 野猫III 于 2006-7-7 11:18 发表
hoho~好有特色的注册码嘛~
特向兄弟请教,为什么你的易语言算法注册机才8K呀~比源码还要小的说~
+++++++++++++++++++算法分析先别放~
编译时不要选独立编译,500多k的支持库krnln.fnr就不会捆绑到一起了.
其实算法已经十分明显了 原帖由 快雪时晴 于 2006-7-7 13:01 发表
编译时不要选独立编译,500多k的支持库krnln.fnr就不会捆绑到一起了.
其实算法已经十分明显了
不知道编出来的算法注册机通用不。。。 原帖由 野猫III 于 2006-7-8 01:34 发表
不知道编出来的算法注册机通用不。。。
IF(是指XP?win2k?98?me?的通用性吗?)
这由易语言平台决定,应该通用吧
ELSEIF(You mean 注册机是否会算错)
第一个完全通用,不管你输入啥用户名,中文或ASCII;
第二个由于没有对不可见字符情况进行额外处理(为了保持算法的简单明了),因此如果你看到生成的注册码有空格或者?就把用户名调整一下吧
ELSE
问题再表述一下
ENDIF 对啦,高手讨论问题菜鸟大有收获,如果在群里高手都这样讨论就好了 0040D5AC 55 push ebp
0040D5AD 8BEC mov ebp,esp
0040D5AF 81EC 48000000 sub esp,48
0040D5B5 C745 FC 00000000 mov dword ptr ss:,0 ; 代码和
0040D5BC C745 F8 00000000 mov dword ptr ss:,0 ; 循环变量
0040D5C3 C745 F4 00000000 mov dword ptr ss:,0 ; 用户名
0040D5CA C745 F0 00000000 mov dword ptr ss:,0 ; 序列号
0040D5D1 C745 EC 00000000 mov dword ptr ss:,0 ; 用户名长度
0040D5D8 C745 E8 00000000 mov dword ptr ss:,0 ; 序列号长度
0040D5DF C745 E4 00000000 mov dword ptr ss:,0
0040D5E6 C745 E0 00000000 mov dword ptr ss:,0
0040D5ED C745 FC 00000000 mov dword ptr ss:,0
0040D5F4 C745 F8 01000000 mov dword ptr ss:,1
0040D5FB 6A FF push -1
0040D5FD <>6A 08 push 8 ; 内容(“编辑框1”的属性)
0040D5FF <>68 0F000116 push 1601000F ; 编辑框1(编辑框)
0040D604 <>68 01000152 push 52010001 ; 窗体单元1(父窗体)
0040D609 <>E8 A0030000 call 复件_原?0040D9AE ; 取窗体对象属性(调用4号服务)
0040D60E 83C4 10 add esp,10
0040D611 8945 DC mov dword ptr ss:,eax
0040D614 8B45 DC mov eax,dword ptr ss:
0040D617 50 push eax
0040D618 8B5D F4 mov ebx,dword ptr ss:
0040D61B 85DB test ebx,ebx
0040D61D 74 09 je short 复件_原?0040D628
0040D61F 53 push ebx
0040D620 <>E8 7D030000 call 复件_原?0040D9A2 ; 销毁从堆上分配到的内存(调用8号服务)
0040D625 83C4 04 add esp,4
0040D628 58 pop eax
0040D629 8945 F4 mov dword ptr ss:,eax
0040D62C 6A FF push -1
0040D62E <>6A 08 push 8 ; 内容(“编辑框2”的属性)
0040D630 <>68 0E000116 push 1601000E ; 编辑框2(编辑框)
0040D635 <>68 01000152 push 52010001 ; 窗体单元1(父窗体)
0040D63A <>E8 6F030000 call 复件_原?0040D9AE ; 取窗体对象属性(调用4号服务)
0040D63F 83C4 10 add esp,10
0040D642 8945 DC mov dword ptr ss:,eax
0040D645 8B45 DC mov eax,dword ptr ss:
0040D648 50 push eax
0040D649 8B5D F0 mov ebx,dword ptr ss:
0040D64C 85DB test ebx,ebx
0040D64E 74 09 je short 复件_原?0040D659
0040D650 53 push ebx
0040D651 <>E8 4C030000 call 复件_原?0040D9A2 ; 销毁从堆上分配到的内存(调用8号服务)
0040D656 83C4 04 add esp,4
0040D659 58 pop eax
0040D65A 8945 F0 mov dword ptr ss:,eax
0040D65D <>68 04000080 push 80000004 ; 文本型(基本数据类型)
0040D662 6A 00 push 0
0040D664 8B45 F4 mov eax,dword ptr ss:
0040D667 85C0 test eax,eax
0040D669 75 05 jnz short 复件_原?0040D670
0040D66B <>B8 CB304000 mov eax,复件_原?004030CB ; (常量)
0040D670 50 push eax
0040D671 68 01000000 push 1
0040D676 <>BB 30010000 mov ebx,130 ; 取文本长度(系统核心支持库)
0040D67B <>E8 28030000 call 复件_原?0040D9A8 ; 调用核心支持库命令(调用3号服务)
0040D680 83C4 10 add esp,10
0040D683 8945 EC mov dword ptr ss:,eax
0040D686 <>68 04000080 push 80000004 ; 文本型(基本数据类型)
0040D68B 6A 00 push 0
0040D68D 8B45 F0 mov eax,dword ptr ss:
0040D690 85C0 test eax,eax
0040D692 75 05 jnz short 复件_原?0040D699
0040D694 <>B8 CB304000 mov eax,复件_原?004030CB ; (常量)
0040D699 50 push eax
0040D69A 68 01000000 push 1
0040D69F <>BB 30010000 mov ebx,130 ; 取文本长度(系统核心支持库)
0040D6A4 <>E8 FF020000 call 复件_原?0040D9A8 ; 调用核心支持库命令(调用3号服务)
0040D6A9 83C4 10 add esp,10
0040D6AC 8945 E8 mov dword ptr ss:,eax
0040D6AF 6A FF push -1
0040D6B1 <>6A 08 push 8 ; 内容(“编辑框1”的属性)
0040D6B3 <>68 0F000116 push 1601000F ; 编辑框1(编辑框)
0040D6B8 <>68 01000152 push 52010001 ; 窗体单元1(父窗体)
0040D6BD <>E8 EC020000 call 复件_原?0040D9AE ; 取窗体对象属性(调用4号服务)
0040D6C2 83C4 10 add esp,10
0040D6C5 8945 DC mov dword ptr ss:,eax
0040D6C8 <>68 CB304000 push 复件_原?004030CB ; (常量)
0040D6CD FF75 DC push dword ptr ss:
0040D6D0 E8 3AFEFFFF call 复件_原?0040D50F ; 是否为空
0040D6D5 83C4 08 add esp,8
0040D6D8 83F8 00 cmp eax,0
0040D6DB B8 00000000 mov eax,0
0040D6E0 0F95C0 setne al
0040D6E3 8945 D8 mov dword ptr ss:,eax
0040D6E6 8B5D DC mov ebx,dword ptr ss:
0040D6E9 85DB test ebx,ebx
0040D6EB 74 09 je short 复件_原?0040D6F6
0040D6ED 53 push ebx
0040D6EE <>E8 AF020000 call 复件_原?0040D9A2 ; 销毁从堆上分配到的内存(调用8号服务)
0040D6F3 83C4 04 add esp,4
0040D6F6 837D D8 00 cmp dword ptr ss:,0
0040D6FA 0F84 58000000 je 复件_原?0040D758 ; 跳死
0040D700 6A FF push -1
0040D702 <>6A 08 push 8 ; 内容(“编辑框2”的属性)
0040D704 <>68 0E000116 push 1601000E ; 编辑框2(编辑框)
0040D709 <>68 01000152 push 52010001 ; 窗体单元1(父窗体)
0040D70E <>E8 9B020000 call 复件_原?0040D9AE ; 取窗体对象属性(调用4号服务)
0040D713 83C4 10 add esp,10
0040D716 8945 D4 mov dword ptr ss:,eax
0040D719 <>68 CB304000 push 复件_原?004030CB ; (常量)
0040D71E FF75 D4 push dword ptr ss:
0040D721 E8 E9FDFFFF call 复件_原?0040D50F
0040D726 83C4 08 add esp,8
0040D729 83F8 00 cmp eax,0
0040D72C B8 00000000 mov eax,0
0040D731 0F95C0 setne al
0040D734 8945 D0 mov dword ptr ss:,eax
0040D737 8B5D D4 mov ebx,dword ptr ss:
0040D73A 85DB test ebx,ebx
0040D73C 74 09 je short 复件_原?0040D747
0040D73E 53 push ebx
0040D73F <>E8 5E020000 call 复件_原?0040D9A2 ; 销毁从堆上分配到的内存(调用8号服务)
0040D744 83C4 04 add esp,4
0040D747 837D D0 00 cmp dword ptr ss:,0
0040D74B 0F84 07000000 je 复件_原?0040D758 ; 序列号为空就死
0040D751 B8 01000000 mov eax,1
0040D756 EB 02 jmp short 复件_原?0040D75A
0040D758 33C0 xor eax,eax
0040D75A 85C0 test eax,eax
0040D75C 0F84 78010000 je 复件_原?0040D8DA
0040D762 8B45 EC mov eax,dword ptr ss:
0040D765 33C9 xor ecx,ecx
0040D767 50 push eax
0040D768 8D45 F8 lea eax,dword ptr ss:
0040D76B 8BD8 mov ebx,eax
0040D76D 58 pop eax
0040D76E 41 inc ecx
0040D76F 51 push ecx ; 记次循环
0040D770 53 push ebx
0040D771 890B mov dword ptr ds:,ecx
0040D773 50 push eax
0040D774 3BC8 cmp ecx,eax
0040D776 0F8F 63000000 jg 复件_原?0040D7DF
0040D77C <>68 01030080 push 80000301 ; 整数型(基本数据类型)
0040D781 6A 00 push 0
0040D783 FF75 F8 push dword ptr ss:
0040D786 <>68 04000080 push 80000004 ; 文本型(基本数据类型)
0040D78B 6A 00 push 0
0040D78D 8B45 F4 mov eax,dword ptr ss:
0040D790 85C0 test eax,eax
0040D792 75 05 jnz short 复件_原?0040D799
0040D794 <>B8 CB304000 mov eax,复件_原?004030CB ; (常量)
0040D799 50 push eax
0040D79A 68 02000000 push 2
0040D79F <>BB 44010000 mov ebx,144 ; 取代码(系统核心支持库)
0040D7A4 <>E8 FF010000 call 复件_原?0040D9A8 ; 调用核心支持库命令(调用3号服务)
0040D7A9 83C4 1C add esp,1C
0040D7AC 8845 E4 mov byte ptr ss:,al
0040D7AF DB45 FC fild dword ptr ss:
0040D7B2 DD5D D8 fstp qword ptr ss:
0040D7B5 DD45 D8 fld qword ptr ss:
0040D7B8 8B45 E4 mov eax,dword ptr ss:
0040D7BB 25 FF000000 and eax,0FF
0040D7C0 8945 D0 mov dword ptr ss:,eax
0040D7C3 DB45 D0 fild dword ptr ss:
0040D7C6 DD5D D0 fstp qword ptr ss:
0040D7C9 DC45 D0 fadd qword ptr ss:
0040D7CC DD5D C8 fstp qword ptr ss:
0040D7CF DD45 C8 fld qword ptr ss:
0040D7D2 E8 FAFBFFFF call 复件_原?0040D3D1
0040D7D7 8945 FC mov dword ptr ss:,eax
0040D7DA 58 pop eax
0040D7DB 5B pop ebx
0040D7DC 59 pop ecx
0040D7DD ^ EB 8F jmp short 复件_原?0040D76E
0040D7DF 83C4 0C add esp,0C
0040D7E2 C745 F8 01000000 mov dword ptr ss:,1
0040D7E9 DB45 EC fild dword ptr ss:
0040D7EC DD5D D8 fstp qword ptr ss:
0040D7EF DD45 D8 fld qword ptr ss:
0040D7F2 DB45 EC fild dword ptr ss:
0040D7F5 DD5D D0 fstp qword ptr ss:
0040D7F8 DC4D D0 fmul qword ptr ss:
0040D7FB DD5D C8 fstp qword ptr ss:
0040D7FE DB45 FC fild dword ptr ss:
0040D801 DD5D C0 fstp qword ptr ss:
0040D804 DD45 C0 fld qword ptr ss:
0040D807 DC45 C8 fadd qword ptr ss:
0040D80A DD5D B8 fstp qword ptr ss:
0040D80D DD45 B8 fld qword ptr ss:
0040D810 E8 BCFBFFFF call 复件_原?0040D3D1 ; 长度*长度 加上综合
0040D815 8945 FC mov dword ptr ss:,eax
0040D818 8B45 E8 mov eax,dword ptr ss: ; 序列号长度
0040D81B 33C9 xor ecx,ecx
0040D81D 50 push eax
0040D81E 8D45 F8 lea eax,dword ptr ss:
0040D821 8BD8 mov ebx,eax
0040D823 58 pop eax
0040D824 41 inc ecx
0040D825 51 push ecx
0040D826 53 push ebx
0040D827 890B mov dword ptr ds:,ecx
0040D829 50 push eax
0040D82A 3BC8 cmp ecx,eax
0040D82C 0F8F 63000000 jg 复件_原?0040D895
0040D832 <>68 01030080 push 80000301 ; 整数型(基本数据类型)
0040D837 6A 00 push 0
0040D839 FF75 F8 push dword ptr ss:
0040D83C <>68 04000080 push 80000004 ; 文本型(基本数据类型)
0040D841 6A 00 push 0
0040D843 8B45 F0 mov eax,dword ptr ss:
0040D846 85C0 test eax,eax
0040D848 75 05 jnz short 复件_原?0040D84F
0040D84A <>B8 CB304000 mov eax,复件_原?004030CB ; (常量)
0040D84F 50 push eax
0040D850 68 02000000 push 2
0040D855 <>BB 44010000 mov ebx,144 ; 取代码(系统核心支持库)
0040D85A <>E8 49010000 call 复件_原?0040D9A8 ; 调用核心支持库命令(调用3号服务)
0040D85F 83C4 1C add esp,1C
0040D862 8845 E4 mov byte ptr ss:,al
0040D865 DB45 E0 fild dword ptr ss:
0040D868 DD5D D8 fstp qword ptr ss:
0040D86B DD45 D8 fld qword ptr ss:
0040D86E 8B45 E4 mov eax,dword ptr ss:
0040D871 25 FF000000 and eax,0FF
0040D876 8945 D0 mov dword ptr ss:,eax
0040D879 DB45 D0 fild dword ptr ss:
0040D87C DD5D D0 fstp qword ptr ss:
0040D87F DC45 D0 fadd qword ptr ss:
0040D882 DD5D C8 fstp qword ptr ss:
0040D885 DD45 C8 fld qword ptr ss:
0040D888 E8 44FBFFFF call 复件_原?0040D3D1
0040D88D 8945 E0 mov dword ptr ss:,eax
0040D890 58 pop eax
0040D891 5B pop ebx
0040D892 59 pop ecx
0040D893 ^ EB 8F jmp short 复件_原?0040D824
0040D895 83C4 0C add esp,0C
0040D898 8B45 FC mov eax,dword ptr ss:
0040D89B 3945 E0 cmp dword ptr ss:,eax
0040D89E 0F85 36000000 jnz 复件_原?0040D8DA
0040D8A4 <>68 04000080 push 80000004 ; 文本型(基本数据类型)
0040D8A9 6A 00 push 0
0040D8AB <>68 D4304000 push 复件_原?004030D4 ; Good Job(常量)
0040D8B0 <>68 01030080 push 80000301 ; 整数型(基本数据类型)
0040D8B5 6A 00 push 0
0040D8B7 68 40000000 push 40
0040D8BC <>68 04000080 push 80000004 ; 文本型(基本数据类型)
0040D8C1 6A 00 push 0
0040D8C3 <>68 DD304000 push 复件_原?004030DD ; Congratulations!(常量)
0040D8C8 68 03000000 push 3
0040D8CD <>BB 00030000 mov ebx,300 ; 信息框(系统核心支持库)
0040D8D2 <>E8 D1000000 call 复件_原?0040D9A8 ; 调用核心支持库命令(调用3号服务)
0040D8D7 83C4 28 add esp,28
0040D8DA 8B5D F4 mov ebx,dword ptr ss:
0040D8DD 85DB test ebx,ebx
0040D8DF 74 09 je short 复件_原?0040D8EA
0040D8E1 53 push ebx
0040D8E2 <>E8 BB000000 call 复件_原?0040D9A2 ; 销毁从堆上分配到的内存(调用8号服务)
0040D8E7 83C4 04 add esp,4
0040D8EA 8B5D F0 mov ebx,dword ptr ss:
0040D8ED 85DB test ebx,ebx
0040D8EF 74 09 je short 复件_原?0040D8FA
0040D8F1 53 push ebx
0040D8F2 <>E8 AB000000 call 复件_原?0040D9A2 ; 销毁从堆上分配到的内存(调用8号服务)
0040D8F7 83C4 04 add esp,4
0040D8FA 8BE5 mov esp,ebp
0040D8FC 5D pop ebp
0040D8FD C3 retn
注册机
void keygen1()
{
char str={0};
puts("请输入用户名");
gets(str);
int len;
len=strlen(str);
str=len*len;
printf("注册码为%s ",str);
}
[ 本帖最后由 cby1990 于 2006-7-11 00:47 编辑 ] 原帖由 cby1990 于 2006-7-11 00:46 发表
0040D5AC 55 push ebp
0040D5AD 8BEC mov ebp,esp
0040D5AF 81EC 48000000 sub esp,48
0040D5B5 C745 FC 00000000 mov dword ptr ss:,0 ...
学习,不知注册机对中文支持如何? 注册机
void keygen1()
{
char str={0};
puts("请输入用户名");
gets(str);
int len;
len=strlen(str);
str=len*len;
printf("注册码为%s ",str);
}
+++++++++++++++
呵呵,C++这么简单?回头也学习玩玩~ 支持老大作品/:good
页:
1
[2]