如何在 Linux/Mac 上调用特定的 EXE 函数

Posted

技术标签:

【中文标题】如何在 Linux/Mac 上调用特定的 EXE 函数【英文标题】:How to call specific EXE function on Linux/Mac 【发布时间】:2012-10-17 17:07:18 【问题描述】:

我确定这是否可能,但我想在 Linux/Mac 上调用 exe 文件中定义的函数:

0x421ff0 @@my_func_doing_stuff@Initialize 4

基本上我想添加未实现的命令行支持,并且 UI 是一种无用的拖放。

注意:我无权访问文件的来源。

我一直在使用 pefile、SWIG 和 ctypes 玩 wine、objdump、uncc(试图再次将其转换为 C)和 Python:

#!/usr/bin/python
from ctypes import *

import pefile, sys

pe = pefile.PE('my_file.exe')

print pe.dump_info()

my_exe = cdll.LoadLibrary('./my_file.exe')

但没有成功。

错误:

OSError: ./my_file.exe: invalid ELF header

提醒我在没有仿真的情况下无法在 Linux 下调用任何 Windows 函数?

所以我正在寻找其他一些解决方案。可能通过在wine下模拟或调试它可以以某种方式完成。但是我不确定是否有任何API可以调用特定的函数。

有没有现成的解决方案?

【问题讨论】:

【参考方案1】:

您可以use winelib to load and link with the binary(因为您需要 wine 来提供可用的 ABI),但请记住,这有效地将您的应用程序变成了 Wine 应用程序。

【讨论】:

感谢您的回答,我会尝试 winelib 并让您知道这是否有效。

以上是关于如何在 Linux/Mac 上调用特定的 EXE 函数的主要内容,如果未能解决你的问题,请参考以下文章

如何将 [D]COM 调用记录到模块中?

如何确定特定 win32 api 调用所需的 windows 库?

如何在labview里面调用可执行文件.exe

如何写一个exe.或者bat文件.来调用多个exe文件同时启动.

理解Unix可执行文件

如何将自己写好的exe程序部署到自己的网站上,并通过网络调用它?