流浪者
1. 运行
简单的crackme,找出注册码。
2.查壳
没有加壳
3. 分析
既然没有加壳,那么我们可以直接通过字符串定位到关键函数
不断查看交叉引用,就可以找到关键函数sub_401890
如下:
然后继续分析:
4. 写注册机
target = "KanXueCTF2019JustForhappy"
source = "abcdefghiABCDEFGHIJKLMNjklmn0123456789opqrstuvwxyzOPQRSTUVWXYZ"
for i in target:
v5 = source.index(i)
if v5>=0 and v5<10:
print(chr(v5+48),end="")
elif v5>=10 and v5<36:
print(chr(v5+87),end="")
else:
print(chr(v5+29),end="")
5. 总结
一个简单的crackme,主要的考查点应该是对数组指针和ascii的理解。用户输入没有判断的长度,大于26就会导致缓冲区溢出233333.