捷径点点通 2.00注册算法分析!
[作 者]:LILITH[CNCG]
[时 间]:2001-12-15
[软 件]:捷径点点通2.00
[软件简介]:大多数人都喜欢走“捷径”,本软件就是为此目的而设计的。当您在地图上选择了“出发地”(起始坐标点)和“目的地”(终止坐标点),然后再点击一下“开始计算最短路径”,接着等待几秒钟,本软件就会自动为您指出“出发地”和“目的地”之间的最短路径,让您轻松找到“捷径”。
[下 载]:http://www.csdn.net/soft/openfile.asp?kind=1&id=13091
[保护方式]:注册码
[破解工具]:trw2000
这是我的第一个算法分析,首先感谢PaulYoung大侠的指点,令我这等菜鸟尝到了注册算法的甜头,如有不对的地方还请各路英雄指正,呵呵……GO!
还是老办法,用TRW2000下断点bpx hmemcpy,中断后7下F12,来到……
0177:004736BA LEA EDX,[EBP-10] \\光标停在这里……
0177:004736BD MOV EAX,[EBP-04]
0177:004736C0 MOV EAX,[EAX+03A0]
0177:004736C6 CALL 004379CC
0177:004736CB MOV EAX,[EBP-0C]
0177:004736CE CALL 00404C1C
0177:004736D3 MOV [EBP-20],EAX
0177:004736D6 LEA EAX,[EBP-08]
0177:004736D9 CALL 00404964
0177:004736DE MOV EDI,[EBP-20]
0177:004736E1 TEST EDI,EDI \\验证输入注册名的位数
0177:004736E3 JNG 0047371D \\为零则跳
0177:004736E5 MOV ESI,01
\\ESI初始值为1
0177:004736EA MOV EAX,[EBP-0C]
0177:004736ED XOR EBX,EBX
\\EBX始值为零
0177:004736EF MOV BL,[EAX+ESI-01]
\\取注册名第一位字母的十六进制值
0177:004736F3 IMUL EAX,[EBP-20],BYTE +6B \\用注册名位数与6B相乘,结果保存入EAX
0177:004736F7 ADD EAX,EBX
\\将得出的数与字母的十六进制数相加
0177:004736F9 CDQ
0177:004736FA IDIV ESI \\将计算结果除以ESI的值,即除1,结果仍保存到EAX
0177:004736FC MOV EBX,EAX \\将结果存入EBX
0177:004736FE LEA EDX,[EBP+FFFFFE10]
0177:00473704 MOV EAX,EBX
0177:00473706 CALL 00408C2C
0177:0047370B MOV EDX,[EBP+FFFFFE10]
0177:00473711 LEA EAX,[EBP-08]
0177:00473714 CALL 00404C24
0177:00473719 INC ESI \\ESI递增
0177:0047371A DEC EDI \\EDI递减
0177:0047371B JNZ 004736EA \\继续往上跳,循环取注册名的第二,三位,直至取完
0177:0047371D CMP DWORD [EBP-08],BYTE +00
0177:00473721 JZ NEAR 004738A1
0177:00473727 MOV EAX,[EBP-08]
0177:0047372A MOV EDX,[EBP-10]
0177:0047372D CALL 00404D60 \\取完后到这里形成注册码,下D
EDX可看到真的注册码。
0177:00473732 JNZ NEAR 004738A1 \\完成验证,跳转。
总结:此程序通过注册名的长度来计注册码,就是说,注册名越长,注册码也就越长。输入注册名后,程序按位取注册名的字母来计算注册码。先用6B(DEC=107)乘上注册名的位数,如我用CNCG,所以为4,得出的数加上依次取得的每位字符的十六进制值,再除以ESI的值(ESI初始值为1),就得出注册码,例如我的注册名为CNCG,则计算方法是:
C=6b(107)*4+67/1=495 (4为注册名长度;67是C的十六进制值,1是ESI的值,ESI递增1)
N=6b(107)*4+78/2=253
C=6b(107)*4+67/3=165
G=6b(107)*4+71/4=124
将4个数串依次起来就是495253165124,这就是注册码了,呵呵……
至此,软件已经成功注册,我的废话也到此结束了,最后,再次感谢PaulYoung大侠的教导!BYE……
- 标 题:一连几个软件都无头绪,真不爽,搞个算法来解解气! (3千字)
- 作 者:LILITH[CNCG]
- 时 间:2001-12-16 17:27:21
- 链 接:http://bbs.pediy.com