pwn-常见汇编指令学习

news/2024/9/22 0:15:49/文章来源:https://www.cnblogs.com/zz-pwner/p/18424707

1.Intel指令

指令 描述 例子 解释
mov 传送数据 mov rax,18 将18的值传送进rax寄存器(rax = 18)
add 加法运算 add rax,rbx rax与rbx的值相加,并存储在rax(rax = rax + rbx)
sub 减法运算 sub rax,9 rax减9,将结果存储在rax(rax = rax - 9)
xor 异或运算 xor rax,rax 将rax与rax进行异或处理,等价于:(rax = 0)
call 调用函数
lea 取地址,现在一般用于运算 lea rax,[rbp - 18] 将rbp-18的结果传送到rax(rax = rbp - 18)
cmp 判断指令,实际作用是做减法运算,通常搭配J开头的命令进行使用 cmp rax,0x61 进行rax - 0x61运算,此命令不会将运算的结果值存储(rax - 0x61)
movzx 传送数据 movzx rax,BYTE ptr [rbp-0x10] 相当于将rbp-0x10地址的值,取8位数字传送至rax处BYTE:8位WORD:16位DWORD:32位QWORD:64位
push 压栈 push ebp 等同于:mov esp,esp - 4mov [esp],ebp[]的作用是取寄存器里的地址指向的没有[]的作用是取寄存器的地址
pop 弹栈 pop ebp 等同于mov ebp,[esp]mov esp,esp+4
leave 返回上级函数时,恢复原本栈空间 leave mov esp,ebppop ebp
ret 返回上级函数后,执行上级函数的指令 ret 等同于pop eip(这条指令实际是不存在的,不能直接向RIP寄存器传送数据)
call 调用指定函数,注意,调用函数时,push eip的值实际上eip下一条指令的地址值 call dofunc 等同于push eipjmp dofunc
nop 无操作,仅使ip指令+1,对应的指令是:\x90
test 测试指定寄存器中的值与另一个值(常数或寄存器)的按位与操作结果,而不改变寄存器的值。如果结果为零,将设置零标志位ZF。 test rax,rax
指令 描述 标记位
JE,JZ 结果为0则跳转(相等时跳转) ZF=1
JNE,JNZ 结果不为0则跳转(不相等时则跳转) ZF=0
JS 结果为负跳转 SF=1
JNS 结果为非负跳转 SF=0
JP,JPE 结果中1的个数为偶数则跳转 PF=1
JNP,JPO 结果中1的个数为奇数则跳转 PF=0
JO 结果溢出了则跳转 OF=1
JNO 结果没有溢出则跳转 OF=0
JB,JNAE 小于则跳转(无符号数) CF=1
JNB,JAE 大于等于则跳转(无符号数) CF=0
JBE,JNA 小于等于则跳转(无符号数) CF=1 or ZF=1
JNBE,JA 大于则跳转(无符号数) CF=0 and ZF=0
JL,JNGE 小于则跳转(有符号数) SF≠OF
JNL,JGE 大于等于则跳转(有符号数) SF=OF
JLE,JNG 小于等于则跳转(有符号数) ZF=1 or SF≠OF
JNLE,JG 大于则跳转(有符号数) ZF=0 and SF=OF

2.mips指令

寄存器的作用

$0:$zero    常量0(constant value 0)
$1:$at  保留给汇编器(Reserved for assembler)
$2-$3:$v0-$v1   函数调用返回值(values for results and expression evaluation)
$4-$7:$a0-$a3   函数调用参数(arguments)
$8-$15:$t0-$t7  暂时的(或随便用的)
$16-$23:$s0-$s7 保存的(或如果用,需要SAVE/RESTORE的)(saved)
$24-$25:$t8-$t9 暂时的(或随便用的)
$28:$gp 全局指针(Global Pointer)
$29:$sp 堆栈指针(Stack Pointer)
$30:$fp/$s8 栈帧指针(Frame Pointer)
$31:$ra 返回地址(return address)
指令 描述 例子 解释
j 跳转至标签处,相当于jmp指令
jr 跳转至寄存器里的地址指向的值,通常函数的返回处使用的指令为jr指令 jr $ra 将pc指令指向$ra寄存器里的值
jal 跳转指令,返回地址存储在$ra寄存器中,一般用于函数调用 jmp 目标地址mov fp,sp
jalr 与jal指令类似,只不过jal的对象为寄存器
la 相当于x86的lea
sw sw $ra, 0x5c($sp) 把$ra的内容写入到[$sp+0x5c]中

后续有待补充... ...

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/801272.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

九宫格(html css实现)---初识flex布局

记录flex属性并实现一个九宫格 flex属性 Flex 容器: 需要注意的是:当时设置 flex 布局之后,子元素的 float、clear、vertical-align 的属性将会失效 .container {display: flex; }//块状元素.container {inline-flex; }//行内元素块状元素 1.*** 独占一行:块元素会自动开…

利用Adguard屏蔽必应搜索中的CSDN内容

### 原因众所周知,CSDN 搜索结果,内容复制需要魔法,有的还需要关注,啥都要钱,质量还特别差虽然 百度和必应可以写参数直接去除CSDN 搜索结果,但每次都要写很麻烦### 解决办法原因 众所周知,CSDN 搜索结果,内容复制需要魔法,有的还需要关注,啥都要钱,质量还特别差 虽…

windows应急响应(二)

1.启动项win+r 输入msconfig,在"工具"里找到“任务管理器”;(底部任务栏右键,也可打开),查看启动项一般应用启动项位置:C:\Users\adnim\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startupwin+r 输入msinfo32,在"软件环境"里可以看到Au…

领导大规模敏捷Leading SAFe认证培训课

领导大规模敏捷Leading SAFe认证课

asio的buffer

ASIO的buffer理解 asio的buffer结构 任何网络库都有提供buffer的数据结构,这个就是收发数据的缓冲区。 asio提供了mutable_buffer 和 const_buffer这两个结构,他们都是一段连续的空间,首字节存储了后续数据的长度。mutable_buffer用于写服务,const_buffer用于读服务。但是这…

格林公式7

例1 计算积分 \[I=\int_Cx^2ydx-xy^2dy, \]其中C是上半圆 \(\begin{aligned} & \text{ }x^2+y^2=a^2,y\geqslant0,\text{ }\\ & \end{aligned}\) 逆时间方向 \[\begin{aligned} & \text{ }x^2+y^2=a^2,y\geqslant0,\text{ }\\ & \end{aligned} \]考虑到上半…

9.21 abc372f

容易发现平移操作,都是 \(to\) 向左平移。然后更新完了过后,\(x\) 再左移。 当然 dp 数组整体是左移的。 本题一个重点就是,假设整个 dp 不动,让我们的操作反着动。

基于AODV和leach协议的自组网络平台matlab仿真,对比吞吐量,负荷,丢包率,剩余节点个数,节点消耗能量

1.算法仿真效果 matlab2017b仿真结果如下(完整代码运行后无水印):本程序系统是《m基于matlab的AODV,leach自组网网络平台仿真,对比吞吐量,端到端时延,丢包率,剩余节点个数,节点消耗能量》的的升级。升级前原文章链接增加了运动节点的路由测试,包括定向运动,随机运动,静止…

笛卡尔坐标张量简介7

张量(tensor) 这一术语最初是用来描述弹性介质各点应力状态的,后来发展成为力学和物理学的一个有力数学工具,目前力学方面的理论性文献都不同程度地这用了这一工具 由坐标原点和三条不共面的标架直线构成的坐标系称为直线坐标系,如果三标架直线上的单位尺度相同,称为笛卡…

尝试RVC音色克隆团长音色

前言 昨晚玩剑网3突发奇想,把团长声音克隆下来,利用语音喵制作成语音DBM。 这样不管团长开不开团,打团也能有团长声音听了诶嘿嘿。 于是当场关闭游戏声音录了打本的素材,本文就边做边记录。 下载 在B站找到了这个教程: 【你的声音,现在是我的了!】https://www.bilibili.…