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

时间:2012-10-17 17:07:18

标签: c++ python linux exe wine

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

0x421ff0 @@my_func_doing_stuff@Initialize 4

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

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

我正在玩wine,objdump,uncc(试图将它再次转换为C)和Python使用pefile,SWIG和ctypes:

#!/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功能?

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

现有解决方案吗?

1 个答案:

答案 0 :(得分:2)

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