首页
社区
课程
招聘
小弟用keymake1.73做注册机可是出错,不知道怎么办
发表于: 2005-12-28 03:53 3772

小弟用keymake1.73做注册机可是出错,不知道怎么办

2005-12-28 03:53
3772
小弟用keymake1.73做注册机算法很简单,就是序列号和75c951b0异或后再减7b可怎么也不行,这是我写的注册机:
数据区:a3 db "%1X",0
        a4 db 60 dup (0)

代码区:
OV ECX,EAX
XOR EBX,EBX
n1:   
MOVZX EAX,BYTE PTR [ECX]   
OR AL,AL   
JZ n3   
CMP AL,3Ah   
JC n2   
SUB AL,7   
n2:   
SUB AL,30h   
SHL EBX,4   
ADD EBX,EAX
INC ECX
JMP n1   
n3:
PUSH EBX
xor ebx,75c951b0h
sub ebx,7bh
mov eax,ebx
PUSH EAX   
LEA  EAX,a3
PUSH EAX   
LEA  EAX,a4   
PUSH EAX   
CALL wsprintfA   
LEA EAX,a4
编译出来的不能算出真的码,如序列号为242030864,真码应为:2074363941
总是出不来,请老大们帮帮忙,我先谢谢了!!

[培训]科锐软件逆向54期预科班、正式班开始火爆招生报名啦!!!

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 223
活跃值: (70)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
2
用od调试下,或者自己直接用汇编写不更好
2005-12-28 09:28
0
雪    币: 2384
活跃值: (771)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
3
;主要是你下面几句有问题(你下面的代码是抄自KeyMake帮助文件中的吧,该代码有BUG,就是当需要转换的十进制位数超过8位就会造成转换错误)。
;还有就是你需要转换的格式也错了"%1X"是将数值转成十六进制,而你的注册码是以十进制数值显示的。
MOV ECX,EAX
XOR EBX,EBX
n1:   
MOVZX EAX,BYTE PTR [ECX]   
OR AL,AL   
JZ n3   
CMP AL,3Ah   
JC n2   
SUB AL,7   
n2:   
SUB AL,30h   
SHL EBX,4   
ADD EBX,EAX
INC ECX
JMP n1   
n3:

;上面的代码其实可以更简单点:
;数据区:
lpStrBuff db 50 dup(0)
lpStrFormat db "%u",0
;代码区
invoke atodw,eax
xor eax,75c951b0h
sub eax,7bh
invoke wsprintf,offset lpStrBuff,offset lpStrFormat,eax
lea eax,lpStrBuff
2005-12-28 11:09
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
谢谢老大,的确可行,就是:
数据区中的
lpStrBuff db 50 dup(0)
lpStrFormat db "%u",0
代码区中的
invoke wsprintf,offset lpStrBuff,offset lpStrFormat,eax
lea eax,lpStrBuff
有的lpStrBuff和lpStrFormat能不能用别的参数变换如:a1,a2
2005-12-28 12:46
0
雪    币: 2384
活跃值: (771)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
5
可以。只需符合变量的命名方式即可。
2005-12-28 14:17
0
游客
登录 | 注册 方可回帖
返回