Я уверен, что это возможно, но я хотел бы вызвать функцию, которая определена в exe-файле на Linux/Mac:
0x421ff0 @@my_func_doing_stuff@Initialize 4
По сути, я хотел бы добавить поддержку командной строки, которая не реализована, а пользовательский интерфейс представляет собой бесполезное перетаскивание.
Примечание. У меня нет доступа к источнику файла.
Я играл с вином, 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
напомнил мне, что я не могу вызывать ни одну из функций Windows под Linux без эмуляции?
Поэтому я ищу другие решения. Наверное это можно как-то сделать эмулируя или отлаживая под вайном. Но я не уверен, есть ли какой-либо API для вызова конкретных функций.
Есть ли существующие решения?