首页
社区
课程
招聘
anu的空间提供的CRACKME的算法分析(初级)
2006-2-24 11:45 5706

anu的空间提供的CRACKME的算法分析(初级)

jhlqb 活跃值
10
2006-2-24 11:45
5706
DynaReport的注册算法如下:
由于是VB程序,故采用SmartCheck进行调试.
说明:采用OLLDBG进行调试,会产生异常提示,没有找到什么问题.但是仍然可以运行.没有时间就没有去做啊!!!有兴趣的可以去试试.
Len(String:"lbeglqb") returns LONG:7  
Long (6) --> Integer (6)              
Mid(VARIANT:String:"lbeglqb", long:1, VARIANT:Missing)
Asc(String:"lbeglqb") returns Integer:108
Integer (108) --> String ("108")
Val(String:"108") returns double:108 (displayed as single-precision floating point)
Double (108) --> Long (108)
Mid(VARIANT:String:"lbeglqb", long:2, VARIANT:Missing)
Asc(String:"beglqb") returns Integer:98
Integer (98) --> String ("98")
Val(String:"98") returns double:98 (displayed as single-precision floating point)
Double (206) --> Long (206)
Mid(VARIANT:String:"lbeglqb", long:3, VARIANT:Missing)
Asc(String:"eglqb") returns Integer:101
Integer (101) --> String ("101")
Val(String:"101") returns double:101 (displayed as single-precision floating point)
Double (307) --> Long (307)
Mid(VARIANT:String:"lbeglqb", long:4, VARIANT:Missing)
Asc(String:"glqb") returns Integer:103
Integer (103) --> String ("103")
Val(String:"103") returns double:103 (displayed as single-precision floating point)
Double (410) --> Long (410)
Mid(VARIANT:String:"lbeglqb", long:5, VARIANT:Missing)
Asc(String:"lqb") returns Integer:108
Integer (108) --> String ("108")
Val(String:"108") returns double:108 (displayed as single-precision floating point)
Double (518) --> Long (518)
Mid(VARIANT:String:"lbeglqb", long:6, VARIANT:Missing)
Asc(String:"qb") returns Integer:113
Integer (113) --> String ("113")
Val(String:"113") returns double:113 (displayed as single-precision floating point)
Double (631) --> Long (631)
Mid(VARIANT:String:"lbeglqb", long:7, VARIANT:Missing)
Asc(String:"b") returns Integer:98
Integer (98) --> String ("98")
Val(String:"98") returns double:98 (displayed as single-precision floating point)
Double (729) --> Long (729)
Left(VARIANT:ByRef Long:729, long:4)
Val(String:"&H729") returns double:1833 (displayed as single-precision floating point)
Right(VARIANT:ByRef Long:729, long:4)
Val(String:"&H729") returns double:1833 (displayed as single-precision floating point)
Sqr(double:2033) returns double:45.0888 (displayed as single-precision floating point)
Sqr(double:1933) returns double:43.9659 (displayed as single-precision floating point)
Sqr(double:89.0547) returns double:9.43688 (displayed as single-precision floating point)
Double (943.688) --> String ("943.687962964153")
Replace(String:"943.687962964153", String:".", String:"DN", long:1, long:-1, Integer:0)
Left(VARIANT:String:"943DN687962964153", long:12)
Replace(String:"DF00000000-0", String:"-", String:"E", long:1, long:-1, Integer:0)
Left(VARIANT:String:"DF00000000E0", long:8)
Val(String:"&HDF000000") returns double:-5.53648e+008 (displayed as single-precision floating point)
Replace(String:"DF00000000-0", String:"-", String:"E", long:1, long:-1, Integer:0)
Right(VARIANT:String:"DF00000000E0", long:8)
Val(String:"&H000000E0") returns double:224 (displayed as single-precision floating point)
Sqr(double:424) returns double:20.5913 (displayed as single-precision floating point)
Sqr(double:553648228) returns double:23529.7 (displayed as single-precision floating point)
Sqr(double:23550.32198547303) returns double:153.461 (displayed as single-precision floating point)
Double (15346.1) --> String ("15346.1141614003")
Replace(String:"15346.1141614003", String:".", String:"DN", long:1, long:-1, Integer:0)
Left(VARIANT:String:"15346DN1141614003", long:12)
MsgBox(VARIANT:String:"注册码错误,无法...", Integer:0, VARIANT:Missing, VARIANT:Missing, VARIANT:Missing) returns Integer:1
注册过程分析如下:
   用户名没有验证,前面对用户名所进行的处理过程是:
(1)将用户名的各位的ASCII码相加得和,记为S
(2)sqr(sqr(s+200)+sqr(s+100))*100转化为字符串,然后用DN替换掉小数点。左取12位
说明:用户名可以为空
注册码的运算过程是:注册码是与系列号相关的
(1)将系列号的-字符用E替换掉转换为数字后左取8位后取绝对值,记为A1
(2)将系列号的-字符用E替换掉转换为数字后右取8位后取绝对值,记为A2
(3)sqr(sqr(A1+200)+sqr(A2+200))*100转化为字符串,然后用DN替换掉小数点,左取12位就是注册码!
说明,注册码是与系列号有关的,与用户名无关。
我的系列号是DF00000000-0
注册码就是:15346DN11416

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
点赞7
打赏
分享
最新回复 (3)
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
jxanu 2006-2-25 15:44
2
0
up!~~
我就对浮点数算法不熟!~~~~
分析得好!~~
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
jxanu 2006-2-25 15:46
3
0
这个crackeme唯一做得不好得就是明码比较!~~~~~
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
yujinjianx 2006-2-28 13:33
4
0
分析得好
游客
登录 | 注册 方可回帖
返回