能力值:
( LV4,RANK:50 )
|
-
-
2 楼
顶下先,然后慢慢看
|
能力值:
( LV9,RANK:650 )
|
-
-
3 楼
算法分析在:
http://bbs.pediy.com/showthread.php?s=&threadid=33887
|
能力值:
( LV9,RANK:1140 )
|
-
-
4 楼
两天没来,都28了!!!
|
能力值:
( LV9,RANK:1130 )
|
-
-
5 楼
给个建议:你换成用VB编写。或者Delphi。而且不提供字符串参考看看。
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
难道真的是1/10吗??受打击了。。
只分析出密码只能接受 0-9 A-F
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
弄了一整天,分析了算法,用3L的分析作验证。
都是06年的贴了,年代久远,前辈们当时不知道有没有IDA这工具,我是用这工具分析的,难度比用0D直接分析大大降底了。
程序验证的算法是这样的:
1,验证name是否大于3小于23H。
2,计算 name 所有字符的ASCII码和 sum。
3,验证serial是否32个数,是否都是 0-9 A-F
4,把serial清0,原serial值变成数字,即 atoi
5,(int)serial[0] , (int)serial[4] , (int)serial[8] , (int)serial[12] 分别与前面计算出来的的结果比较,全一样就OK了。
sum: name的ascii和。
serial_hex: serial转换成16进制。
以下是条件:
条件1:
int v = sum*67452301h ^ sum * 10325476h ;
v<<5 | v >>32-5 == (大端字节序) (int) serial_hex;
条件2:
int var = sum - 10325477h ^ sum*67452301h ^ sum - 10325477h ;
var <<17 | var >> 32-17 == (大端字节序)(int)serial_hex + 4;
条件3:
int var = sum - 10325477h ^ sum*67452301h;
var >>13 | var <<32-13 ==(大端字节序) (int)serial_hex +8;
条件4:
int var = sum *10325476h << 1;
var ==(大端字节序) (int)serial_hex +12;
|
|
|