AfKayAs CrackMe #1
爆破

查找字符串,定位到YouGetWrong的反汇编,然后往上翻,找到je跳转

它决定了弹出哪种提示框
改成je 下一条指令的地址

然后提示You Get it

ctrl+p选择修补文件就可以了
算法分析
在上边这些代码中看不出明显的加密逻辑,所以跳到函数头部的push ebp指令,从这里开始一步一步跟踪。这里输入Name:8888 Serial:9999 触发断点

当跟踪到计算字符串长度这个函数的时候,需要停下来分析一下

这个函数把“8888”的长度4给了edi,然后做了一个乘法计算,edi保存了 4 * 17CFB 的值 5F3EC
后边Ordinal函数取了"8888"的第一个字节 38,然后把这个值与上边的5F3EC相加,得到 5F424

后边的 StrI4 把这个值从16进制转换为10进制的390180

继续往下跟,StrCat把字符串 "AKA-" 和 390180 拼接起来,最后再用StrCmp比较我们输入的 9999 和 "AKA-390180"

因此可以总结出Serial生成的算法
'AKA-' + DEC(len(name) * 17CFB + name[0])
验证一下

注册机编写
据此写出注册机如下
Name = input("请输入Name: ")
Serial = 'AKA-' + str(len(Name) * 0x17CFB + ord(Name[0]))
print(f"Your Serial: {Serial}")
浙公网安备 33010602011771号