当前位置: 首页 > news >正文

GDB操作

分屏使用:

使用时需要先开 tmux;python exp 中需要如下语句:context.terminal = ['tmux', 'splitw', '-h']

流程控制

命令功能 命令 简写
重新运行调试的程序 run r
继续运行 continue c
执行下一步 next n
执行N次下一步 next N n N
执行上次执行的命令 [Enter]
单步进入 step s
执行完当前函数返回到调用它的函数 finish f
指定程序直到退出当前循环体 until u
强制返回当前函数将会忽略当前函数还没有执行完毕的语句,强制返回。
return后面可以接一个表达式,表达式的返回值就是函数的返回值。
return
在当前的文件中某一行(假设为6)设定断点 break 6 b
类似于`run,停在main函数的开始 start

断点设置

  • break 函数名或者 * 0x地址
    若开启pie
  • 需要使用pwndbg
    b *$rebase(偏移)

PIE保护下断点

highlighter- scss

b *$rebase(0x地址)

打印Print

命令功能 命令 简写
打印变量的值 print var
打印变量的地址 print &var
print /x var
print /x var中x的含义 print /x var中x的选择
按十六进制格式显示变量 x
按十进制格式显示变量 d
按十六进制格式显示无符号整型 u
按八进制格式显示变量 o
按二进制格式显示变量 t
按十六进制格式显示变量 a
按字符格式显示变量 c
按浮点数格式显示变量 f

内存显示

x /<n/f/u> |$esp

例如:x /10dw arr

n 显示的长度

f 表示显示的格式 f的选择
按十六进制格式显示变量 x
按十进制格式显示变量 d
按十六进制格式显示无符号整型 u
按八进制格式显示变量 o
按二进制格式显示变量 t
按十六进制格式显示变量 a
按字符格式显示变量 c
按浮点数格式显示变量 f
u 表示的字节方式 u的选择
表示单字节 b
表示双字节 h
表示四字节 w
表示八字节 g

其他

highlighter- nim

x/s addr 查看addr处的字符串
x/b addr 查看addr处的字符
x/i addr 查看addr处的反汇编结果
x/10wx
x/10gx

查看寄存器

  • i r [a]|[eax]

修改寄存器

  • set $eax=0x11

修改地址内容

无符号 修改字节数
set {unsigned char}地址 =值 一个字节
set {unsigned short}地址 =值 两个字节
set {unsigned int}地址 =值 四个字节
set {unsigned long long}地址 =值 八个字节
有符号 修改字节数
set {char}地址 =值 一个字节
set {short}地址 =值 两个字节
set {int}地址 =值 四个字节
set {long long}地址 =值 八个字节
  • 或者set (类型) =

调试技巧

方案一

启动程序之后,再用gdb调试
gdb attch
python中pause()进行中断

方案二

在python中gdb.attach(p,'command') 如:gdb.attach(p,'b *地址')

堆相关指令

查看分配的堆 heap [-h] [-v] [-s] [addr] (chunk头开始)
查看各种bins bins [addr]
16进制查看 hexdump 地址 显示的字节数
查看各个bins的情况 heapinfo (常用)
查看堆的基地址 heapbase
查看用户使用的堆的使用情况 parseheap (chunk头开始)(par简写)(常用)
查看chunks内存 vis_heap_chunks
查找fake_chunks find_fake_fast &main_arena

查看栈信息

含义 指令
打印当前函数参数和对应值 info args
打印当前函数局部变量和对应值 info locals
打印详细的栈信息,主要以程序的虚拟地址信息为主 info frame
向栈的下面移动n层 down [n]
向栈的上面移动n层 up [n]
打印当前调用栈的信息,n可正可负。
表示只打印栈顶上n层的栈信息或栈底n层信息。
backtrace [n]

其他指令

指令含义 指令 简写
显示当前gdb断点信息 info breakpoints info b
反汇编该函数或地址 disassemble 函数名或地址 disass
用栈的方式查看 telescope 地址 tele
查看区段 vmmap
搜索字符串 searchmem 字符串
查看子命令帮助 help x
转换为intel格式 set disassembly-flavor intel
转换为att格式 set disassembly-flavor att
查看符号地址 info address 符号
查看puts的got表地址 info address puts@got.plt
查看libc中system函数地址 info address system
查看内存映射 info proc mappings
生成字符 cyclic 200 生成200个有序字符
http://www.sczhlp.com/news/77712/

相关文章:

  • Pandas 的 布尔索引(Boolean Indexing)
  • 桂城网站制作专业公司下载百度免费版
  • 网站开发流程抚州公众号开发者权限
  • 做微信网站支付需要什么信息表wordpress修改地址
  • 广州网站外包一家只做卫生巾的网站
  • 网站的分类有哪些类型荆州网站建设 众火网
  • 平泉县住房和城乡建设局网站做个企业网站的公司
  • 怎么弄自己的网站卖东西wordpress hide title plugin
  • 网站新闻关键词怎么搞wordpress
  • 旅游网站哪家好又便宜网站效果展示
  • 网站界面设计的表现娄底哪里学习网站建设和seo
  • 400网站建设电话用vs2013做网站案例
  • 做零食用哪个网站好手机网站建设资讯
  • 做网赌网站南宁广告公司网站建设
  • 制作网站方法网站功能需求文档
  • 外贸cms什么意思青岛优化网站诊断
  • 网站菜单分类怎么做网站建设报告模板
  • wordpress网站跳转nginx无忧网站模板
  • 网站主机注册企业网站建设的案例
  • 广州化妆品网站建设网页设计素材
  • 兑换网站建设python编程软件安装教程
  • 做网站时背景音乐win8式网站后台模板
  • 网站怎么添加二级域名汉阳网站推广
  • 江门网站推广优化龙岩seo
  • 集团网站策划方案deals网站建设
  • 织梦网站根目录标签北京seo网站设计
  • 山东省建设资格注册中心网站深圳市建设平台
  • 网站内页怎么做301定向网站公司利润
  • 服务关系型网站怎么做2345网址导航手机
  • 网站建好了还需要什么维护wordpress三栏中文主题