调试常用骚操作

1.查看数据

  • 查看可能用到的变量或函数地址:magic

  • 查看指定地方地址或值:

    1
    2
    3
    4
    5
    6
    7
    #注释头

    p &__malloc_hook
    p *__malloc_hook
    p __malloc_hook
    p main_arena.bins[0]
    p main_arena.fastbinsY
  • 查看堆状态内容:

    1
    heap; vis; parseheap; bins;
  • 查看函数汇编代码:x/20i &__libc_realloc

  • 查看调用的函数:backtrace,可以查看到当前位置调用的相关堆栈及函数

2.技巧

  • 直接从Libc.so中查找函数:

    1
    readelf -s /lib/x86_64-linux-gnu/libc-2.23.so | grep -E "__malloc_hook|__free_hook|__realloc_hook"
  • 结构体的size

    1
    p sizeof((*(struct msg_queue*)0xffffffff82203e90))
  • libs:类似IDA中的ctrl+s

3.断点

  • 硬件断点:watch/awatch/rwatch *addr内存硬件断点,分别对应写/读写/读。

4.多线程

  • 查看线程:i threads

    image-20220425194911990

  • 切换线程:thread x,这个x就比如是上述3个线程中的某个线程。pwndbg中可以完美切换,并且堆方面也可以。

gef

1
2
3
4
5
decompiler connect ida --host 192.168.xxx.xxx(LAN IP) --port 3662
search-pattern
heap bins
heap chunks
heap chunk