问题标签 [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.
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 的?一个解释会非常有帮助。
bash - 什么都不做的管道
我在 AIX 机器上,需要一个在管道后使用时什么都不做的程序。
我会更准确。我需要这样的东西:
我尝试使用tee > /dev/null
,但我不知道是否有其他更好的选择。
那么有人可以帮助制定更合适的计划tee
吗?
提前致谢
stack-overflow - Nop Sled,你能给我解释一下吗?
我一直在读这本书:黑客,剥削的艺术
在第 140 页,这本书解释了 Nop Slide:
我们将创建一个包含这些 NOP 指令的大型数组(或 sled)并将其放在 shellcode 之前;然后,如果 EIP 寄存器指向在 NOP sled 中找到的任何地址,它将在执行每条 NOP 指令时递增,一次一条,直到它最终到达 shellcode。这意味着只要返回地址被在 NOP sled 中找到的任何地址覆盖,EIP 寄存器就会顺着 sled 滑到 shellcode,它会正确执行。
但是使用这种技术,我们会用 0x90 覆盖返回地址,不是吗?EIP 将转到 0x90,导致段错误。那么,你能清楚地向我解释这个技术吗?谢谢 :)
c# - 未优化的 MSIL 中多余的 NOP 和分支
当我将以下代码编译为调试...
...编译器生成带有看似无用指令的奇怪字节码。例如,查看为属性的 getter 生成的内容MyProperty
(用 反汇编ildasm.exe
):
具体来说,nop
atIL_0000
在那里做什么?为什么编译器会突然生成这条无用的br.s
指令IL_0008
?为什么它会创建临时局部变量CS$1$0000
?
对于发布配置,指令集按预期生成:
编辑
我想我已经找到了一个问题的答案,为什么分支和临时局部变量存在于另一个问题中:这可能是为了在调试期间轻松设置断点。所以剩下的问题是为什么要生成nop
指令。
function - IDA 不将指令识别为代码?
我在我正在研究的 ELF (ARM) 游戏库中创建了一个新段(页面对齐,.text 段(纯代码))。整个段仅包括 NOP (0000A0E1)。然而,IDA 承认 NOP 为:
如果我按 C 将其转换为代码,它会在我按下它的每行显示一个 NOP。当我尝试创建一个函数时,它告诉我该函数在指定地址有未定义的指令/数据,并且不会让我这样做。此外,DCD 0xE1A00000s 的每一行都在 .plt 段中被引用,因为它们引用了段外的偏移量。即使在我把它变成代码之后也会发生这种情况。
有没有办法将整个段声明为代码,和/或放置一个这样做的段属性,可能解决函数问题?
linux - nop 是一个忙碌的等待吗?
我想实现非忙等待机制,以在 linux 内核模块中创建以纳秒为单位的延迟。
现在我在看函数
但是https://www.kernel.org/doc/Documentation/timers/timers-howto.txt
这里提到了ndelay函数是一个忙等待机制。
但我想要非忙等待延迟。所以,我在考虑这样nop
的linux内核模块:
我研究过 nop 需要一个周期来执行。因此,我将实施嵌套 nop 以获得所需的延迟。我的问题是——
通过使用 nop 我会以非忙等待的方式实现纳秒延迟吗?任何人都可以确认这一点吗?参考一些期刊和资源也会有所帮助。
gcc - 为什么 x86-64 上的 GCC 在函数内插入 NOP?
给定以下 C 函数:
x86-64 上的 GCC 5 和 6 编译(gcc -c -g -o
后跟objdump
) 到:
GCC 是否有任何理由插入90
/ nop
at1f
或者这只是在未打开优化时可能发生的副作用?
注意:这个问题与大多数其他问题不同,因为它询问nop
的是函数体内部,而不是外部填充。
测试的编译器版本:GCC Debian 5.3.1-14 (5.3.1) 和 Debian 6-20160313-1 (6.0.0)
c - 我的 CPU 可以在每个 CPU 周期执行多个 NOP 吗?
我写了一个简单的程序,它在一个循环中执行一堆 NOP 指令,令我惊讶的是它每秒执行大约 10600000000 条,或大约 10Ghz,而我的 CPU 只有 2.2GHz。
这怎么可能?CPU是把它们当作一个单一的mega-NOP,还是我刚刚发现“指令级并行”是什么意思?
每秒指令的更好度量是什么?执行添加指令仅达到 414900000/s,是我的 CPU 报告的 bogomips 的十分之一:4390.03
C代码:
编译的程序集:
javascript - 执行需要很长时间(毫秒)的 NOP 的 JavaScript
假设我被迫以这种野蛮的方式睡觉。
我不能使用事件(例如 setTimeout),它不在问题的约束范围内,并且之前已经深入讨论过这样做。
我只想知道,你能想出我可以插进去的东西吗?最好是需要很长时间才能运行的单个语句(也许需要时间来 malloc 一个巨大的区域?)
花费大量的 CPU 时间是可以的,即使它在技术上不是 NOP。此外,睡过头也没问题。冻结浏览器不是问题。我最感兴趣的是最小化在睡眠期间运行的语句数量,所以基本上:执行时间最长的单个语句并没有真正“做”任何事情。