问题标签 [x86]

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 投票
7 回答
43134 浏览

javascript - 这个 milw0rm 堆喷射漏洞是如何工作的?

我通常不难阅读 JavaScript 代码,但对于这个我无法弄清楚其中的逻辑。该代码来自于 4 天前发布的漏洞利用。你可以在milw0rm找到它。

这是代码:

这就是我相信它的作用,我希望你能帮助我解决我误解的部分。

该变量shellcode包含打开calc.exe. 我不明白他们是如何找到那个奇怪的字符串的。任何的想法?

第二件事是变量spray。我不明白这个奇怪的循环。

第三件事是memory从未在任何地方使用过的变量。他们为什么要创造它?

最后一件事:XML 标签在页面中的作用是什么?


目前我有很好的答案,但大多是非常笼统的。我想要更多关于代码价值的解释。一个例子是unescape("%u0a0a%u0a0a");。这是什么意思?循环也一样:为什么开发人员写:length < 0xd0000?我想更深入的了解,而不仅仅是这个代码的理论。

0 投票
2 回答
981 浏览

x86 - 进程内存中的 Unicode 字符串

处理内存中 unicode 字符串的首选格式是什么?为什么?

我正在通过为其生成可执行文件映像来实现编程语言。显然,一个工作的编程语言实现需要一个处理字符串的协议。

我考虑过使用动态数组作为字符串的基础,因为它们实现起来非常简单,并且对于短字符串非常有效。当以这种方式使用字符串时,我只是不知道字符的最佳可能格式。

0 投票
1 回答
174 浏览

x86 - 与 smalltalk 对象的动态链接

我计划在我的 smalltalk 方言中实现动态链接。问题在于让消息传递与动态链接一起工作。

消息传递本身就是这么简单:将带有选择器的消息发送给对象,对象从它的协议中选择与选择器匹配的方法,然后处理与消息绑定的数据并返回结果。

在基于图像的实现中,可以以非常直接的方式实现消息传递 - 您的消息选择器可以只是从全局符号表转换而来的整数,您的协议可以只是其中包含整数和地址的哈希表。假设它全部用该全局符号表编译成一个大图像。

在动态链接中,您不能假设符号表指向正确的选择器。您可以使用字符串作为选择器来解决问题,但您注定语言会变慢。

有一种方法,它涉及复制协议和选择器表,以便进程正确地重新定位它们。但这听起来像是一项相当多的工作。

有没有更好的方法来解决这个问题?另外,动态链接值得吗?如何实现选择器和协议的重定位?

0 投票
5 回答
3611 浏览

linux - 如何在多线程环境中实现垃圾回收?

我应该如何在由多个线程或进程组成的程序中执行垃圾收集?

如何从每个线程和进程中扫描堆栈?

每个进程都需要自己的垃圾收集例程吗?在与实际程序不同的线程/进程中运行垃圾收集器是个好主意吗?

0 投票
2 回答
1810 浏览

c - 在 AT&T IA-32 Linux Assembler (gas) 上拆分字符串

假设我想打破 .asciz 字符串 1101011 并得到它的第一个。我该怎么做?上面的代码不起作用,它打印 49 或其他东西。

0 投票
1 回答
781 浏览

linux - 在 Linux IA-32 汇编器(gas)上创建子字符串

我想从我的原始(字符串)中创建一个包含 3 个 asciz 字符的子字符串(迷你字符串)。这东西在运行时没有打印,所以我不知道我到底在做什么。为什么不打印?我是否正确创建了迷你字符串?

0 投票
1 回答
618 浏览

linux - 写保护的虚拟页面,catch write

是否存在一种方法可以捕获写入受写保护的页面?

我计划做一个类似自我的对象系统,您可以在其中复制对象以实例化它。(因为与其他的相比,这听起来简单而紧凑)显然,为此目的创建的对象应该以某种方式进行写保护。我已经看到有一种方法可以在 ELF 中的程序头中标记写保护的内容。(RE、RWE、RW 标志)

这是否提供写保护?我记得它应该引发一个段错误,这是真的吗?如何将写入捕获到写保护页面。这是实现我想要的东西的好方法吗?还有更好的方法吗?

0 投票
8 回答
43022 浏览

c - 在 C 中将 32 位应用程序转换为 64 位应用程序

我目前正在用 C 语言将 32 位应用程序转换为 64 位应用程序。该应用程序目前正在使用 x86 架构(Windows、osx、Unix、Linux)。因此,在开始编码之前,我想知道在转换应用程序时需要考虑什么。

0 投票
3 回答
724 浏览

assembly - ASM 打印所有已打印的值

我有一个显示日期(日、月、年)和时间(小时、分钟、秒)的 ASM 脚本。

这会在 DOS 框上打印当前日期时间。问题是,它是静态的。我想要做的是使其动态化,这意味着我必须将新值写入当前值在屏幕上的确切位置。你如何在 ASM 中做到这一点?

我根本没有任何线索,谷歌也不是我的朋友。

0 投票
3 回答
3829 浏览

x86 - SMP多线程如何共享内存和中断?

我正在为我的内核做一些输入缓冲区的工作,我有一些问题。在双核机器上,我知道可以同时运行多个“进程”。我不知道操作系统和各个程序如何保护数据冲突。

关于这个话题,我想知道两件事:

(1) 中断发生在哪里?它们是否保证发生在一个核心上而不是另一个核心上,这是否可以用来确保一个核心上的实时操作不会被另一个核心上可以处理的文件 IO 中断?(我从逻辑上假设中断会发生在第一个核心上,但这总是正确的,你怎么知道?或者也许每个核心都有自己的中断设置?这不会导致每个核心都发生中断吗?核心可以同时对同一个中断做出反应,可能以不同的方式?)

(2) 双核处理器如何处理操作码内存冲突?如果一个核心正在读取内存中的地址,而另一个核心正在写入内存中的同一地址,会发生什么?是抛出异常,还是读取了值?(我假设写入会以任何一种方式工作。)如果读取了一个值,是否保证它是碰撞时的旧值或新值?

我知道理想情况下应该编写程序以避免这些并发症,但操作系统当然不能指望这一点,并且需要能够处理此类事件而不会自己窒息。