mirror of
https://github.com/nganhkhoa/CTF-All-In-One.git
synced 2024-12-24 03:01:15 +07:00
update 2.2_gdb
This commit is contained in:
parent
cab884d01c
commit
3f36379896
@ -7,6 +7,7 @@
|
||||
- [gdb 基本操作](#gdb-基本操作)
|
||||
- [gdb-peda](#gdb-peda)
|
||||
- [GEF/pwndbg](#gefpwndbg)
|
||||
- [参考资料](#参考资料)
|
||||
|
||||
|
||||
## gdb 的组成架构
|
||||
@ -219,6 +220,19 @@ run `python2 -c 'print "A"*100'`
|
||||
|
||||
参数可以是由 `typedef` 定义的类型名, 或者 `struct STRUCT-TAG` 或者 `class CLASS-NAME` 或者 `union UNION-TAG` 或者 `enum ENUM-TAG`。
|
||||
|
||||
#### set follow-fork-mode
|
||||
当程序 fork 出一个子进程的时候,gdb 默认会追踪父进程(`set follow-fork-mode parent`),但也可以使用命令 `set follow-fork-mode child` 让其追踪子进程。
|
||||
|
||||
另外,如果想要同时追踪父进程和子进程,可以使用命令 `set detach-on-fork off`(默认为`on`),这样就可以同时调试父子进程,在调试其中一个进程时,另一个进程被挂起。如果想让父子进程同时运行,可以使用 `set schedule-multiple on`(默认为`off`)。
|
||||
|
||||
但如果程序是使用 exec 来启动了一个新的程序,可以使用 `set follow-exec-mode new`(默认为`same`) 来新建一个 inferior 给新程序,而父进程的 inferior 仍然保留。
|
||||
|
||||
#### info threads
|
||||
打印出所有线程的信息,包含 Thread ID、Target ID 和 Frame。
|
||||
|
||||
#### thread apply all bt
|
||||
打印出所有线程的堆栈信息。
|
||||
|
||||
|
||||
## gdb-peda
|
||||
当 gdb 启动时,它会在当前用户的主目录中寻找一个名为 `.gdbinit` 的文件;如果该文件存在,则 gdb 就执行该文件中的所有命令。通常,该文件用于简单的配置命令。但是 `.gdbinit` 的配置十分繁琐,因此对 gdb 的扩展通常用插件的方式来实现,通过 python 的脚本可以很方便的实现需要的功能。
|
||||
@ -467,3 +481,8 @@ http://ropshell.com/peda/
|
||||
除了 PEDA 外还有一些优秀的 gdb 增强工具,特别是增加了一些查看堆的命令,可以看情况选用。
|
||||
- [GEF](https://github.com/hugsy/gef) - Multi-Architecture GDB Enhanced Features for Exploiters & Reverse-Engineers
|
||||
- [pwndbg](https://github.com/pwndbg/pwndbg) - Exploit Development and Reverse Engineering with GDB Made Easy
|
||||
|
||||
|
||||
## 参考资料
|
||||
- [Debugging with GDB](https://sourceware.org/gdb/onlinedocs/gdb/)
|
||||
- [100个gdb小技巧](https://github.com/hellogcc/100-gdb-tips)
|
||||
|
Loading…
Reference in New Issue
Block a user