c ++ - Kopier maskine kode fra Windows eksekverbar og køre på Linux

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg kopierer maskinkoden til en funktion på Windows.


For eksempel:


void func()
{
    printf("hello");
}


I det ovennævnte tilfælde ville jeg kopiere func() s hex kode segmentdata og printf() s hex kode data plus andre afhængigheder og data og relinked det på en differnt maskine, der kører linux, ville det være muligt at kør koden på en linux-maskine, hvis den er korrekt genindlæst?


Og i så fald ville det være et licensproblem? (Er det lovligt?)


P. S. Spørgsmålet angår et distribueret system spørgsmål.

Bedste reference


Dette er et ret vagt/ubesvarligt spørgsmål, men det ville være yderst vanskeligt, om ikke umuligt. Du har en række vanskeligheder, som du har brug for. Nemlig det eksekverbare format (ELF på Linux, vs PE på Windows), kaldkonventionerne mellem systemer/kompilatorer mv.


Det største problem jeg kan tænke på er, at filhåndtering mellem Linux og Windows er ekstremt anderledes. Din bedste indsats ville ikke være at kopiere printf (), men at omdirigere dette opkald til Windows-implementeringen, fordi efter alle bibliotekets funktion arbejde, er lavt niveau skriv til konsollen meget anderledes.

Andre referencer 1


Der er et wine program (og projekt), som ikke er en emulator. Det vil tage exe fil fra windows og køre den i linux direkte. Mest anvendte WinAPI bliver oversat til Linux og til X11 grafiske system. [5]


Hvis du bare vil køre exe-filer fra Windows under Linux - vil dette være svaret. Hvis du vil vide, hvordan du gør dette, kan du læse kilder til vin og/eller dokumentation af vin og/eller artikler om vin og dets design. Eller spørg forfattere af vinen på postliste. [6]