无错误提示,消息断点没能找到关键位置,使用函数__vbaStrCmp()下断,找到算法入口。
正确的注册码出现在0040369E,爆破关键跳在004036CF。
算法分析过程:
输入
用户名:birk
注册码:11111111
算法从00403087开始,有两个循环。
1、用户名必须由数字或字母组成
2、对于用户名的每个字符,其ASCII码值16进制与0x34相加,所得的和转换成十进制的值,存储为字符串形式(如b为0x62,加上0x34为0x96,十进制为150,字符串“150”)
3、依次连接每个字符计算所得的字符串,得到一个组合的较长字符串(本例中为”150157166159“,长度12即0xC)
4、第3步中的字符串作为输入,从后向前开始处理每个字符
5、对于每个字符,与第2~3步相同的处理方式,最后组合成一个更长的字符串(本例中为“6D69656A6A656B6965646965”,长度24)
6、至此,可以写注册机了。