Reverse
- 1.HELLO 链接地址
Linux下发现是mach-0文件,丢进IDA中F5打开得到主函数得关键函数:
所以我们只要得知v2变换后的值就可以拿到flag,key的值在内存中可以直接看到,即start函数的地址的十六进制值与sub_100000C90函数的地址的十六进制值相减再右移两个字符的值与key[0]的值亦或。
然后根据主函数的方程写脚本文件即可拿到flag,但是这题目中我发现定义的s的最大长度只有8,但是复制给s的值超过了8,如果只给s赋8长度只能得到一半的flag,所以我并没有弄明白其中的原因。
- 2.Re
丢进IDA,可以看到主函数:
可以看到把那一串字符串赋值给了s,然后再用s进行亦或运算得到flag
所以可以直接写脚本拿到flag
- 3.Re.exe
先运行看看,然后丢进IDA得到主函数
我们可以分析得到,先输入一个值赋值给v14,而后v14与0x80进行与运算重新再赋值给v14,再将v14的值与v4相比较,如果正确输出good,相反则输出wrong。接下来我们所要做的就是得知写在内存中的v4的值,v4的值就是flag。我们在关键语句中加上断点:
加上断点之后进行调试,F9:
随便输入一个值,我们输入”hello”,回车:
一路F7,之后我们可以发现我们所输入的hello的值存储在28h当中,而下面就是strcmp对比函数,我们可以推测得到上面的14h中存储的就是我们所要找的v4的值
这样我们就得到了v4的值,然后根据主函数中的关键函数写反函数,得到脚本拿flag为: