gdb调试器常用指令

来源:互联网 发布:nginx php 张宴 编辑:程序博客网 时间:2024/05/01 10:36

http://blog.csdn.net/breezedong/article/details/25415379

调试器

分类

白盒调试器

源码级别的跟踪和调试功能。

通常只在软件开发阶段

黑盒调试器

汇编代码级别的调试

用户态调试器

1.       主流调试器

Ring3   winDbg OllyDbg gdb

2.       高级调试器

Windows 平台下,智能调试器:支持用户自行编写脚本插件,通过这些插件,完成hook等功能,开发出专用于漏洞挖掘或逆向工程的高级脚本

目前做的比较好的:PyDbg:由Python实现的调试器    Immunity Debugger

3.       断点类别

软断点:将设置断点处的操作码改为INT3终端指令 0xCC

0x12345678: 8BC3     MOV EAX,EBX

0X12345678: CCC3   

注意:内存改变代码时,会改变程序的循环冗余校验值(CRC)

恶意软件会校验crc值,来防止逆向

硬件断点:通过寄存器来设置断点,最多4个  防止crc校验

内存断点:改变一个内存区域或内存页的访问权限

权限分类

页可执行

页可读

页可写

保护页:对保护页任何类型的访问将导致一次性异常,之后这个内存页恢复到之前状态。这种类型的内存页在一些场合非常有用:隔离堆栈,或者用于确保一个内存块增长不会超出预定边界



Gdb

获取内核转储

ulimit –c unlimited

gdb –c core ./a.out

ulimit -c  unlimited/1073741824   空间大小限制

ulimit -s   堆栈空间限制

generate-core-file生成内核转储文件

gcore 'pidof emacs'      gcore pid

objdump 找到相应代码

 

进程内存分布图

   

Gdb基本使用方法

    带着调试选项编译、构建调试对象

    启动调试器

    设置断点

    显示栈帧

    显示变量、寄存器值

    执行方法

1.    设置断点

1.1 设置方法

break 函数名

break 行号

break 文件名:行号

break 文件名:函数名

break +偏移量

break -偏移量

break  *地址

info b断点信息

 

1.2条件断点

break 断点 if 条件

condition 断点编号      删除指定编号断点触发条件

condition 断点编号 条件   添加

ignore 断点编号 次数

finish 执行完当前函数暂停

until 执行完当前函数后暂停,用于跳出循环

断点删除/禁用

clear/delete

disable enable

断点命令

commands 断点编号   断点暂停后,自动执行命令

命令

end

1.3监视点

watch<表达式>  表达式变化是暂停

awatch<>          访问或者变化 

rwatch<>           访问

delete

hbreak   硬件断点

tbreak   临时断点

thbreak 临时硬件断点

 

2.显示栈帧

backtrace  bt显示所有的栈帧

backtrace N显示开头N个栈帧

backtrace -N显示最后N个栈帧

backtrace full不仅显示栈帧,还显示局部变量

frame

up 上一层栈祯

down

i frame 1 显示栈帧信息

3.显示值

Print 打印变量

info reg显示所有寄存器

p $eax 

改变变量的值

set variable 变量=表达式

p/格式 变量    (x 十六进制,d 十进制,u 无符号十进制,o 八进制,t 二进制,a 地址,c 字符 ,f 浮点小数,s 字符串,i 机器语言)

程序指针$eip $pc

x命令,显示内存内容

x/NFU ADDR    (N 重复次数,F 格式,U 单位 b 字节、h 半字节、w字、g双字,ADDR 希望显示地址)

disassemble disas

4.单步执行

next n 执行下一行   n i

step p执行到函数内部  s i

continue c  次数

5.attach到进程

attach pid

ps aux|grep sleep

info proc

detach

I proc mapping显示内存映射

6. 反汇编方式查看

disas funcname 


0 0
原创粉丝点击