• GDB一般用法

    之所以要记录一下GDB,是因为GDB对于程序的调试太重要了。

    一般的用法直接掌握就行。

    用法

    • gdb调试

      gdb yourappp

    • 打断点

      b 函数名或者 *指定地址

    • 执行

      r 代表程序运行

      n代表 单步步过

      s代表 单步步入

    • 查看地址内容

      x/<n/f/u> <addr>

      • <n>为正整数,表示需要显示内存单元的个数,即是从当前地址向后显示n个内存单元的内容

      • 一个内存单元的大小由第三个参数u定义

      • <f> 代表addr指向内存内容的输出格式,s对应字符串,但需要注意整型数据的格式

        x 按十六进制格式显示变量.

        d 按十进制格式显示变量。

        u 按十进制格式显示无符号整型。

        o 按八进制格式显示变量。

        t 按二进制格式显示变量。

        a 按十六进制格式显示变量。

        c 按字符格式显示变量。

        f 按浮点数格式显示变量。

        <u>:就是指以多少个字节作为一个内存单元-unit,默认为4。u还可以用被一些字符表示:

        如b=1 byte, h=2 bytes,w=4 bytes,g=8 bytes.

        <addr>:表示内存地址。

    例如

    调试一个加密函数

    image-20211210133534799

    由于数据在程序执行过程中已经计算好了,就可以进行调试读取就行了

    1. 输入gdb app

      image-20211210134148918

    2. 打断点

      b decrypt

    3. 执行

      r

      n

    4. 查看地址内容(数据在eax)

      查看数据 x/200wd $eax

      字符串查看 x/sw $eax

    image-20211210135250056

    上一篇:
    Win32笔记-高级
    下一篇:
    Win32笔记-进阶
    本文目录
    本文目录