分类分类
关注+2004-10-15作者:蓝点
为了节省篇幅,直接从注册算法代码处开始。前面的破解过程省略。
0040FD13 |. 8D7C34 17 LEA EDI,DWORD PTR SS:[ESP+ESI+17]
0040FD17 |> 8B8424 F000000>/MOV EAX,DWORD PTR SS:[ESP+F0]===>将用户名移入EAX,开始用用户名计算注册码。用户名字符序号从0开始依次递增。
0040FD1E |. BD 07000000 |MOV EBP,7===>将7移入EBP。
0040FD23 |. 8A1C01 |MOV BL,BYTE PTR DS:[ECX+EAX]===>将用户名第一个字符的十六进制值移入BL。
0040FD26 |. 8BC1 |MOV EAX,ECX===>EAX=ECX,ECX的初始值为0。
0040FD28 |. 99 |CDQ===>扩展,使EDX为0。
0040FD29 |. F7FD |IDIV EBP===>除以7。余数在EDX中,用于控制从固定字符串中依次逐个提取字符。如果余数为0则取第一个字符,如果为1则取第二个字符,依次类推。
0040FD2B |. 0FBEC3 |MOVSX EAX,BL===>将用户名第一个字符的十六进制值移入EAX。
0040FD2E |. 8BD9 |MOV EBX,ECX===>EAX=ECX,ECX的初始值为0。
0040FD30 |. 0FBE5414 10 |MOVSX EDX,BYTE PTR SS:[ESP+EDX+10]===>SS:[ESP+10]中是固定字符串“huydong”,由EDX控制依次逐个提取字符。
0040FD35 |. 03DA |ADD EBX,EDX===>EBX=EBX+EDX。
0040FD37 |. 03C3 |ADD EAX,EBX===>EAX=EAX+EDX。
0040FD39 |. BB 09000000 |MOV EBX,9===>将9移入EBX。
0040FD3E |. 03C6 |ADD EAX,ESI===>ESI为用户名字符长度。
0040FD40 |. 99 |CDQ
0040FD41 |. F7FB |IDIV EBX===>除以9。
0040FD43 |. 80C2 30 |ADD DL,30===>余数+30。
0040FD46 |. 41 |INC ECX===>ECX自加1。
0040FD47 |. 8817 |MOV BYTE PTR DS:[EDI],DL===>保存。
0040FD49 |. 4F |DEC EDI
0040FD4A |. 3BCE |CMP ECX,ESI
0040FD4C |.^7C C9 \JL SHORT ExtractR.0040FD17===>如用户名字符未取完则跳回继续计算。
0040FD4E |. 5F POP EDI
0040FD4F |. 5D POP EBP
0040FD50 |> 8D46 4D LEA EAX,DWORD PTR DS:[ESI+4D]===>EAX=用户名字符长度+4D
0040FD53 |. B9 09000000 MOV ECX,9
0040FD58 |. 99 CDQ
0040FD59 |. F7F9 IDIV ECX===>除以9。余数在EDX中。
0040FD5B |. 8B8424 EC00000>MOV EAX,DWORD PTR SS:[ESP+EC]
0040FD62 |. 80C2 30 ADD DL,30===>余数+30。
0040FD65 |. 885434 10 MOV BYTE PTR SS:[ESP+ESI+10],DL===>保存。
0040FD69 |. C64434 11 00 MOV BYTE PTR SS:[ESP+ESI+11],0
0040FD6E |. 8D7424 10 LEA ESI,DWORD PTR SS:[ESP+10]===>将注册码移入ESI中。如果是制作内存注册机,那么只要在下一行代码处下断,ESI中就有真正的注册码。
0040FD72 |> 8A10 /MOV DL,BYTE PTR DS:[EAX]
0040FD74 |. 8A1E |MOV BL,BYTE PTR DS:[ESI]
0040FD76 |. 8ACA |MOV CL,DL
0040FD78 |. 3AD3 |CMP DL,BL
0040FD7A |. 75 1E |JNZ SHORT ExtractR.0040FD9A
0040FD7C |. 84C9 |TEST CL,CL
总结一下,注册码算法是先用用户名字符计算各位注册码,然后用用户名长度计算出最后1位注册码,所以注册码的长度比用户名长度多1位。
用实例表示如下:(假定用户名为csjwaman)
1、(99+104+0+8)/9的余数-----4
注:99为c(用户名的第一个字符)的ASCII码,104为h(固定字符串的第一个字符)的ASCII码,0为用户名字符c的序号,8为用户名字符长度。下同,不再注解。
2、(115+117+1+8)/9的余数----7
3、(106+121+2+8)/9的余数----3
4、(119+100+3+8)/9的余数----5
5、( 97+111+4+8)/9的余数----4
6、(109+110+5+8)/9的余数----7
7、( 97+ 67+6+8)/9的余数----7
8、(110+ 68+7+8)/9的余数----4
9、最后一位注册码为:(用户名长度+4D)/9的余数。我的用户名长度为8,所以余数为4
注意:前8位注册码在输入时要颠倒位置,再输入最后一位注册码。如我的注册码输入时为477453744。
相关文章
更多+相同厂商
热门推荐
点击查看更多
点击查看更多
点击查看更多
说两句网友评论