逝者如斯夫 不舍昼夜

0%

objdump与GDB教程

初识objdum与GDB

objdump:

objdump主要用于静态分析,因此对于objdump的使用一般调出反汇编内容进行分析。

这条命令的意思是-d参数打开反汇编程序内容 -M intel参数用于设置汇编代码格式因为ida使用的习惯所以设置为intel 后面跟上文件路径,然后导出为aa.txt文件并打开文件

打开后如图
和ida相比没有伪代码等功能只有一个看汇编命令的窗口
然后举例说明怎么寻找溢出点

先找到main函数开始查看
利用call函数寻找自定义函数跟进查看

然后寻找可能出现溢出的函数 比如fgets函数是读取指定数量的数据并保存到指定地址上 如图是调用函数然后eax入栈 ebp向上开辟0x28的空间然后读取0x32保存到eax当中。
因此这就造成了一个缓冲区溢出。

-t参数可以查看符号表 grep是过滤作用 F是显示函数名


-j参数可以查看指定一个段的内容 还是上道题为例 因为bin/cat flag.txt为字符串所以需要到rodata寻找 -d参数是为了将查找的结果通过反汇编显示出来

GDB:

gdb有个算是ui的操作界面
命令是gdb-tui 然后可以file装载文件

装载过后就需要和objdump一样改格式和打开汇编窗口了另外可以再打开一个寄存器窗口方便分析

第一条意思是更改格式为Intel 然后开启汇编和寄存器窗口
开启后如图

然后介绍一下快捷键:
b为下断点 可以b (函数名)或者b* (函数地址)


然后就可以开启动态调试了

先要在python中打开文件获取pid

然后attach命令开启动态调试

然后使用c继续执行可以执行文件到需要输入的地方

然后发送一条数据

高亮就是这次发送数据发生变化的寄存器
另外还有 ni si
ni作用是运行一条函数 si则是跟进函数


而回车则是重复执行你输入的上一条指令。

-------------本文结束感谢您的阅读-------------