前言
博主是一名刚刚开始学习逆向的小白,学习过程中想通过写博客记录过程进行复习,有不足恭请指正。
本篇主要讲利用IDA调试器取得内存中的flag
—、IDA调试器
IDA自身内带调试器,可以同时用上IDA和HexRays的分析功能,可以对反编译的伪代码进行调试获得如源代码调试般的体验。
IDA pro安装请看B站大佬:https://www.bilibili.com/video/BV1uA411V7LK
二、操作步骤
1.断点设置
我们首先将4-debug.exe载入IDA后按下F5显示伪代码
之后在界面中的printf语句中按F2或点击语句左边蓝色小圆点下一个断点
如图
2.开始调试
按下F9或选左上角debugger选项进入调试
后选择后端为Local Windows debugger,即可使用IDA内置调试器
在弹出的确认对话框中选择Yes即可开始调试
(被调试文件默认路径为输入文件的路径,如需调整路径可通过“Debugger->Process options”菜单目录进入调整)
之后进入如下页面
后按下F5即可看到在调试状态下看到伪代码
选择“Debugger->Debugger windows->Locals”菜单命令打开查看局部变量的窗口
之后按下F8一直到程序执行到scanf语句位置,会发现程序进入运行状态,在程序运行窗口随意输入一些值后按下回车
即可在Locals窗口看到我们输入的值(变量红色表示变量值有变化)
后继续执行程序到base64_decode位置,可以看到v5的值发生了变化,并且其位置为RDI
后在寄存器窗口可以看到RDI对应的值,点击旁边小箭头即可在反汇编窗口跳到对应位置
flag已清晰可见
选中地址按a键即可将其转为字符串显示
之后可在伪代码界面将v5类型修改为char*(按Y键输入char*)将其转为字符串并在Locals窗口右键Refresh刷新即可在Locals窗口显示字符串
成功找到flag!