问题标签 [executable-format]

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

monitoring - 监控可执行文件

我有一个几年前购买的程序,最后几年当我安装一个新的 Windows 时,我被叫我的软件程序员在我的电脑上再次安装它。现在我找不到这个人并想打开程序,所以我想知道打开我的 exe 文件需要哪些文件以及是否应该添加任何注册表键,我认为它正在监视以检查我应该添加什么.

这样的事情我可以用知道。PS:我有exe文件并试图打开它,它要求一些文件并且已经添加到system32,现在它什么都不要求,而是关闭程序而不打开第一个屏幕。

0 投票
3 回答
167 浏览

executable-format - 什么可执行格式通常会导致文件更小?

什么可执行格式通常会导致文件更小?例如,我听说 a.out 格式比 ELF 的要小。这个问题是跨平台的,所以 MS-DOS 也是。

0 投票
1 回答
1542 浏览

linker - 是否有允许我移动堆栈起始地址的链接器脚本指令?

我正在尝试使用 x86_64 上的链接器脚本更改堆栈的起始位置。我可以使用以下方法移动我的可执行文件起始地址:

我像这样改变了我的全局变量:

我尝试使用以下内容来移动堆栈区域:

但这并没有让我到任何地方。

这是我用来测试堆栈位置的测试程序:

这是我从 gcc 的默认链接器脚本的输出(没有修改):

这是我的链接器脚本的输出:

由于 nm 输出新位置,我真的很困惑:

虽然我什至不确定 stack_start 和 stack_end 在 x86_64 上是否有效,因为我从 arm online 的链接器脚本教程中得到了那部分。我的链接器脚本没有收到任何错误或警告,所以我不确定发生了什么。

如果您想知道为什么有人会这样做 - 它对安全研究有影响。

有没有办法使用链接器脚本做我想做的事?我简直不敢相信我可以移动我的 .text、.bss 和 .data 部分,但不能移动堆栈。


更新:这是从http://www.lurklurk.org/linkers/linkers.html#os获取的解释,说明为什么使用链接器无法做到这一点:

“你可能已经注意到,到目前为止所有关于目标文件和链接器的讨论都只讨论了全局变量;没有提到前面提到的局部变量和动态分配的内存。这些数据不需要任何链接器参与,因为它们的生命周期只发生在程序运行时——在链接器完成其业务很久之后。”

0 投票
2 回答
165 浏览

java - 用于在 Java 或 C++ 中生成独立 Windows 可执行文件的库

不是想将我的源代码编译成可执行文件。请在标记为重复之前阅读。

话虽如此,如果以前有人问过这个问题,我深表歉意。无数“如何将 java | C++ 编译为 exe”的问题填满了我所有的搜索。

我正在寻找一个有助于创建 Windows 可执行 (.exe) 文件的库。具体来说,我希望能够在运行时生成一系列汇编指令(这些将非常简单)并创建一个可执行它们的可执行文件。我可以自己生成程序集;我只想有一个库来帮助处理 .exe 文件的所有标题和其他部分(我开始研究可移植可执行文件格式,但它对我来说太复杂了。我不懒,但是作为一名高级程序员,我觉得这些东西在我的头脑中)。该库的具体机制并不重要,只要它适用于 Java 或 C++。然而,Java 是非常受欢迎的。

任何与任何类型的框架有关的任何知识都将在这方面有所帮助,我们将不胜感激。

0 投票
3 回答
2094 浏览

linux - 核心转储本身是否可执行?

核心转储上的维基百科页面说

在类 Unix 系统中,核心转储通常使用标准的可执行映像格式:

这是否意味着核心转储本身可以执行?如果不是,为什么不呢?

编辑:由于@WumpusQ.Wumbleycoredump_filter在评论中提到了 a ,也许上面的问题应该是:可以生成核心转储以使其自身可执行吗?

0 投票
1 回答
91 浏览

python-2.7 - 以可执行格式保存python脚本

如何将我正在处理的 python 脚本以可执行格式保存在特定文件夹中?不允许手动保存。保存代码必须在脚本本身内。提前致谢。

0 投票
3 回答
1369 浏览

parsing - 编译器如何在编译过程结束时创建可执行文件?

我一直在阅读编译过程,我了解一些早期的概念,例如解析,但我不了解最后如何创建可执行文件。

在我在“编译器”周围看到的示例中,以 BNF 定义的语言形式接受输入,然后在解析它时输出程序集。

可执行文件真的只是二进制形式的程序集吗?我觉得这不可能是因为有应用程序可以从程序集中生成可执行文件?

如果这无法回答(即堆栈溢出格式太复杂),我会对链接/书籍完全满意,这样我就可以自学了。

0 投票
1 回答
405 浏览

c++ - 如何判断是否为 PE Win32 启用了 /GS 编译器

我能够从 DOS 头文件中解析 A​​SLR、DEP、SEH 等,但不确定如何判断文件是否使用 /GS 堆栈金丝雀编译。

我正在编写一个程序,所以除非它是开源的,否则将我指向一个像 PEStudio 这样的程序对我没有帮助。

这是dos标头的一部分吗?还是我必须扫描 .data 部分的 __security_cookie?

0 投票
2 回答
2261 浏览

file-format - What is the PEI format?

I understand that PE is a modified version of COFF, and that PE+ is a modified version of PE with 64 bit support, but what is PEI? Am I correct in saying there is no difference between PE and PEI, and they can be used interchangeably?

0 投票
2 回答
2054 浏览

c++ - 为什么 EXE 文件中有文本函数名称?

我编译了一个 C++ 程序以在发布模式下拥有一个 EXE 文件。当我在编辑器中打开 EXE 文件时,我会看到一些文本块,它们大多是程序中使用的低级函数的名称。

总是说计算机只理解二进制机器码。那么,这些人类可读的文本存在于可执行程序文件中的目的是什么?为什么计算机需要函数名来运行程序?

在此处输入图像描述

IDE:Visual Studio 2015 RC
平台:Windows 8.1 x64

编译器命令行选项:

链接器命令行选项:


编辑:

我对rcgldr 的回答做了更改。我进行了项目设置更改,将命令行开关更改\MD\MT. 可执行文件大小从 56kb 更改为 436kb。我猜是因为现在所需的库没有在运行时链接,而是从一开始就存储在 EXE 文件中。但 EXE 文件中仍然有文本块,如下面的屏幕截图所示。标准模板库 (STL) 中的函数名称已完全消失,但有很多 Win32 API 函数名称。现在可能是什么原因?

在此处输入图像描述