pwn前置基础

发布时间:2024年01月22日

小摸一下二进制~

常用寄存器及一些汇编指令

寄存器命令
RIP存放当前执行的指令的地址
RSP存放当前栈帧的栈顶地址
RBP存放当前栈帧的栈底地址
RAX通用寄存器。存放函数返回值
汇编指令解释
addadd rax,0x20 : rax=rax+0x20
subsub rbp,0x18 : rbp=rbp-0x18
xorxor ebx,ebx : ebx^ebx=0
lealea rax,[rbp-0x18] : rax=rbp-0x18 (取地址给rax
testtest eax,eax : eax&eax // eax=0->0 eax!=0->!0
cmpcmp a1,0x61 : a1-0x61
JE相等时跳转
JNE不相等时跳转
push压栈,eg:push ebp : esp-4,把ebp放入esp指向的地方
pop弹栈,eg:pop ebp : 把esp指的地方赋值给ebp,esp+4
leave相当于:mov esp,ebp;pop ebp
retpop eip
callpush eip;jmp func
movmov a ,b : 将b中的值写入a

gdb调试及常用命令

命令含义
b *设置断点
d删除断点
disable b id断点失效
enable b id断点生效
i r查看寄存器
i b查看寄存器
c继续执行到断点,没断点就一直执行下去
r重新开始执行
start类似于r,停在main函数的开始
ni不进入函数体执行
si进入函数体执行
finish步出
vmmap查看内存情况
stack也是查看寄存器
cyclic 生成指定number长度的字符串
cyclic -l 给出该字符串当前的padding(不好用
distance 计算num1和num2的距离(算padding
set修改指定地址的值
x/num<n/f>
num表示打印的数量
n设定打印格式,参数可为o(八进制),x(十六进制),d(十进制),u(无符号十进制),t(二进制),f(浮点类型),a(地址类型),i(解析成命令并反编译,显示地址上的指令信息),c(字符)和s(字符串)
f设定输出长度,b(byte),h(halfword),w(word),giant(8bytes)
文章来源:https://blog.csdn.net/weixin_54448259/article/details/135753204
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。