利用ida内置脚本IDC静态调试和Linux内核动态调试gdb两种方法解决攻防世界no-strings-attached
一、首先来看静态调试的解决办法
1、文件识别
直接拖进PE识别工具 elf/32位
可以看出不是window可执行的PE文件,而是以Linux为内核的ELF文件,要在Linux系统下进行运行。
2、进行汇编与反汇编
话不多说,程序直击拖进ida.(注意这里的程序是32位的,要用32位ida来进行反汇编)
加密是对s和dword_8048A90进行操作
s代码段
由于我们一个一个读取数据太麻烦这里我们利用ida的内置脚本IDC将十分方便
这样我们就得到s全部的数据
接下来我们再打一脚本来模拟加密过程
运行之后我们就可以得到答案
通过静态调试后我们发现flag为9447{you_are_an_international_mystery}
二、Linux动态调试gdb来解决该问题
从上面ida的分析我们可以知道,加密过程decrypt运行完成后只要知道返回值dest即可,所以利用gdb在decrypt下断点即可
1、gdb ./文件名 载入程序
2、b decrypt(函数名)在decrypt下断点
3、r运行
4、n单步进入
5、x查看值 /s以字符串的形式 $eax 查看寄存器eax的值
来源:oschina
链接:https://my.oschina.net/u/4382640/blog/4946604