暴力破解
流程分析
这个着实比以前几个麻烦了,让人头秃啊。
首先,他上来就获取了两次时间,
然后,取两次时间之差,如果时间小于5,就正常继续执行,如果大于5,则出现错误提示,
这种方法用来检测是否调试器了,既然他检测的是两次时间再取差值,那我们断点直接断在他后面,或者直接忽略他,那不就行啦。
再往下走,他取serial字符串,并取得他的长度,如果长度小于五,直接就报错了,所以控制serial长度得大于5.
再往下,他又取了字符串长度,并且开始了一个循环
接着,他从serial字符串中取了一个字符,又取了下一个字符,两者相比较,
如果相等,则记录循环次数到ebp-0x48
循环完后,长度减一与刚才储存的循环次数比较,成功即报错,我觉得应该是该序列号相邻俩俩不能相等,并没有看见他每个都比较。
再往下到了真正的算法处,先去出字符串长度,然后转变为字符串储存
接着又取出serial字符串第一个字符,先转ASCII码再转字符串,
后面直接将他俩乘起来,
然后将serial字符串的每个数的ASCII码相加,结果储存起来
最后是比较了长度*首字母与各位ASCII码值之和的大小,相等即成功。