IDA 远程调试学习

修改值

例题
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

修改函数返回地址

posted @ 2024-09-07 20:06  BattleofZhongDinghe  阅读(59)  评论(0编辑  收藏  举报