Hacking: The Art of Exploitation 读书笔记(一)代码调试技巧

GDB 相关
-q 不打印版本信息

功能:
  • set disassemble-flavor intel /att 设置汇编语法
  • list:打印代码
  • disassemble:反汇编
  • break:设置断点
  • run:运行
  • 查看内存 x
    • 进制:o x u t
    • 列出附近几条存储信息:x/2
    • 显示方式:b h w g
    • (gdb) x/8xb $eip
      0x8048384 : 0xc7 0x45 0xfc 0x00 0x00 0x00 0x00 0x83
  • info register xxx:打印寄存器信息
    • x/i $eip
    • x/3i $sip
    • x/3i $eip -4
    • (gdb) print $ebp - 4
      $1 = (void *) 0xbffff804
    • x/xw $1
    • print $1
  • info frame: 打印栈帧 (stack frame) 信息
  • nexti:单步执行
  • bt: 回溯栈
    • bt full: 包括 stack frame 中的变量值 

代码调试:
objdump -M intel -D a.out | grep -A20 main.:
打印从 main 函数开始20行内的汇编指令,使用 Intel 语法

bc -ql
运行命令行计算器


检查 malloc( ) 函数内存分配结果代码复用:
void *errorchecked_malloc(unsigned int size){
    void *ptr;
    ptr = malloc(size);
    if(ptr == NULL){
        fprint(stderr, “Error: could not allocate heap memory. \n”);
        exit(-1);
    }
    return ptr;
}

// test
char *sentence = (char *)errorchecked_malloc(20);


你可能感兴趣的:(工具检测,读书笔记)