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 <main+16>: 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);


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值