汇编语言学习2---GNU Debugger (GDB)

汇编语言学习之GDB与GEF插件

学习记录,在汇编语言 ,我们面对的是机器码(以汇编指令形式展现),所以断点要设置在机器码被加载到内存中的位置。

GEF插件使用

安装插件

 wget -O ~/.gdbinit-gef.py -q https://gef.blah.cat/py
 echo source ~/.gdbinit-gef.py >> ~/.gdbinit

GDB支持第三方插件,GEF是一个专为逆向工程和二进制开发而构建的插件。
GEF学习文档
https://hugsy.github.io/gef/
加载ELF程序

gdb -q ./helloWorld

在这里插入图片描述
也可以在编译的过程中使用,下面是一个编译和构建的bash脚本

#!/bin/bash

fileName="${1%%.*}"

nasm -f elf64 ${fileName}".s"
ld ${fileName}".o" -o ${fileName}
[ "$2" == "-g" ] && gdb -q ${fileName} || ./${fileName}

通过这个脚本,可以快速编译elf可执行文件
在这里插入图片描述

./assembler.sh helloWorld.s -g

在这里插入图片描述

枚举信息

info functions

在这里插入图片描述
得到了_start函数

info variables

在这里插入图片描述
可以看到,程序里定义的 message 变量被列出来了和其他一些默认段变量。

反汇编

disas _start

在这里插入图片描述
包括内存地址(比如 0x401000)和偏移量(比如 <+0>)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值