- UID
- 2
注册时间2004-12-1
阅读权限255
最后登录1970-1-1
总坛主
TA的每日心情 | 开心 2024-12-1 11:04 |
---|
签到天数: 12 天 [LV.3]偶尔看看II
|
发表于 2006-7-6 10:08:04
|
显示全部楼层
原帖由 黑夜彩虹 于 2006-7-6 00:41 发表
第一次用E语言写程序,感谢猫兄、枫影,及PYG的帮助~~~
都玩起E了,发扬国光啊!
大概就是这样吧:
- 00403879 push ebp //注册入口
- 0040387A mov ebp,esp
- 0040387C sub esp,1C
- 00403882 mov dword ptr ss:[ebp-4],0
- 00403889 mov dword ptr ss:[ebp-8],0
- 00403890 mov dword ptr ss:[ebp-C],0
- 00403897 mov dword ptr ss:[ebp-10],0
- 0040389E push -1
- .
- .
- .
- .
- .
- 004038ED call KeyGenMe.00403ADE ; 取用户名长度返回到eax(1个汉字占2个字节)
- 004038F2 add esp,10
- 004038F5 mov dword ptr ss:[ebp-8],eax ; eax=8
- 004038F8 push dword ptr ss:[ebp-8]
- 004038FB lea eax,dword ptr ss:[ebp-C]
- 004038FE mov ebx,eax
- 00403900 mov ecx,1 ; 赋初始值:ecx=1
- 00403905 pop edx
- 00403906 push edx
- 00403907 push ecx
- 00403908 push ebx
- 00403909 mov dword ptr ds:[ebx],ecx
- 0040390B cmp ecx,edx ; ecx和eax(用户名长度)比较
- 0040390D jg KeyGenMe.004039A7 ; 大于用户名长度则跳出循环
- 00403913 push 80000301
- 00403918 push 0
- 0040391A push dword ptr ss:[ebp-C]
- 0040391D push 80000004
- 00403922 push 0
- 00403924 mov eax,dword ptr ss:[ebp-4]
- 00403927 test eax,eax
- 00403929 jnz short KeyGenMe.00403930
- 0040392B mov eax,KeyGenMe.004030CB
- 00403930 push eax
- 00403931 push 2
- 00403936 mov ebx,144
- 0040393B call KeyGenMe.00403ADE ; 取ascii
- 00403940 add esp,1C
- 00403943 push 80000301
- 00403948 push 0
- 0040394A push eax
- 0040394B push 1
- 00403950 mov ebx,1D4
- 00403955 call KeyGenMe.00403ADE ; 转换成16进制字符串
- 0040395A add esp,10
- 0040395D mov dword ptr ss:[ebp-18],eax
- 00403960 push dword ptr ss:[ebp-18]
- 00403963 push dword ptr ss:[ebp-10]
- 00403966 mov ecx,2
- 0040396B call KeyGenMe.00403780
- 00403970 add esp,8
- 00403973 mov dword ptr ss:[ebp-1C],eax
- 00403976 mov ebx,dword ptr ss:[ebp-18]
- 00403979 test ebx,ebx
- 0040397B je short KeyGenMe.00403986
- 0040397D push ebx
- 0040397E call KeyGenMe.00403AD8
- 00403983 add esp,4
- 00403986 mov eax,dword ptr ss:[ebp-1C]
- 00403989 push eax
- 0040398A mov ebx,dword ptr ss:[ebp-10]
- 0040398D test ebx,ebx
- 0040398F je short KeyGenMe.0040399A
- 00403991 push ebx
- 00403992 call KeyGenMe.00403AD8
- 00403997 add esp,4
- 0040399A pop eax
- 0040399B mov dword ptr ss:[ebp-10],eax
- 0040399E pop ebx
- 0040399F pop ecx
- 004039A0 pop edx
- 004039A1 inc ecx
- 004039A2 jmp KeyGenMe.00403906 ; 循环
- 004039A7 add esp,0C ; OK!出来了,右边寄存器中EAX就是注册码!
复制代码
- .版本 2
- .子程序 __启动窗口_创建完毕
- .局部变量 Name, 文本型, , , 用户名
- .局部变量 LenName, 整数型, , , 用户名长度
- .局部变量 i, 整数型, , , 循环计数
- .局部变量 Sn, 文本型, , , 注册码
- _启动窗口.标题 = “KeyGen For 黑夜彩虹 KeyGenMe V1.0”
- Name = “黑夜彩虹”
- Sn = “”
- LenName = 取文本长度 (Name)
- .计次循环首 (LenName, i)
- Sn = Sn + 取十六进制文本 (取代码 (Name, i))
- .计次循环尾 ()
- 编辑框1.内容 = Sn
复制代码 |
|