【问题标题】:Making a Portable Executable using FASM in Ubuntu在 Ubuntu 中使用 FASM 制作可移植的可执行文件
【发布时间】:2018-03-20 06:35:15
【问题描述】:

堆栈社区!

我目前正在使用 Ubuntu 17.10 并且是一名汇编语言学习者。当我在 Windows 上时,我使用了一个名为 'win32a.inc'"MyLib.inc" 的库来 read_eaxprint_hex 。以前的语法是这样的:

format PE console
include 'win32a.inc'
entry start
section '.text' code readable executable
start:
     mov eax,0xffff
     call print_eax
push 0
call [ExitProcess]

include 'MyLib.inc'

但是在 Windows 上没有很好的体验,让我改用 Linux。我这样做是为了安装 fasm:

sudo apt-get install fasm

但是当我尝试制作一个可执行文件时(我打算用 wine 运行它)我在终端上收到一个错误:'win32a.inc' source file Missing.

'win32a.inc' 是 Windows 上的默认 fasm 库。我不知道如何在 Linux 中使用它。我有所有 Windows 库的备份;_;

有没有一种方法可以在 Linux 中使用 FASM 制作可移植的可执行文件??

【问题讨论】:

  • win32a.inc 是否随 FASM 的 Windows 发行版一起提供?您是否尝试过以这种方式获取它的副本?如果您不尝试包含您没有的文件,FASM 是否会生成 PE 可执行文件?如果是这样,您的问题是“我如何获得这些 FASM 库”,而不是“我如何制作 PE”。
  • win32a.inc 带有 ›FASM for Windows‹-package (flatassembler.net/download.php),你不能在 linux 上使用它,因为 API 和系统调用非常不同。汇编不是可移植软件的首选语言。不过,您可以为 windows 和 linux 创建具有相同功能的自定义库。
  • @fuz :他的问题是他将在 wine 下运行他的可执行文件。
  • @sivizius 那么,我是否必须在运行 Win10 的 Linux 下使用 Virtual Box 才能制作 WINDOWS PORTABLE EXECUTABLE 文件??
  • 不,你仍然可以在linux上用fasm制作windows-executables,如果你下载了windows的include-files,但你不能用相同的文件创建linux-executables,只要你没有具有相同功能的 windows 和 linux 库。

标签: assembly x86 wine fasm


【解决方案1】:

您可以在任何操作系统上编译为 FASM 支持的任何类型的文件。

诀窍是 FASM 的 Windows 端口将文件名视为不区分大小写,但 Linux FASM 将它们视为区分大小写。

因此,请检查include 指令中使用的文件名的大小写。

FASM 默认包含库的真实文件名是全部大写。因此,如果您想使用 Linux(或任何其他 Unix 类型的操作系统)FASM 编译此代码,则需要使用 WIN32A.INC

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-07
    • 2017-09-07
    • 2014-09-19
    相关资源
    最近更新 更多