野猫III 发表于 2006-7-1 01:19:39

请问这个E KeyGen为什么不支持中文?

算法是这的:
https://www.chinapyg.com/viewthread.php?tid=5717&extra=page%3D1

+++++++++++
逐位取用户名的16进制值的2次方
加上
用户名16进制算术右移1位取值(可以理解为它除以2的商的整数)
减去
逐位取用户名的16进制值

最后累加的16进制值转换成10进制就是注册码.+++++++++++
KeyGen源码:

.版本 2

.程序集 窗口程序集1

.子程序 _按钮1_被单击
.局部变量 user, 文本型
.局部变量 code, 整数型
.局部变量 i, 整数型
.局部变量 变量, 整数型

user = 编辑框1.内容
i = 取文本长度 (user)
.如果 (i ≥ 1)
    .计次循环首 (i, 变量)
      code = code + 取代码 (user, 变量) × 取代码 (user, 变量)
      code = code + 右移 (取代码 (user, 变量), 1) - 取代码 (user, 变量)
      编辑框2.内容 = 到文本 (code)
    .计次循环尾 ()
.否则
    否则 ()
    信息框 (“用户名忘了填吧!”, 0, “温馨提示”)

.如果结束


.子程序 否则



.子程序 __启动窗口_创建完毕

标题 = “KeyGen FoR Key-Crackme2”

用了英文和数字作为用户名注册成功。但中文就不行。希望能解惑!谢谢!


https://www.chinapyg.com/attachments/SpxImage_Rn5QYWZkESQa.gif

[ 本帖最后由 野猫III 于 2006-7-1 01:22 编辑 ]

快雪时晴 发表于 2006-7-1 10:19:35

第一次用E语言,的确很方便,帮助信息很多

我用OD 做的笔记:

00401309    8B15 38304000   mov   edx,

00403038CE D2 B5 C4 C3 A8 D1 BD我的猫呀
00403040A3 A1 00 00 00 00 00 00!......

00401309    8>mov   edx,
0040130F    8>mov   dl,
00401315    8>and   edx, 0FF
0040131B    8>mov   ebx, edx
0040131D    0>imul    ebx, edx
00401320    0>add   esi, ebx
00401322    8>mov   ebx, edx
00401324    D>sar   ebx, 1
00401326    0>add   esi, ebx
00401328    2>sub   esi, edx            ; CODE1=CODE1 + N*N + N>>1 - N
0040132A    4>inc   eax
0040132B    4>dec   ecx               ; ECX初始为注册名字节长度,中文的话 乘以2
0040132C^ 7>jnz   short 00401309
0040132E    5>push    esi               ; "我的猫呀!"===〉ESI=00056A60
0040132F    6>push    00403138            ; ASCII "354912"
00401334    E>call    00401383            ; 取得输入注册码(十进制)的十六进制数,1111.==〉457
00401339    5>pop   esi
0040133A    3>cmp   eax, esi            ; 比较,真正注册码应该为 00056A60===〉354912(十进制)
0040133C    7>jnz   short 00401353
0040133E    6>push    0
00401340    6>push    00403462            ; ASCII "Key/CrackMe #2   "
00401345    6>push    004034B8            ; ASCII " Good Job, I Wish You the Very Best"
0040134A    6>push    0
0040134C    E>call    004013EE            ; jmp 到 USER32.MessageBoxA




易语言代码

.程序集 窗口程序集1

.子程序 _按钮1_被单击
.局部变量 SUM, 整数型
.局部变量 LEN, 整数型
.局部变量 N, 字节型
.局部变量 NAME, 文本型
.局部变量 N2, 字节型
.局部变量 i, 整数型
.局部变量 CODE1, 整数型


LEN = 取文本长度 (编辑框1.内容)
NAME = 编辑框1.内容
SUM = 0
.变量循环首 (1, LEN, 1, i)
    N = 取代码 (NAME, i)
    N2 = N
    SUM = SUM + N × N - N + 右移 (N2, 1)
.变量循环尾 ()
编辑框2.内容 = 到文本 (SUM)




[ 本帖最后由 快雪时晴 于 2006-7-1 10:22 编辑 ]

快雪时晴 发表于 2006-7-1 10:38:49

另外问一下,Where i can download e语言最新破解版本?

发现用这挺方便,犹如VB

野猫III 发表于 2006-7-1 12:32:03

原帖由 快雪时晴 于 2006-7-1 10:38 发表
另外问一下,Where i can download e语言最新破解版本?

发现用这挺方便,犹如VB

呵呵~~~在咱们PYG就有。4.03版。

好像小鱼破解的~~~

飘云 发表于 2006-7-1 13:55:52

原帖由 野猫III 于 2006-7-1 01:19 发表
用了英文和数字作为用户名注册成功。但中文就不行。希望能解惑!谢谢!

用 byte型 变量


.版本 2

.子程序 _按钮1_被单击
.局部变量 user, 文本型
.局部变量 code, 整数型
.局部变量 i, 整数型
.局部变量 c, 字节型
.局部变量 变量, 整数型

user = 编辑框1.内容
i = 取文本长度 (user)
.如果 (i ≥ 1)
    .计次循环首 (i, 变量)
      c = 取代码 (user, 变量)
      code = code + c × c
      code = code + 右移 (c, 1) - c
      编辑框2.内容 = 到文本 (code)
    .计次循环尾 ()
.否则
    否则 ()
    信息框 (“用户名忘了填吧!”, 0, “温馨提示”)
.如果结束

野猫III 发表于 2006-7-1 18:16:18

原帖由 飘云 于 2006-7-1 13:55 发表


用 byte型 变量



噢~~~That's it!

原帖由 快雪时晴 于 2006-7-1 10:19 发表
00403038CE D2 B5 C4 C3 A8 D1 BD我的猫呀
00403040A3 A1 00 00 00 00 00 00!...... ...

Just Make it simple~~~

++++++++++++++++++

Private Sub Command1_Click()
usr = Text1.Text
lenn = Len(usr)
If lenn >= 1 Then
   For i = 1 To lenn
   a = Asc(Mid(usr, i, 1))
   b = a * a
   C = C + b + a \ 2 - a
   Next i
Text2.Text = C
Else
   MsgBox "请输入用户名!", 0, "温馨提示"
End If
End Sub

[ 本帖最后由 野猫III 于 2006-7-21 16:16 编辑 ]
页: [1]
查看完整版本: 请问这个E KeyGen为什么不支持中文?