软件运行
要输入正确的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")
结果











![[独家]自动播放K线图训练盘感能力!股票量化分析工具QTYX-V2.3.5](https://img-blog.csdnimg.cn/img_convert/40fc5a03c1fc21fc4e24faea704365c8.png)








