软件运行
要输入正确的Name和Serial
查壳
一个VB程序,没有加壳
载入OD
直接开搜索字符串。
这里看到了错误的提示,“You Get It”应该就是成功的字符串了。
前面的“AKA-”应该是在什么时候拼接的字符串
去成功的字符串附近看看
这个字符串上面就有一个跳转
这个跳转会直接跳过成功,到错误的提示,所以暴力破解修改这个跳就可以了
算法分析
来到函数头部分,下个断
往下走,看见输入的用户名被读出来了,通过这个CALL,是计算用户名长度。
计算完长度,又做了一下计算
用户名长度 乘以 0x17CFB
再加上 用户名的第一个字符的ASCII码
把这个计算结果转为十进制字符串——487770
在这里做了一个字符串拼接
AKA-487770
进以下函数进行比较
再进去,发现压入假的Serial和AKA-487770
再进,又压入了参数
再进函数,发现真正的比较
假Serial和AKA-487770比较
不相等eax为-1
算法分析
def genKey(username):
serial_head = 'AKA-'
serial = len(username) * 0x17CFB
serial += ord(username[0])
serial = serial_head + str(serial)
print(serial)
genKey("crack")