Remote Linux debugger
[ida远程动态调试Linux_ida linux_server64-CSDN博客](https://blog.csdn.net/weixin_43876357/article/details/108096552?ops_request_misc=%7B%22request%5Fid%22%3A%22171220814116800182169862%22%2C%22scm%22%3A%2220140713.130102334.pc%5Fblog.%22%7D&request_id=171220814116800182169862&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-4-108096552-null-null.nonecase&utm_term=IDA linux远程调试&spm=1018.2226.3001.4450)
(1)在ida安装目录下的dbgsrv文件中找到linux_server & linux_server64,将其拖入Ubuntu的Home文件夹里面,再从Home文件夹拖到桌面,待调试(题目)文件同理
(2)进入终端,在桌面路径下输入如下指令,赋予两个文件权限
1 | chmod +x linux_server64 |
(3)输入如下指令运行调试服务器组件
1 | ./linux_server64 |
(4)打开windows下的IDA,下好断点,选择remote linux debugger进行远程调试
(5)配置调试器
(6)选择ok运行即可
(7)查看linux的ip地址
在linux终端输入指令
1 | ifconfig |
即可查看虚拟机ip地址
Local Windows debugger
例题:变种base64解码(题目路径:G:\Reverse题目\逆向分析之密码学)
(1)选择调试器后端为Local Windows debugger
(2)设置断点(快捷键F2),
本题设置断点情况如下
(3)按绿色三角形启动程序,再按F9运行程序
情况如下
(4)输入任意字符串,按回车键程序运行至第二个断点处
(5)查看变量”Debugger-Debugger Windows-Locals,打开查看局部变量的窗口
执行程序至base64_decode之后,v5被修改成另一个值,但是实际上v5是一个字符串,存放着正确的输入内容
获取v5的内容的方法如下:
(一):
Locals窗口中可以看出v5的Location为rdi,在寄存器窗口可以看到rdi的值,单击其值右侧的按钮,选择jump即可在反汇编窗口中跳转到对应的位置
可以看到flag出现在汇编窗口,选中flag部分按a,将其转为字符串显示
(二):
修改v5的类型,将_BYTE*修改为char*,从而将其在Locals显示出来
具体操作为:在伪代码窗口中按Y键,修改v5类型并确认,然后在Locals窗口中右键单击Refresh刷新
注:Locals中变量的值在远离被调用位置时并不可靠,请仅在该变量被引用时或明确知道该变量生存周期时再相信Locals显示的值