问题标签 [nop]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2641 浏览

buffer-overflow - 在 NOP sled 中计算地址

我目前正在阅读计算机系统简介:程序员的观点(http://www.amazon.com/Computer-Systems-Programmers-Perspective-2nd/dp/0136108040/ref=sr_1_2?s=books&ie=UTF8&qid=1421029641&sr=1 -2&keywords=introduction+to+computer+systems)并尝试了解阻止缓冲区溢出的方法。

我理解为什么在使用地址随机化以及如何编写漏洞利用时我们需要 NOP sleds,但我无法理解书中给出的与 NOP sleds 相关的地址计算。我将在这里引用它:-

(假设堆栈上程序的起始地址在 32 位系统上的范围为 2^23,在 64 位系统上为 2^32)

“如果我们设置一个 256 字节的 NOP sled,那么 n=2^23 上的随机化可以通过枚举 2^15 个起始地址来破解,这对于坚定的攻击者来说是完全可行的。对于 64 位的情况,尝试枚举 2^ 24 个地址更令人生畏。”

作者是如何分别得出 32 位和 64 位情况下的数字 2^15 和 2^24 的?一个解释会非常有帮助。

0 投票
2 回答
2527 浏览

bash - 什么都不做的管道

我在 AIX 机器上,需要一个在管道后使用时什么都不做的程序。

我会更准确。我需要这样的东西:

我尝试使用tee > /dev/null,但我不知道是否有其他更好的选择。

那么有人可以帮助制定更合适的计划tee吗?

提前致谢

0 投票
1 回答
3906 浏览

stack-overflow - Nop Sled,你能给我解释一下吗?

我一直在读这本书:黑客,剥削的艺术

在第 140 页,这本书解释了 Nop Slide:

我们将创建一个包含这些 NOP 指令的大型数组(或 sled)并将其放在 shellcode 之前;然后,如果 EIP 寄存器指向在 NOP sled 中找到的任何地址,它将在执行每条 NOP 指令时递增,一次一条,直到它最终到达 shellcode。这意味着只要返回地址被在 NOP sled 中找到的任何地址覆盖,EIP 寄存器就会顺着 sled 滑到 shellcode,它会正确执行。

但是使用这种技术,我们会用 0x90 覆盖返回地址,不是吗?EIP 将转到 0x90,导致段错误。那么,你能清楚地向我解释这个技术吗?谢谢 :)

0 投票
1 回答
126 浏览

c# - 未优化的 MSIL 中多余的 NOP 和分支

当我将以下代码编译为调试...

...编译器生成带有看似无用指令的奇怪字节码。例如,查看为属性的 getter 生成的内容MyProperty(用 反汇编ildasm.exe):

具体来说,nopatIL_0000在那里做什么?为什么编译器会突然生成这条无用的br.s指令IL_0008?为什么它会创建临时局部变量CS$1$0000

对于发布配置,指令集按预期生成:


编辑

我想我已经找到了一个问题的答案,为什么分支和临时局部变量存在于另一个问题中:这可能是为了在调试期间轻松设置断点。所以剩下的问题是为什么要生成nop指令。

0 投票
0 回答
2814 浏览

function - IDA 不将指令识别为代码?

我在我正在研究的 ELF (ARM) 游戏库中创建了一个新段(页面对齐,.text 段(纯代码))。整个段仅包括 NOP (0000A0E1)。然而,IDA 承认 NOP 为:

如果我按 C 将其转换为代码,它会在我按下它的每行显示一个 NOP。当我尝试创建一个函数时,它告诉我该函数在指定地址有未定义的指令/数据,并且不会让我这样做。此外,DCD 0xE1A00000s 的每一行都在 .plt 段中被引用,因为它们引用了段外的偏移量。即使在我把它变成代码之后也会发生这种情况。

有没有办法将整个段声明为代码,和/或放置一个这样做的段属性,可能解决函数问题?

0 投票
1 回答
1678 浏览

linux - nop 是一个忙碌的等待吗?

我想实现非忙等待机制,以在 linux 内核模块中创建以纳秒为单位的延迟。

现在我在看函数

但是https://www.kernel.org/doc/Documentation/timers/timers-howto.txt

这里提到了ndelay函数是一个忙等待机制。

但我想要非忙等待延迟。所以,我在考虑这样nop的linux内核模块:

我研究过 nop 需要一个周期来执行。因此,我将实施嵌套 nop 以获得所需的延迟。我的问题是——

通过使用 nop 我会以非忙等待的方式实现纳秒延迟吗?任何人都可以确认这一点吗?参考一些期刊和资源也会有所帮助。

0 投票
1 回答
1590 浏览

gcc - 为什么 x86-64 上的 GCC 在函数内插入 NOP?

给定以下 C 函数:

x86-64 上的 GCC 5 和 6 编译(gcc -c -g -o后跟objdump) 到:

GCC 是否有任何理由插入90/ nopat1f或者这只是在未打开优化时可能发生的副作用?

注意:这个问题与大多数其他问题不同,因为它询问nop的是函数体内部,而不是外部填充。

测试的编译器版本:GCC Debian 5.3.1-14 (5.3.1) 和 Debian 6-20160313-1 (6.0.0)

0 投票
2 回答
364 浏览

c - 我的 CPU 可以在每个 CPU 周期执行多个 NOP 吗?

我写了一个简单的程序,它在一个循环中执行一堆 NOP 指令,令我惊讶的是它每秒执行大约 10600000000 条,或大约 10Ghz,而我的 CPU 只有 2.2GHz。

这怎么可能?CPU是把它们当作一个单一的mega-NOP,还是我刚刚发现“指令级并行”是什么意思?

每秒指令的更好度量是什么?执行添加指令仅达到 414900000/s,是我的 CPU 报告的 bogomips 的十分之一:4390.03

C代码:

编译的程序集:

0 投票
0 回答
156 浏览

javascript - 执行需要很长时间(毫秒)的 NOP 的 JavaScript

假设我被迫以这种野蛮的方式睡觉。

我不能使用事件(例如 setTimeout),它不在问题的约束范围内,并且之前已经深入讨论过这样做。

我只想知道,你能想出我可以插进去的东西吗?最好是需要很长时间才能运行的单个语句(也许需要时间来 malloc 一个巨大的区域?)

花费大量的 CPU 时间是可以的,即使它在技术上不是 NOP。此外,睡过头也没问题。冻结浏览器不是问题。我最感兴趣的是最小化在睡眠期间运行的语句数量,所以基本上:执行时间最长的单个语句并没有真正“做”任何事情。

0 投票
3 回答
7562 浏览

visual-studio - “nop dword ptr [rax+rax]”x64 汇编指令有什么作用?

我试图了解x64编译器完成的程序集优化。

我在 Windows 8.1 上Release使用IDE编译了一个小型 C++ 项目。Visual Studio 2008 SP1

其中一行包含以下汇编代码:

这是一个屏幕截图:

在此处输入图像描述

据我所知nop,它本身是do nothing,但我从未见过这样的操作数。

有人可以解释它的作用吗?