云计算百科
云计算领域专业知识百科平台

ida远程动调Linux程序学习记录--例题:[hnctf 2022 week2]try2bebug_plus

一.远程动调环境配置

首先,你需要一个ida,和一个VM虚拟机,这里我配备的是kali虚拟机,然后找到你的ida文件夹,里面有一个这样的文件夹,这个就是远程调试助手的文件。

然后你需要把你对应虚拟机需要的助手文件,复制到虚拟机中。像这样:

我单独创建了一个文件夹,因为调试时也需要把程序放在虚拟机中,所以我觉得这个单独的文件夹还是有一定帮助的。

之后,就是在这个文件夹路径下打开终端。

输入命令去运行这个文件,如果显示如下图,则证明链接成功。

对应ida这边的操作是:

选择Debugger对应Linux这个

再到这里,添加需要的信息:

这里就是,ip地址和监听端口(一般默认为23946)对应着填上就可以,上面三个路径分别是文件所在子目录,文件所在父目录和文件夹地址

当然,你可能在第一个配置时会遇到各种问题,常见有:

ida显示当前虚拟机积极拒绝接入:

解决方法是可以尝试从主机ping一下虚拟机的网关,看看是否能够联通。

ping <虚拟机ip>

或者,文件权限不够,需要修改权限:

chmod +x ./linux_server

还有可能是你的默认监听端口被占用。

其他的问题,可以问一下deepseek了,善于运用ai^^

二.[hnctf 2022 week2]try2bebug_plus详细题解

首先,能明显看出这不是一个能够直接在windows系统中运行的程序。

此处辨别一下:

  • ELF是Linux系统中的可执行与可链接格式(Executable and Linkable Format)文件。你可以把它理解成Linux世界里的“通用可执行文件标准”,是系统运行程序、管理代码和数据的核心格式
  • EXE文件 是 Windows操作系统中可执行文件的常见扩展名。

  • PE 是 Portable Executable(可移植可执行文件)的缩写,它是 Windows操作系统 真正使用的文件格式标准。

可以这样理解它们的关系:EXE 是 PE 格式的一种具体“包装”和最常见的名字。 就像 Linux 下的 ELF 文件可以有后缀(如 .o, .so),也可以没有后缀(如 /bin/bash),但其内在格式都是 ELF

那这个文件就是elf文件,因此我们需要虚拟机远程调试。而且,我们发现这个文件是放不到ollydebug中的,只能放到ida去。

进来先看主函数,这里有解密函数,还有一个sleep和function函数是我们不确定程序内容的。一个一个去看。

这很明显是一个XTEA,那我们的目的就是找到v3这个字符串。

再看sleep函数对应的汇编语言,能看到这个休眠时长是存放在di这个寄存器中的,而且计算可以得到2710h相当于十进制中的1000,所以大概也明确一会动调时要修改这里的数据。

再看,function这个函数

v3在这里还有一个异或的规则,或许,动调时需要从这里查看v3的信息。

下一步就是链接我们的远程调试工具,然后下断点开始动调了。

链接好后,下第一个断点,这里方便我们修改sleep的数据。

第二个断点是在function函数中,这里卡着程序的跳转判断,方便我们查看数据。

以上是暂且由程序逻辑推断所下断点,具体能不能一次爆出flag我也不知道。那么,开赌吧…

首先,程序运行到这里后,就要修改edi寄存器中的数值了

我把这个睡眠时间改成了0。之后让程序继续运行,f9运行到下一个断点处,这时再查看v3就能找到flag了。

三.问题详解

想要修改sleep函数中的的值,为什么要修改edi寄存器的值?

我想,可能会有和我一样的新手小伙伴会疑惑,为什么是修改edi寄存器的值。首先,我们了解一些汇编语言就要知道,di是目标索引寄存器(edi是32位的,rdi是64位的)。这部分的知识就需要你学汇编语言了。

而这里的汇编语言逻辑就是:

函数的第一个整数或者指针参数都必须通过寄存器传递,而这里用edi是因为0是一个比较小的数字,用edi能够优化代码效率。

sleep函数的作用是什么?

让当前执行的程序(更准确地说是“进程”或“线程”)暂停一段时间

这部分如果你学过c语言写过类似的程序游戏等你应该会知道。

XTEA加密:

https://www.yuque.com/g/memory-luvcr/whgrxl/ulteyg669ogflu2v/collaborator/join?token=WvVgOIICkPyBaqOj&source=doc_collaborator# 《TEA》

远程调试我也是拖了很久终于搞懂了怎么弄,之前一直以为还要安装gdb这些程序,尝试安装失败后就放在这了。感谢这道题,让我没有继续拖延下去。这两天也大概列了一个学习清单,继续努力啦。拜拜—-

赞(0)
未经允许不得转载:网硕互联帮助中心 » ida远程动调Linux程序学习记录--例题:[hnctf 2022 week2]try2bebug_plus
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!