例题
https://github.com/bluesadi/SCUCTF-Backup/tree/main/SCUCTF新生赛2021/RE3_DebugMe
很明显flag在这个位置
然后分析要获取到flag需要满足v27 == 2和v24 == v22两个条件
v27==2好满足,只要在命令行中传入一个参数就可以了
但是v22经过一顿非常麻烦的计算才能获取,所以打算用动态调试获取到v22的值,然后把v24在内存中修改为v22的值让等式强制相等
准备动态调试
1.先将dbgsrv文件夹下的linux_server64放在linux虚拟机中,然后将RE3_DebugMe也放在linux虚拟机中
并运行
./linux_server64
2.然后设置Debug选项
3.开启源码级调试
4.下一个断点
5.启动调试
6.按F5查看伪代码
获取到v22=0x5AD
7.然后回到汇编代码debug
此处的汇编代码即为if(v24==v22)
8.F7单步走一下
可以看到右上角的RAX v24=0x1e240
将其修改为0x5AD
9.记下来直接F9可以从debug那里获得flag
也可以动态调试获取flag