CSAPP BOMB LAB part2

bomb lab part2

phase3

在这里插入图片描述
将rsp+0xc存入rcx, 将rsp+0x8存入rdx, 地址0x4025cf存储格式,然后调用好sscanf函数,
在这里插入图片描述
在这里插入图片描述
当rsp+0x8的值大于0x7, 会跳转到400fad, 会boom!!! 所以rsp+0x8的值不大于0x7。

在这里插入图片描述
在这里插入图片描述
0x8+rsp的值不进入ja的代码段,会执行400f71对应的指令,之后执行400f75对应的指令,
在这里插入图片描述

jmpq *0x402470(,%rax,8) ==> 0x402470 + 8(rax)

在这里插入图片描述
在这里插入图片描述
设置rax为1, *0x402470(,%rax,8) ==> 0x402470 + 8 ,0x402478存储的值,400fb9,
在这里插入图片描述
400fb9 是 将0x137的值存储到eax, 比较第二个参数和eax的大小,等于跳转到400fc9

在这里插入图片描述

汇编语法

switch 汇编版本

switch 例子:
在这里插入图片描述
switch 使用 jump table
在这里插入图片描述
在这里插入图片描述

cmpl 指令

cmpl指令是x86汇编语言中的一个比较指令,用于比较两个操作数的值。cmpl指令的格式如下:

cmpl source, destination

sourcedestination可以是寄存器、内存地址或立即数。指令执行后,会将sourcedestination进行比较,并根据比较结果设置标志寄存器中的相应标志位。

cmpl指令的比较结果会影响以下标志位:

  • ZF(Zero Flag):如果两个操作数相等,则ZF标志位被设置为1,否则为0。
  • SF(Sign Flag):如果结果为负数,则SF标志位被设置为1,否则为0。
  • CF(Carry Flag):如果source小于destination,则CF标志位被设置为1,否则为0。
  • OF(Overflow Flag):如果有符号操作数溢出,则OF标志位被设置为1,否则为0。

以下是一些示例,演示了cmpl指令的使用:

movl $10, %eax    # 将10存储到eax寄存器
cmpl $5, %eax     # 比较eax和5

在这个例子中,我们首先将立即数10存储到eax寄存器中。然后,我们使用cmpl指令将eax和立即数5进行比较。比较结果会根据eax和5的大小关系设置相应的标志位。

cmpl指令可以与条件跳转指令(如jejnejl等)结合使用,用于根据比较结果执行不同的代码路径。

使用cmpl指令比较var1和var2的值。根据比较结果,我们使用条件跳转指令来执行不同的代码块。如果var1大于var2,则跳转到greater标签处执行相应的代码块;如果var1小于var2,则跳转到less标签处执行相应的代码块;如果var1等于var2,则跳转到equal标签处执行相应的代码块。

请注意,cmpl指令只比较操作数的值,并不修改操作数的内容。如果需要根据比较结果进行其他操作,可以使用条件跳转指令或其他指令来实现。

在这里插入图片描述

jg指令

jg指令的语法如下:

jg label
其中,label是一个标签,用于指定跳转的目标位置。

jg指令根据条件码寄存器的值来进行跳转。如果ZF为0且SF等于OF,则跳转到label指定的位置。

ja指令

ja指令的语法如下:

ja label

其中,label是一个标签,用于指定跳转的目标位置。

ja指令根据条件码寄存器的值来进行跳转。如果ZF为0且CF为0,即无进位且不相等,则跳转到label指定的位置。

下面是一个示例,展示了cmpl指令和ja指令的使用:

section .datavar1 dw 10var2 dw 20section .textglobal _start_start:mov ax, [var1]mov bx, [var2]cmpl ax, bxja greater; 如果var1 <= var2,则继续执行下面的指令; ...greater:; 如果var1 > var2,则跳转到greater标签处执行相应的代码块; ...; 继续执行下面的指令; ...end:; 结束程序mov eax, 1int 0x80

在上面的示例中,我们定义了两个变量var1var2,并将它们的值分别设置为10和20。

然后,我们使用cmpl指令比较var1var2的值。如果var1大于var2,则跳转到greater标签处执行相应的代码块;如果var1小于等于var2,则继续执行下面的指令。

最后,我们使用系统调用int 0x80来结束程序。

这样,我们可以根据cmpl指令的比较结果和ja指令的条件跳转来执行不同的代码块。

工具介绍

参考链接

https://www.cs.cmu.edu/afs/cs/academic/class/15213-f15/www/lectures/05-machine-basics.pdf
https://www.cs.cmu.edu/afs/cs/academic/class/15213-f15/www/lectures/06-machine-control.pdf
https://www.cs.cmu.edu/afs/cs/academic/class/15213-f15/www/lectures/07-machine-procedures.pdf

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

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

相关文章

docker---dockerfile相关知识

第 3 章 Docker 高级实践 在这一部分我们主要来介绍一些Docker的高级内容&#xff1a; Dockerfile 和 Docker compose 3.1 Dockerfile Dockerfile我们从下面的几个方面来介绍&#xff1a; Dockerfile简介 Dockerfile快速入门 Dockerfile详解 Dockerfile简单 实践 3.1.1 Docke…

阿里云安全恶意程序检测(速通一)

阿里云安全恶意程序检测 赛题理解赛题介绍赛题说明数据说明评测指标 赛题分析数据特征解题思路 数据探索数据特征类型数据分布箱型图 变量取值分布缺失值异常值分析训练集的tid特征标签分布测试集数据探索同上 数据集联合分析file_id分析API分析 特征工程与基线模型构造特征与特…

【Kubernetes部署】通过Kubeadm部署Kubernetes高可用集群

Kubeadm 一、kubeadm部署思路二、基本架构2.1 资源分配2.2 系统初始化操作&#xff08;所有节点&#xff09;2.2.1关闭防火墙、selinux和swap分区2.2.2 修改主机名&#xff0c;添加域名映射2.2.3 内核相关2.2.4 加载ip_vs模块2.2.5 时间同步 三、部署docker3.1 通过yum安装dock…

程序员笔记本电脑选 windows 还是 MAC

计算机选择是每个进入 IT 行业同学的第一个重要选择&#xff0c;那么你是怎么选择的呢&#xff1f; 选择操作系统&#xff08;Windows还是macOS&#xff09;取决于程序员的需求、偏好和工作流程。每个操作系统都有其优点和缺点&#xff0c;下面将分别讨论它们&#xff0c;以帮助…

小红书运营篇1,新手如何快速分析拆解对标账号

hi&#xff0c;同学们&#xff0c;本期是第1期AI运营技巧篇 很多新手博主初期都非常迷茫&#xff0c;主要是因为他们没有找对标账号&#xff0c;也没有充分分析同行账号。 有些人可能会说&#xff0c;“我不想参考同行&#xff0c;我想要追求创新”。这种勇气是真的非常值得鼓…

文件夹批量改名:轻松实现文件夹随机重命名

无论是在我们的日常生活还是工作中&#xff0c;批量重命名文件夹是一项非常常见的任务。当我们需要整理或分类大量的文件时&#xff0c;往往需要对相应的文件夹进行重命名。然而&#xff0c;手动一个接一个地完成这个任务不仅会消耗大量的时间&#xff0c;还容易在重命名过程中…

JS逆向爬虫---请求参数加密②【某麦数据analysis参数加密】

主页链接: https://www.qimai.cn/rank analysis逆向 完整参数生成代码如下&#xff1a; const {JSDOM} require(jsdom) const dom new JSDOM(<!DOCTYPE html><p>hello</p>) window dom.windowfunction customDecrypt(n, t) {t t || generateKey(); //…

《006.Springboot+vue之旅游信息推荐系统》【有文档】

《006.Springbootvue之旅游信息推荐系统》【有文档】 项目简介 [1]本系统涉及到的技术主要如下&#xff1a; 推荐环境配置&#xff1a;DEA jdk1.8 Maven MySQL 前后端分离; 后台&#xff1a;SpringBootMybatis; 前台&#xff1a;vueElementUI; [2]功能模块展示&#xff1a; …

汽车网络安全渗透测试概述

目录 1.汽车网络安全法规概述 1.1 国外标准 1.2 国内标准 2.汽车网络安全威胁分析 2.1 汽车网络安全资产定义 2.2 汽车网络安全影响场景及评级示例 3.汽车网络安全渗透测试描述 3.1 参考法规 3.2 渗透测试内容 4.小结 1.汽车网络安全法规概述 近年来&#xff0c;汽车…

C语言每日一题(24)回文素数题解

BC158 [NOIP1999]回文数 题目描述 若一个数&#xff08;首位不为零&#xff09;从左向右读与从右向左读都一样&#xff0c;我们就将其称之为回文数。 例如&#xff1a;给定一个10进制数56&#xff0c;将56加65&#xff08;即把56从右向左读&#xff09;&#xff0c;得到121是…

科技创意赋能乡村文旅振兴

近日&#xff0c;由北京大学创意产业研究中心联合中国国际科技促进会新基建专委会共同主办的“科技创意赋能乡村振兴研讨会”在京举行&#xff0c;与会专家学者围绕“和美乡村共同富裕智慧文旅”主题进行深入探讨。北京大学创意产业研究中心副主任吕艺、国家文化和旅游公共服务…

【MongoDB】集群搭建实战 | 副本集 Replica-Set | 分片集群 Shard-Cluster | 安全认证

文章目录 MongoDB 集群架构副本集主节点选举原则搭建副本集主节点从节点仲裁节点 连接节点添加副本从节点添加仲裁者节点删除节点 副本集读写操作副本集中的方法 分片集群分片集群架构目标第一个副本集第二个副本集配置集初始化副本集路由集添加分片开启分片集合分片删除分片 安…

2023数学建模国赛C题赛后总结

今天国赛的成绩终于出来了&#xff0c;盼星星盼月亮的。之前面试的时候已经把我给推到国奖评委那里去了&#xff0c;可是好可惜&#xff0c;最终以很微小的劣势错失国二。只拿到了广西区的省一。我心里还是很遗憾的&#xff0c;我真的为此准备了很久&#xff0c;虽然当中也有着…

001、Nvidia Jetson Nano Developer KIT(b01)

之——镜像烧录 杂谈 Nvidia Jetson Nano Developer KIT&#xff08;b01&#xff0c;4G&#xff09;&#xff0c;系统配置全纪录&#xff0c;镜像烧录、系统安装、远程桌面安装、cuda与torch安装、pycharm、pycuda、tensorrt等等。 正文 1.开发板系统安装 1.1 开发板简介 Jet…

8、Python模块和包:导入模块、创建自己的模块和包

文章目录 Python模块和包:导入模块、创建自己的模块和包导入模块创建自己的模块创建包使用相对导入结论Python模块和包:导入模块、创建自己的模块和包 Python是一种功能强大的编程语言,它的模块和包系统是其强大功能的基石之一。在Python中,模块是包含Python定义和声明的文…

OpenSign 开源 PDF 电子签名解决方案

OpenSign 是一个开源文档电子签名解决方案&#xff0c;旨在为 DocuSign、PandaDoc、SignNow、Adobe Sign、Smartwaiver、SignRequest、HelloSign 和 Zoho Sign 等商业平台提供安全、可靠且免费的替代方案。 特性&#xff1a; 安全签名&#xff1a;利用最先进的加密算法来确保…

python df.apply()函数

DataFrame.apply(func, axis0, rawFalse, result_typeNone, args(), by_row‘compat’, kwargs) 沿df的轴应用函数 func:对每行或者每列应用的函数axis{0 or ‘index’, 1 or ‘columns’}, default 0 0是列&#xff0c;1是行 rawbool, default False result_type**{‘expand…

交货单过账/保存后增强点

增强点&#xff1a;交货单过账后的增强点->SE18->DELIVERY_PUBLISH 这个增强点是在VL02N修改/过账之后触发的 业务场景&#xff1a;需要在交货单过账之后自动开发票 sy-ucomm WABU_T "交货过账 "分子公司转采的单子需要同步开发票IF ( ( sy-tcode VL01N OR…

09 基变换

基变换 基本概念坐标转换詹妮弗坐标系→平面直角坐标系平面直角坐标系→詹妮弗坐标系转换对比基本原则 这是关于3Blue1Brown "线性代数的本质"的学习笔记。 基本概念 对于右手平面直角坐标系&#xff0c;一般用 i ⃗ \vec{i} i 和 j ⃗ \vec{j} j ​表示其基向量。…

PyCharm 无法登陆 Codeium 的解决方法

PyCharm 登陆 Codeium PyCharm 无法登陆 Codeium 的问题描述PyCharm 使用 token 登陆 Codeium PyCharm 无法登陆 Codeium 的问题描述 使用 PyCharm 登录 Codeium 时&#xff0c;单击 Login 无反应&#xff0c;单击侧边栏的 Codeium 图标也一直显示连接失败。 PyCharm 使用 to…