NOP 雪橇如何工作?

2024-04-23

我找不到回答这个问题的好来源。我知道 nop sled 是一种用于规避缓冲区溢出攻击中堆栈随机化的技术,但我无法理解它是如何工作的。

有什么简单的例子可以说明这种方法?

128 字节 nop sled 等术语是什么意思?


有些攻击包括使程序跳转到特定地址并从那里继续运行。注入的代码必须事先以某种方式加载到该确切位置。

堆栈随机化和其他运行时差异可能会使程序将跳转的地址无法预测,因此攻击者将 NOP 雪橇放置在大范围的内存中。如果程序跳转到雪橇中的任何位置,它将运行所有剩余的 NOP,不执行任何操作,然后将运行有效负载代码,就在雪橇旁边。

攻击者使用 NOP sled 的原因是为了使目标地址更大:代码可以跳转到 sled 中的任何位置,而不是精确地跳转到注入代码的开头。

128 字节的 NOP sled 只是一组 128 字节宽的 NOP 指令。

注意#1:NOP(无操作)是大多数(所有?)架构中可用的指令,除了占用内存和一些运行时间之外,不执行任何操作。

注意#2:在具有可变长度指令的体系结构中,NOP 指令通常只有一个字节长度,因此它可以用作方便的指令填充。不幸的是,这也使得 NOP 雪橇变得很容易。

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

NOP 雪橇如何工作? 的相关文章

  • 在动态事件处理程序中引用“this”

    在我的 myClass 类中 我使用 Reflection Emit 为 myClass 类成员之一动态编写事件处理程序 我已经成功地做到了这一点 现在 我想修改事件处理程序以调用 myClass 类中的实例方法之一 但是 我无法弄清楚如何
  • SharpZipLib - 将文件夹/目录添加到 zip 存档

    通过示例 我很好地掌握了如何提取 zip 文件 几乎在每个示例中 识别 ZipEntry 是否为目录的方法如下 string directoryName Path GetDirectoryName theEntry Name string
  • 如何从RichTextBox中获取显示的文本?

    如何获得显示的RichTextBox 中的文本 我的意思是 如果 RichTextBox 滚动到末尾 我只想接收那些对我来说可见的行 P S 获得第一个显示的字符串就足够了 您想使用 RichTextBox GetCharIndexFrom
  • 为什么 VB.NET 和 C# 中针对值检查 null 存在差异?

    In VB NET http en wikipedia org wiki Visual Basic NET有时候是这样的 Dim x As System Nullable Of Decimal Nothing Dim y As System
  • 将图像文件从网址复制到本地文件夹?

    我有该图像的网址 例如 http testsite com web abc jpg http testsite com web abc jpg 我想将该 URL 复制到 c images 中的本地文件夹中 而且当我将该文件复制到文件夹中时
  • 如何使用 MVVM 更新 WPF 中编辑的数据? [复制]

    这个问题在这里已经有答案了 我正在为聊天应用程序构建 UI 设计 在尝试更新所选联系人的消息时遇到问题 选择现有联系人 选择编辑选项 然后编辑其属性 例如用户名和图像 后 唯一进行的更改是联系人的用户名和图像 我仍然想更改 MessageM
  • 使用 OpenGL 着色器进行数学计算 (C++)

    我有一个矩阵 例如 100x100 尺寸 我需要对每个元素进行计算 matrix i j tt 8 5例如 我有一个巨大的矩阵 我想使用 OpenGL 着色器来实现该算法 我想使用着色器 例如 uniform float val unifo
  • Qt 计算和比较密码哈希

    目前正在 Qt 中为测验程序构建面向 Web 的身份验证服务 据我了解 在数据库中存储用户密码时 必须对其进行隐藏 以防落入坏人之手 流行的方法似乎是添加的过程Salt https en wikipedia org wiki Salt cr
  • 是否有像 gccxml 这样的用于生成包装器的 C 标头解析器工具?

    我需要为一种新的编程语言编写一些 C 标头包装器 并且想要类似 gccxml 的东西 但不完全依赖 gcc 以及它在 Windows 系统上带来的问题 只需要读C而不是C 只要有完整的文档记录 任何格式的输出都可以 Linux Solari
  • 在 MATLAB 中创建共享库

    一位研究人员在 MATLAB 中创建了一个小型仿真 我们希望其他人也能使用它 我的计划是进行模拟 清理一些东西并将其变成一组函数 然后我打算将其编译成C库并使用SWIG https en wikipedia org wiki SWIG创建一
  • 我可以仅在少数情况下关闭模拟吗

    我有一个始终使用模拟的应用程序 但是 当用户以管理员身份登录时 一些操作需要他们写入服务器本身 现在 如果这些用户在实际服务器上没有权限 有些用户没有 则不会让他们写入 我想做的是关闭几个命令的模拟 有没有办法做这样的事情 using Ho
  • “rep stos”x86 汇编指令序列有什么作用?

    我最近偶然发现了以下汇编指令序列 rep stos dword ptr edi For ecx重复 存储内容eax到哪里edi指向 递增或递减edi 取决于方向标志 每次 4 个字节 通常 这用于memset型操作 通常 该指令简单地写成r
  • 操纵 setter 以避免 null

    通常我们有 public string code get set 如果最终有人将代码设置为 null 我需要避免空引用异常 我尝试这个想法 有什么帮助吗 public string code get set if code null cod
  • 防止GDB中的PLT(过程链接表)断点

    在最新版本的 GDB 中 在库函数调用上设置断点会导致多个实际断点 调用过程链接表 PLT 实际的函数调用 这意味着当调用库函数时 我们每次都会经历两次中断 在以前的 GDB 版本中 只会创建 2 因此您只能得到一次中断 那么问题来了 是否
  • 错误左值需要作为赋值C++的左操作数

    整个程序基本上只允许用户移动光标 如果用户位于给定的坐标范围 2 2 内 则允许用户键入输入 我刚刚提供了一些我认为足以解决问题的代码 我不知道是什么导致了这个问题 你能解释一下为什么会发生吗 void goToXY int int 创建一
  • TPL 数据流块下游如何获取源生成的数据?

    我正在使用 TPL Dataflow 处理图像 我收到处理请求 从流中读取图像 应用多次转换 然后将生成的图像写入另一个流 Request gt Stream gt Image gt Image gt Stream 为此 我使用块 Buff
  • C++ [Windows] 可执行文件所在文件夹的路径[重复]

    这个问题在这里已经有答案了 我需要访问一些文件fstream在我的 Windows 上的 C 应用程序中 这些文件都位于我的exe文件所在文件夹的子文件夹中 获取当前可执行文件的文件夹路径的最简单且更重要的 最安全的方法是什么 Use 获取
  • 使用 Chrome 和 Selenium 设置 LocalStorage

    我正在尝试使用 OpenQA Selenium 和 Chrome 设置本地存储键和值 我认为这相当微不足道 但我似乎无法让它发挥作用 我对 C 很陌生 所以我可能错过了一些东西 无论如何 我有这个功能 public static void
  • 从有符号字符转换为无符号字符然后再转换回来?

    我正在使用 JNI 并有一个 jbyte 类型的数组 其中 jbyte 表示为有符号字符 即范围从 128 到 127 jbyte 表示图像像素 对于图像处理 我们通常希望像素分量的范围为0到255 因此 我想将jbyte值转换为0到255
  • 新的 .NET 6 控制台模板中的 C# 函数重载不起作用

    我在尝试重载该函数时遇到错误Print object in the 新的 NET 6 C 控制台应用程序模板 https learn microsoft com en us dotnet core tutorials top level t

随机推荐

  • Server.UrlEncode 和 Server.UrlDecode

    我不知道 为什么我们要使用Server UrlEncode Server UrlDecode 在 QueryString 中我们可以看到 URL 中的任何内容 那么为什么我们要对它们进行编码或解码呢 URLEncode 方法应用 URL 编
  • RStudio:使用存储在网络驱动器上的项目中的第一条指令意外调用“dir.create()”

    首先 对缺乏可重现的示例表示歉意 但我无法真正提供一个 因为我认为问题出在我的网络设置中 请将这个问题视为调试问题的帮助请求 在 RStudio 中打开存储在网络驱动器上的项目并运行第一条指令 无论是包加载还是什至a lt 1 我在控制台中
  • 如何避免R中as.numeric中的值四舍五入? [复制]

    这个问题在这里已经有答案了 list1 as numeric 133601182 5 133601183 它正在四舍五入值 您可以尝试以下吗 list1 as numeric 133601182 5 sprintf f list1 或者将输
  • tomcat.conf 位于哪里?

    我找不到我的tomcat conf 我看过 etc tomcat6 但它不在那里 也不在 usr share tomcat6 我在哪里可以找到tomcat conf在 Linux Ubuntu 中 Try sudo updatedb loc
  • data.table 样本,概率存储在列中

    我有一个数据表 其中存储在列中的离散分布的概率 例如 dt lt data table p1 c 0 5 0 25 0 1 p2 c 0 25 0 5 0 1 p3 c 0 25 0 25 0 8 我想创建一个新的随机变量列 使用同一行中的
  • 在Python中比较EC2实例的启动时间和当前时间

    我从 EC2 实例中提取 launch time 它返回一个如下所示的 unicode 字符串 2014 12 22T08 46 10 000Z 我使用 dateutil 解析器将其转换为日期时间 launch time parser pa
  • C# 相当于 Java 的 scn.nextInt( )

    在Java中 如果我们想从控制台读取用户输入 我们可以执行以下操作 Scanner scn new Scanner System in int x x scn nextInt Receive integer input 在 C 中 我假设我
  • 带有下划线的 Visual Studio Intellisense 方法不会出现

    我正在使用 VS2012 我的项目范围的 Javascript 函数命名空间之一的所有公开方法都以下划线开头 例如 var NameSpace aMethod function anotherMethod function 我创建了一个快速
  • 如何在 React Native 中使用 googleapis?

    目前 我正在尝试将 google Drive API v3 使用到 React Native 中 我以 google Drive API v3 为例Node js https developers google com drive v3 w
  • 检查 XML NODE 是否为 null

    无论如何 在到达这部分代码之前 是否要检查是否为空 tmpLabelData 0 m node Item CONTAINER NAME InnerText 有些 XML 有它 而有些则没有 我似乎找不到一个很好的方法来处理这些空值 Davi
  • 使用 window.external 将 javascript Date 对象传递给 C# WebBrowser 控件

    我能够调用 C 方法WebBrowser ObjectForScripting使用 JavaScriptwindow external from WebBrowserWinForms控制与传递string int bool等等 但是我不知道
  • 如何修复 JSF 页面内需要两次点击的问题? [复制]

    这个问题在这里已经有答案了 我在 JSF 页面中有一个 JSF 和
  • 系统地解决CSS中样式冲突

    我的网络项目中有一些来自不同来源的样式表 我想让他们和谐相处 我需要其中一些样式 另一些样式 有没有一种工具或方法可以系统地解决风格冲突 我尝试了 IE8 开发人员工具 是的 可以在每个元素级别查看冲突 但我有很多元素 所以如果我逐个元素地
  • C#中通过HttpWebRequest实现Digest认证

    有谁知道如何筛选使用摘要 http 身份验证的抓取网站 我使用这样的代码 var request HttpWebRequest WebRequest Create SiteUrl request Credentials new Networ
  • 无法隐藏 htaccess 文件

    我很难隐藏我的 htaccess 文件 我仔细检查以确保 httpd conf 中存在以下内容
  • 具有表面梯度的颜色 matplotlibplot_surface 命令

    我想将 surf 命令从MATLAB到plot surface命令中绘图库 我面临的挑战是使用时cmapplot surface 命令中的函数用渐变为表面着色 这里是matlab script Matlab Commands x 5 25
  • 如何通过字符串名称访问结构体属性?

    我有一个结构 typedef struct Tick double open double high double low double close double ema100 Tick 我想访问给定密钥的属性 Tick currentTi
  • 可以使用Visual Studio 2012构建ARM桌面程序吗?

    我正在使用 Visual Studio 2012 beta 我的桌面 win32 程序在 ARM 架构中编译得很好 升级到 Visual Studio 2012 RC 后 编译器无法工作并出现以下错误 不支持为 ARM 平台编译桌面应用程序
  • 如何删除和刷新 Google 缓存页面

    我对网站标题 元关键字和页面上的许多其他更改进行了更改 但谷歌仍然显示旧关键字 谷歌如何反映我所做的最新更改 任何人都可以帮我参考谷歌缓存吗 很抱歉告诉您这一点 但我认为没有人可以帮助您刷新 Google 缓存 您唯一能做的就是等待 直到
  • NOP 雪橇如何工作?

    我找不到回答这个问题的好来源 我知道 nop sled 是一种用于规避缓冲区溢出攻击中堆栈随机化的技术 但我无法理解它是如何工作的 有什么简单的例子可以说明这种方法 128 字节 nop sled 等术语是什么意思 有些攻击包括使程序跳转到