18.10.5 实验吧----证明自己吧

提示:嘿嘿,不用我告诉你怎么做吧,你懂的

解压后是一个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!

猜你喜欢

转载自blog.csdn.net/qq_42192672/article/details/82942542