这个题目是 10年看雪的一个大佬出的crackme
我一个伙计不知道怎么就拔出来 让我看了,。。。。
其实这个题目本身并不难,, 这两天打比赛打的太累了,,, 感觉自己不太在状态,,,
CrackMe的链接
https://bbs.pediy.com/thread-111995.htm
然后 这个crackme 的大致情况就是如此
我一开始是用 sub 0xa 来找 按钮事件,
然后我发现 这个程序逻辑点 还要很长 直接下一个 内存访问断点 然后发现了这里的算法
其实到这基本就可以了
然后就是分析硬核的算法了
这里我整理了一下 大概就是
name 长度大于5
serial 长度大于19
然后 每第五位 是 -
然后循环5次
然后 就是 sum += sum (name[(name_len-i)])
然后就是
然后再往下看 进入关键函数看
发现了我们上面说的那个点,
然后我们写出注册机。
table="zouzhiyong"
name="pipixia"
flag=""
count=0
for i in range(0,5):
temp=ord(name[i])
for j in range(1,len(name)-i):
temp+=ord(name[j])
while temp<10000:
temp*=3
temp = temp / 3
while temp:
dnum=temp%10
temp=int((temp-dnum)/10)
strs=ord(table[dnum])
strs=strs-32-(strs%5)-(strs%2)
if count%5==4:
count+=2
flag+='-'+chr(strs)
else:
count+=1
flag+=chr(strs)
print(flag)