问题标签 [loader]

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

windows - 任何用于了解 Windows 中运行进程的布局(段)的工具?

我一直很好奇

  1. 该过程在内存中的外观如何?
  2. 它有哪些不同的部分(部分)?
  3. 程序(在磁盘上)和进程(在内存中)究竟是如何相关的?

我以前的问题:有关可执行程序(进程)的内存布局的更多信息

在我的探索中,我终于找到了答案。我发现这篇出色的文章清除了我的大部分疑问:http ://www.linuxforums.org/articles/understanding-elf-using-readelf-and-objdump_125.html

在上面的文章中,作者展示了如何获取进程的不同段(LINUX)并将其与相应的 ELF 文件进行比较。我在这里引用本节:

想看看流程段的真实布局吗?我们可以使用 /proc//maps 文件来显示它。是我们要观察的进程的PID。在我们继续之前,我们有一个小问题。我们的测试程序运行得如此之快,以至于在我们转储相关的 /proc 条目之前它就结束了。我使用 gdb 来解决这个问题。您可以使用另一种技巧,例如在调用 return() 之前插入 sleep()。

在控制台(或终端模拟器,如 xterm)中:

按住这里,打开另一个控制台,找出程序“test”的PID。如果您想要快速的方法,请输入:

您将看到如下输出(您可能会得到不同的输出):

注意:我在每一行添加数字作为参考。

回到 gdb,输入:

(gdb) q

因此,我们总共看到 12 个段(也称为虚拟内存区--VMA)。

但我想了解 Windows Process & PE 文件格式。

  1. 任何用于获取 Windows 中运行进程的布局(段)的工具?
  2. 任何其他好的资源来学习更多关于这个主题?

编辑:

有没有好的文章显示 PE 文件sections和 VA之间的映射segments

0 投票
6 回答
1860 浏览

windows - 是否可以更换操作系统的加载程序?有什么方法可以控制加载器吗?

我只是想知道是否可以替换操作系统的加载程序(可执行程序加载程序而不是引导加载程序)(Windows 是我的选择)。是否有任何可用的第三方加载程序可以修补默认加载程序。

有什么方法可以让我获得对 OS Loader 的控制权?我的意思是,我希望它正在做的事情对我来说是可见的(每一步)。

如果你问我为什么要这样做,For learning purposes.

0 投票
2 回答
51013 浏览

assembly - VA(虚拟地址)和 RVA(相对虚拟地址)

作为链接器输入的文件称为Object File。链接器生成一个Image 文件,该文件又用作加载程序的输入。

Microsoft Portable Executable and Common Object File Format Specification ”的简介

RVA(相对虚拟地址)。在图像文件中,项目加载到内存后的地址,减去图像文件的基地址。一个项目的 RVA 几乎总是不同于它在磁盘上文件中的位置(文件指针)。

在目标文件中,RVA 的意义不大,因为没有分配内存位置。在这种情况下,RVA 将是一个段内的地址(稍后在此表中描述),稍后在链接期间对其应用重定位。为简单起见,编译器只需将每个部分中的第一个 RVA 设置为零。

VA(虚拟地址)。与 RVA 相同,只是不减去图像文件的基地址。该地址被称为“VA”,因为 Windows 为每个进程创建了一个不同的 VA 空间,独立于物理内存。对于几乎所有目的,一个 VA 应该被认为只是一个地址。VA 不像 RVA 那样可预测,因为加载器可能不会在其首选位置加载图像。

即使读了这篇文章,我仍然不明白。我有很多问题。任何人都可以用实际的方式解释它。Object File请按照说明遵守&的术语Image File

我所知道的地址是

  • 在目标文件和图像文件中,我们都不知道确切的内存位置,所以,
  • 汇编器在生成目标文件时计算相对于部分.data&的地址.text(对于函数名称)。
  • 将多个目标文件作为输入的链接器会生成一个图像文件。在生成时,它首先合并每个目标文件的所有部分,并在合并时重新计算相对于每个部分的地址偏移量。而且,没有什么比全局偏移量更好的了。

如果我所知道的有什么不对的地方,请纠正我。

编辑:

在阅读了弗朗西斯的回答后,我很清楚什么是物理地址、VA 和 RVA 以及它们之间的关系。

所有变量和方法的 RVA 必须在重定位期间由链接器计算。那么,(方法/变量的 RVA 值)==(它与文件开头的偏移量)?一定是真的。但令人惊讶的是,它不是。为什么这样?

我通过使用PEView检查 了这一点c:\WINDOWS\system32\kernel32.dll,发现:

  1. RVA 和 FileOffset 直到 Sections 的开头都是相同的。(.text是这个 dll 中的第一部分)。
  2. .textthrough的开始.data.rsrc到最后一个部分的最后一个字节 ( .reloc) RVA 和 FileOffset 是不同的。&第一部分的第一个字节的 RVA 也“总是”显示为0x1000
  3. 有趣的是,每个部分的字节在 FileOffset 中是连续的。我的意思是另一个部分从一个部分的最后一个字节的下一个字节开始。但是,如果我在 RVA 中看到同样的情况,那么这就是一节最后一个字节的 RVA 和下一节的第一个字节之间的巨大差距。

我猜:

  1. 所有,在第一个(此处)部分之前的数据字节.text实际上“没有”加载到进程的 VA 空间中,这些数据字节仅用于定位和描述这些部分。它们可以称为“元节数据”。

    因为它们没有加载到进程的 VA 空间中。术语 RVA 的使用也毫无意义,这就是RVA == FileOffset这些字节的原因。

  2. 自从,

    • RVA 术语仅对将实际加载到 VA 空间的字节有效。
    • .text, .data, .rsrc,的字节.reloc就是这样的字节。
    • 0x00000PEView 软件不是从 RVA开始,而是从0x1000.
  3. 我不明白为什么第三次观察。我无法解释。

0 投票
2 回答
1243 浏览

apache-flex - 装载机阵列?

如何创建一组加载器?

大图:

我在 flex 中编写了一个映射程序。我想更改我的映射程序,以便我需要做的就是放入一个新的 xml 文件,而不是进入我的 flex 文件并添加我需要的确切数量的项目加载器。所以我想我正在寻找一组可以加载我的 XML 文件中的图像文件的加载器。

xml 文件示例:

这个 xml 有时可以有 2000 个位置。

0 投票
1 回答
519 浏览

ajax - google.loader.ClientLocation:它为美国用户返回的“区域”是什么?

我似乎在任何地方都找不到此信息:当您通过 Google AJAX API 获取有关美国用户的地理信息时,google.loader.ClientLocation.address.region 是否返回完整的州名(例如“加利福尼亚”)或缩写(“CA”)?

如果您在美国: http://www.thewhyandthehow.com/javascript-geolocation-using-google-ajax-apis/上的“Region”会得到什么结果(在以“I”开头的行中)在这里加了一个”)?

提前致谢。

0 投票
3 回答
10311 浏览

actionscript-3 - AS3 停止外部 swf

嗨,我正在将外部 swf 加载到 MovieClip 中,我希望它停止,直到我选择播放。目前它在加载时立即播放。

所以我尝试在影片剪辑中添加一个 Event.ENTER_FRAME 并将其停在那里,这将停止但它会播放第一帧。有没有办法让它在加载时保持停止,直到我选择播放?

0 投票
1 回答
1592 浏览

linker - 什么是二进制格式的“对齐”字段?为什么需要它?

ELF文件格式中,我们在aka中有一个Alignment字段。Segment Header TableProgram Header Table

在 Windows PE 文件格式的情况下,他们将其提升到下一个级别,Section 有两个对齐值,一个在磁盘文件中,另一个在内存中。PE 文件头指定了这两个值。

我对这种对齐方式一无所知。我们需要它做什么?如何以及在哪里使用它?同样,我不知道二进制文件格式上下文中的对齐是什么,但我们为什么需要它?

0 投票
2 回答
338 浏览

jquery - 带有字体 JS 的 div 不显示在可弹出的内容 div 中

我为我的内容div 制作了一个 jQuery 加载器。但是它不再显示我的div class="typeface"了。这意味着我不能使用不同的字体。内容 div 的其余部分正常工作。谁能帮我?

Javascript代码:(用于元素)

HTML 代码:

0 投票
2 回答
17102 浏览

assembly - 每个进程的内核虚拟内存包含什么?

当说 3 个程序(可执行文件)加载到内存中时,布局可能如下所示:

替代文字 http://img97.imageshack.us/img97/3460/processesm.jpg

我有以下问题:

  1. 虚拟内存的概念是否仅限于用户进程?因为,我想知道操作系统内核、驱动程序在哪里?它的内存布局如何?我想了解更多关于内核端内存的信息。我知道它的操作系统特定于你的选择(windows/linux)。

  2. 每个进程的虚拟内存的概念是基于吗?我的意思是说 4GB 的 process1 + 4GB 的 process2 + 4GB 的 process3 = 12GB 的虚拟内存(对于所有进程)是否正确。这听起来不对。或者从总共 4GB 的空间中,1GB 被内核占用,其余 3GB 被所有进程共享。

  3. 他们说,在 4GB 地址空间中的 32 位机器上。其中一半(或最近的 1GB)被内核占用。我可以在此图中看到“内核虚拟内存”占用 0xc0000000 - 0xffffffff (= 1 GB)。他们在谈论这个吗?或者是别的什么?只是想确认一下。

  4. 这些过程中的每一个究竟Kernel Virtual Memory包含什么?它的布局是怎样的?

  5. 当我们做 IPC 时,我们谈论共享内存。我没有看到这些进程之间共享任何内存。它在哪里生活?

  6. 资源(文件、windows 中的注册表)对所有进程都是全局的。因此,资源/文件句柄表必须在某个全局空间中。那会在哪个区域?

  7. 我在哪里可以了解更多关于内核方面的信息。

0 投票
1 回答
7718 浏览

actionscript-3 - AS3:设置加载的 swf 的大小

我正在使用 Loader 将外部 swf 加载到我的 swf 中,并使用 event.target.content 将加载的 swf 添加到舞台。

如果我设置加载的 swf 的宽度和高度,我实际上会在加载的 swf 中调整影片剪辑的大小。我想做的是改变加载的 swf 的舞台大小。

有什么办法吗?