提示:嘿嘿,不用我告诉你怎么做吧,你懂的
解压后是一个exe,输入完密码之后会闪退,怀疑内部有跳过之类的,OD打开
直接搜索字符串,设断点,分析一波流程
我们可以看到压入我们输入的code之后,并没有出现判断字符串之类的语句,直接吧401029这个je语句直接nop掉试试看
并没有输出flag,题目的意思也是你输入的正确的code就是密码
那么也就是说之前的比较过程在某一个函数里我们要弄清楚就好,极度怀疑是40101F那句,我们拖到IDA看看伪C代码
我们直接在IDA里找401060函数,如下
先是最底下的while循环返回值要是1,这就是一个字符串的比较,别看他乱的不行,其实就是a1=v5
a1异或20
然后是v5每位减5
变形后的v5我们IDA里可以轻松找到(注意小端序),如下
顺着上面的顺序正过来做一遍就好了
上脚本
s=[0x68,0x57,0x19,0x48,0x50,0x6E,0x58,0x78,0x54,0x6A,0x19,0x58,0x5E,0x06]
flag=''
for i in range(len(s)):
s[i]=s[i]-5
for i in range(len(s)):
s[i]=s[i]^0x20
flag+=chr(s[i])
print(flag)
#Cr4ckIsSoE4sy!