所用工具ida,exeinfope;
先用exeinfope进行查壳并确定其所用形式32位,还是64位,由于我使用的ida为8.4版本,所以不影响使用,但是我们还是要养成查壳的好习惯,可以帮助我们找到思路
下一步我们用ida打开64位ida打开程序 。
这时我们一般要找main函数,但是直接找需要慢慢看,我们可以直接通过遍历字符串去查找,应为一般main函数中会有flag等字样。
我们对其进行选中。
找到其对应的汇编代码,按x进行交叉应用(交叉应用等ida基础功能可以去自行查找学习)找到其对应代码
我们可以用Tab键反编译,查看伪代码。
我们可以发现代码分为两部分。上面的代码为加密代码
我们不难发现这部分代码的意思就是将字符中的o替换为0;然后看后半部分代码。
我们发现这是对我们的输入str1与str2做了一个比较。我们点击str2看看其代表的内容
发现str2存储了{hello_world};这就是flag。
但是在上面的代码中,对str2进行了修改,将str2中所有的o换成了0。
我们修改字符串最终得到正确的flag。
flag{hell0_w0rld}