CSAPP BOMB LAB part2

2023-11-07 18:01
文章标签 part2 lab csapp bomb

本文主要是介绍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

这篇关于CSAPP BOMB LAB part2的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/365363

相关文章

JSP的增删改查part2

增加显示数据库表格cdsn的功能 1. 》》对CdsnDao接口和方法,CdsnService接口和方法进行处理,并增加CdsnServlet用于对新建展示页面进行处理 对cdsnDao接口和方法增加 》》接口 //获取cdsn用户数据列表 public List<cdsn> getCdsnList();》》CdsnDaoImpl增加内容//获得数据库所有数据publ

JavaScript基础part2(完结)

JavaScript基础 函数 语法: function 函数名(形参表){代码} 代码中加return语句则可以返回值,默认返回值为undefined 两个相同的函数,后面会覆盖前面 命名规则: 前缀为动词 传参注意事项 实参个数 > 形参个数 ==> 没用上的实参被忽略实参个数 < 形参个数 ==> 没赋予值得形参为undefined 作用域 全局变量在函数体外定义局

【校招面经】数据库 part2

七、数据库范式 1. 1NF:不存在可以分的属性 2. 2NF:每一个非主属性依赖于关系模型的某个候选键 3. 3NF:不存在非主属性的传递依赖于关系模型的侯选建 4. BCNF:每个属性都不存在传递依赖于关系模型的侯选建 1NF: 字段是最小的的单元不可再分 2NF:满足1NF,表中的字段必须完全依赖于全部主键而非部分主键 (一般我们都会做到) 3NF:满足2NF,非主键外的所有字

【校招面经】统计与概率基础 part2

十六、对偶问题 线性规划有一个有趣的特性,就是任何一个求极大的问题都有一个与其匹配的求极小的线性规划问题。 例;原问题为 MAX X=8*Z1+10*Z2+2*Z3 s.t. 2*Z1+1*Z2+3*Z3 〈=70 4*Z1+2*Z2+2*Z3 〈=80 3*Z1+ 1*Z3 〈=15 2*Z1+2*Z2 〈=50 Z1,Z2,Z3 〉=0 Z则其对偶问题为 MIN =70*Y

[学习笔记]《CSAPP》深入理解计算机系统 - Chapter 3 程序的机器级表示

总结一些第三章的一些关键信息 Chapter 3 程序的机器级表示结构 updating... Chapter 3 程序的机器级表示 局部变量通常保存在寄存器中,而不是内存中,访问寄存器比内存快的多. 有些时候,局部数据必须存放在内存中, 寄存器不足够存放所有的本地数据对一个局部变量使用地址运算符 &, 因此必须能够为它产生一个地址某些局部变量是数组或结构,因此必须能够通过数组或

sqli-lab靶场学习(一)——Less1

前言 最近一段时间想切入安全领域,因为本身有做数据库运维工作,就打算从sql注入方向切入。而sql注入除了学习日常书本上的概念外,需要有个实践的环境,刚好看到sqli-lab这个靶场,就打算先用这个来学习。 安装部署 网上很多关于安装部署的教程,很简单。本人是下载PHPStudy进行部署的。由于sqli-lab是用php5版本,现在很多一体化环境(我用wamp)的php都是7版本。我试过

DL/T645-2007_Part2(参变量数据标识编码表)

数据类型分为7类:电能量、最大需量及发生时间、变量、事件记录、参变量、冻结量、负荷记录。 数据标识数据格式 数据 长度  (字节)单位功能数据项名称DI₃DI₂DI₁DI₀读写04 00 01 01020304050607YYMMDDWWhhmm55NNNNXXXXYYNM00hhmmYYNMDDhhmm  4  3  1  2  5  5年月日星期时分秒分分毫秒年月日时分年月日时分日期及星期(其

会议记录|MAS Lab 年度组会记录

前言:本篇博客记录 20240831 MAS Lab 第一次大组会要点。 “预测未来最好的方式就是创造它” —— 面向对象之父 Alan Kay 张老师提及 The MIT Media Lab (中国多媒体大会上了解到的这个实验室),用技术带动产业发展、创造生态。 产业布局 未来产业的新赛道将是各领域与AI的强强联合 国家人工智能学院……京津冀:基础研究长三角:商业模式

MIT 6.5940 EfficientML.ai Fall 2023: Lab 1 Pruning

EfficientML.ai Lec 3 - Pruning and Sparsity (Part I) MIT 6.5940, Fall 2023, Zoom 本文是EfficientML.ai Fall 2023课程作业1练习答案,在本次练习里将会对经典的分类神经网络进行剪枝处理,减少模型大小和延迟。The goals of this assignment are as fo

CSAPP Data Lab

CSAPP 的第一个 Lab,对应知识点为书中的第 2 章(信息的表示与处理),要求使用受限制的运算符和表达式实现一些位操作。主要分为两个部分:整数部分和浮点数部分。其中整数部分限制较多,比较偏重技巧性,部分题个人认为很有难度。而浮点数部分则比较基础,主要考察对 IEEE 754 标准的熟悉程度,代码较长,但思路相对简单。 bitXor 思路 使用德-摩根定律进行推导,推导过程如下: 代