• 请不要在回答技术问题时复制粘贴 AI 生成的内容
levelworm
V2EX  ›  程序员

求问 Linux gdb 有什么命令可以直接把 memory dump 传递到打印机打印到纸上么?

  •  
  •   levelworm · Jul 22, 2020 · 2154 views
    This topic created in 2146 days ago, the information mentioned may be changed or developed.

    在学最初级的逆向,感觉如果能够把x 0x400da0之后显示的函数内容直接打印到纸上,然后在后面自己手写注释是最舒服的。但是我查看了gdb所有的命令,发现并没有可以打印到纸上的,同时我又不想通过 pipeline 来输出到打印机,请问有办法在 gdb 内部完成这个事项吗?谢谢~~

    5 replies    2020-07-22 13:13:55 +08:00
    lonewolfakela
        1
    lonewolfakela  
       Jul 22, 2020
    所以你为啥不想通过 pipeline 来输出到打印机呢……
    levelworm
        2
    levelworm  
    OP
       Jul 22, 2020
    @lonewolfakela 能够在 gdb 里头不用退出就行么?如果可以的话最好了,多谢!
    话说还不知道如何 pipe 进打印机不过让我查一下。。。
    listenerri
        3
    listenerri  
       Jul 22, 2020   ❤️ 1
    据我所知 gdb 支持 python/shell 扩展,楼主可以想一下怎么自己实现打印,贴一下我的部分配置:
    ```
    # pretty print qt type value
    # "Lekensteyn/qt5printers" github project needed be cloned into "~/.config/gdb/"
    python
    import sys, os.path
    sys.path.insert(0, os.path.expanduser('~/.config/gdb'))
    import qt5printers
    qt5printers.register_printers(gdb.current_objfile())
    end

    # hexdump specified memory block
    define hexdump
    dump memory /tmp/dump.bin $arg0 $arg0+$arg1
    shell hexdump -C /tmp/dump.bin
    end

    # alias for above hexdump
    define hd
    dump memory /tmp/dump.bin $arg0 $arg0+$arg1
    shell hexdump -C /tmp/dump.bin
    end

    ```
    lonewolfakela
        4
    lonewolfakela  
       Jul 22, 2020   ❤️ 1
    @levelworm 如果是不想退出的话,可以参考 https://stackoverflow.com/questions/5941158/gdb-print-to-file-instead-of-stdout,设置 gdb 把输出写进文件里,之后打印文件什么的应该就没啥困难的了
    lamy
        5
    lamy  
       Jul 22, 2020 via Android   ❤️ 1
    还有个方法,shell 里执行 script,会把 shell 的所有输出输出到文件
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2680 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 10:34 · PVG 18:34 · LAX 03:34 · JFK 06:34
    ♥ Do have faith in what you're doing.