计算机系统基础课程实验课bomb--phase_5

2023-11-19

首先还是栈指针自减和%rbx入栈
而后将第一个参数的值放入%rbx
再有在%eax中设置了一个哨兵防止越界
而后将%rax中的值放入0x18(%rsp)
接着%eax ^= %eax
在这里插入图片描述
然后调用函数<string_length>,将返回值与6比较,如果字符串的长度为6就跳转,否则就爆炸

跳转之后将0放入%eax,再无条件跳转至0x40108b执行
movzbl (%rbx,%rax,1),%ecx
因为%rax里面为0,所以%ecx=%rbx等于第一个参数即输入值
然后的意思应该是把字符串的字符从头将输入值的第一个字节放入栈指针,再放入(%rdx)并与0xf做与运算,即取%edx的低四位
总结运算,就是把输入值的第%rax个偏移位的字符的低4位放入%edx,而%rbx存放的是我们输入的字符串的地址,然后%rax是索引,每次从我们输入的字符串取出一个字符后,只取最低4位存放在%edx中,然后这个%edx被用做了从长字符串取字符的索引
在这里插入图片描述

下面两行中,将地址0x4024b0+%rdx中的一个字节放入%edx的低16位中。然后将这16位复制到了%rsp+0x10+%rax的位置中
随后%rax+=1,与6作比较,不等于6就循环执行上面运算操作,即遍历整个字符串执行上面的操作

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

计算机系统基础课程实验课bomb--phase_5 的相关文章

随机推荐

  • 微信小程序实现点击左侧导航栏自动定位到对应的位置

    我要实现的效果是点击左侧导航栏 右侧区域会自动滚动到相应的位置显示 其中当选择品牌的时候 右侧是有索引栏的 效果图如下 刚开始的时候我是用微信小程序自带的组件scroll view是实现点击左侧导航栏的跳转功能 其中scroll into
  • C++ STL- 常用容器deque

    1 1 deque容器基本概念 功能 双端数组 可以对头端进行插入删除操作 deque与vector区别 vector对于头部的插入删除效率低 数据量越大 效率越低 deque相对而言 对头部的插入删除速度会比vector快 vector访
  • Xilinx 7系列芯片选型手册的资源量怎么看

    推荐阅读AMD官方文档 该文档介绍了各种资源的具体含义 链接 7 Series FPGAs Configurable Logic Block User Guide UG474 以XC7A35T为例 Logic Cells 逻辑单元 对于7系
  • QT new模态对话框

    1 如果父窗口是new出的 则子窗口如果用堆栈的方式 Dlg dlg 创建 则会出现QWSLock up down Invalid argument错误 这实际上QT4 8的一个Bug 如果不想重新编译Qt的话 可以采用以下方式临时避免一下
  • VSC/SMC(十六)——自适应鲁棒滑模控制

    目录 1 参数不定和扰动不定但有界的系统 2 滑模控制自适应律设计 2 1控制律设计总结 3 仿真分析 3 1 PD控制 3 2普通自适应律 3 3映射自适应律 3 4总结 4学习问题 1 参数不定和扰动不定但有界的系统 其中 2 滑模控制
  • lua json 库

    1 luajson GitHub mpx lua cjson Lua CJSON is a fast JSON encoding parsing module for Lua clone 源码 cd lua cjson 2 1 0 make
  • typescripe中的ajax和axios(一)

    typescript是基于JavaScript的 JavaScript中前端请求到后端使用的是Ajax Asynchronous JavaScript and XML 而在typescript中请求使用的axios axios是通过prom
  • ovirt节点添加windows虚拟机

    1 新建windows7虚拟机 设置Windows7镜像引导 2 启动起来后换盘安装驱动 换的是驱动盘 3 驱动安装成功后分区 再把系统盘换回来 开始装系统 4 等待装系统即可
  • 【Linux & IO多路转接】——epoll详解

    目录 一 epoll简介 二 epoll相关系统的调用 1 epoll create 2 epoll ctl 3 epoll wait 三 epoll工作方式 1 水平触发模式 level triggered LT 2 边缘触发模式 edg
  • C++征途 --- List链表容器

    第一部分 基础概念 上面这个模型的是一个单向链表 优点 1 链表增加和删除节点的时候不需要进行vector数组那样的增完后进行后移 也不需要删完后前移 当它增加一个节点的时候 只需要将它插入的位置的上一个节点的指针域中的指针指向增加的节点
  • 六、03【Java 多线程】之Java线程

    Java 创建线程的方式 Java创建线程有四种方式 继承 Thread 类 实现 Runnable 接口 实现 Callable 接口 使用 Executors 工具类创建线程池 1 继承 Thread 类 创建一个类继承 Thread
  • shell习题-被3整除

    1 要求 写一个脚本 计算100以内所有能被3整除的正整数的和 2 脚本答案 root liang 2018 06 23 vim 2018 06 23 sh bin bashfor i in seq 100 do Num i 3 if Nu
  • Vue踩坑记录(一)——vue,data属性为什么使用了_或$开头却会提示报错?

    我们先来看一个简单的例子
  • cityscapes和Mapillary Vistas两种不同分割数据集的label映射

    众所周知 cs一共有19类 但是Mapillary Vistas有很多类 在做domain adaption的时候 往往需要将二者的类别做一个映射 如下表 同时发现Mapillary Vistas这个数据集下载下来之后 对应的label咋i
  • malloc与free的底层实现

    1本节引言 内存管理内幕 Linux内存管理 Malloc 本文引用了下面这篇文章 读完下面 应该读下上面两篇文章 其中 内存管理内幕 提供了一个简单的malloc free实现版本 看看它的free设计 相信有足够的吸引力 gnu fre
  • Linux基础——Bash

    Bash Bash是什么 查看Linux中的Shell Bash的优点 命令记忆功能 补全功能 命令别名 工作 前景背景控制 脚本 通配符 内置命令 Bash环境配置流程 Login Shell Non login shell Bash是什
  • C# 实现一个简单的图书管理系统(无数据库)新手教程1

    源码在vs2005中测试可以运行 源码如下 using System class Card private string title author private int total public Card title author tot
  • vm使用PE安装系统(1)

    VMware虚拟机使用PE安装系统有什么好处 可以不受虚拟机安装系统文件格式的限制 使用PE可以安装ESD GHO WIM ISO等等系统格式 第一步解压U启动制作软件的压缩包 软件包使用的是IT天空的优启通可以自行网络查找 打开软件后 选
  • Java知识习题汇总【入门基础篇】

    Java常考 Java语言的主要贡献者是James Gosling Java源文件名必须与程序中的public类名匹配 Java源代码必须以 java扩展名 Java源文件中可以有多个类 最多只能有一个public类 也可以没有public
  • 计算机系统基础课程实验课bomb--phase_5

    首先还是栈指针自减和 rbx入栈 而后将第一个参数的值放入 rbx 再有在 eax中设置了一个哨兵防止越界 而后将 rax中的值放入0x18 rsp 接着 eax eax 然后调用函数