一.OD分析
1.
od打开,首先右键搜索字符
定位关键字‘congratulation!!’,应该意识到,程序成功运行后,应该会走到这一步,点进去。
2.
向上断点查看,会看到一个call和一个cmp语句,
首先,将一个字符与‘ox61’,即‘a’比较,相等即继续往下走,确定一个字符‘a’,改下面的jnz语句,单步执行,再往下发现字符串‘5y’
‘5y’与我输入的字符串(12356789)一起出现,可以怀疑在比较,再往下看,又有同样的情形,可以确定字符串 ‘R3versing’
3.
再往下,又出现一个cmp语句
‘0x45’即字符‘E’,又确定一个字符。
至此,确定有‘a’,‘E’,‘R3versing’ ‘5y’等字符串,由地址来看,‘E’在‘a’前面,再往后是‘5y’,‘R3versing’,拼起来即:“Ea5yR3versing”
二.主函数的IDA分析
IDA中直接搜索关键字符‘Incorrect Password’,定位主函数。
反编译,可以看到,函数的主体是几个比较,分别是和‘97(a)’,‘5y’,‘R3versing’,‘69(E)’,等几个字符的比较。
从变量声明处可以看出,string早于v3,早于v4,早于v5,排列起来,解得正确的password.