常用工具和命令
- nm
列出目标文件的所有符号 - objdump
-d参数表示反编译.text段中的程序代码 - readelf
查看ELF文件的各种信息 - IDA
- gdb
IDA
与PE程序基本类似,将ELF程序拖入IDA也可以快速的反汇编,主要借助hex-ray插件来反编译出可读性较高的伪代码
实验-passwd_generator
trick
- patch
- dynamic debugging
- programming
gdb
gdb是Unix和Unix-like下的一个调试工具
它没有图形化界面,通过简单明了的命令来调试程序
常用命令:
- r/run [args]
加载程序后使用run命令启动程序
- b/break [address/functions]
在某个地址(记得在地址前要加*,代表这是一个地址)或符号名
- c/continue
继续运行
- n/ni(next)
执行一行源代码/汇编代码但不进入函数内部
建议费事点使用ni,可以避免在有调试信息的时候产生非常神奇的事情(明明只单步了一下汇编却跳了好几行)
- s/si(step)
执行一行源代码/汇编代码并进入函数内部
- x/examine {count} {fmt} {size} {address}
按照一定格式打印内存地址处的数据
- cout表示打印的数目,默认为1
- fmt表示打印格式,如x为16进制,d为10进制,c为字符,s为字符串等,默认为上次使用的fmt
- size表示打印单位,如b(byte), h(halfword), w(word), g(giant)等,默认为上次使用的size
- address表示目标地址,也可使用*来取指针值或 取