<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[PE- und ELF-Header in einer Binary?]]></title><description><![CDATA[<p>Hey,</p>
<p>vor einiger Zeit habe ich angefangen mich einwenig in die Header-Specs von PE und ELF einzulesen, und da ich schon seit längerem portable C++ Programme für Unix/Windows schreibe, kam mir neulich der Gedanke, ob es denn möglich sei beide Binaries in eine Datei zu packen. Es spricht freilich nix dagegen zwei getrennte zu verwenden, aber eine einzige für verschiedene Betriebssysteme wäre halt....naja, praktischer.</p>
<p>Ich bin weissgott kein Spezialist in Sachen Assembler und/oder Header-Formate, und weiß daher auch nicht ob es generell überhaupt funktionieren kann. Aber weiß einer von Euch zufällig ob es irgendwie möglich ist PE und ELF sowie den Binärcode beider Executables (Unix/Windows) zu verbinden?</p>
<p>Um meinen Gedankengang einfach mal zu verdeutlichen: Nehmen wir an ich habe eine Datei mit ELF-Header die unter Unix &quot;ausführbar&quot; ist. Jetzt verschieb ich die Offsets einwenig, schieb meinen PE-Header und Windows-Binärdaten dazwischen und mach am Anfang irgendwelche JNE oder JE Konstrukte um je nach Betriebssystem an die richtige Stelle zu springen.</p>
<p>Wie gesagt, kenn mich auf dieser Ebene leider etwas zu wenig aus, und ich kann's verstehen wenn mir hier jemand ne digitale Ohrfeige für diese &quot;Idee&quot; geben möchte. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/215466/pe-und-elf-header-in-einer-binary</link><generator>RSS for Node</generator><lastBuildDate>Thu, 25 Jun 2026 21:06:46 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/215466.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 11 Jun 2008 12:27:21 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to PE- und ELF-Header in einer Binary? on Wed, 11 Jun 2008 12:27:21 GMT]]></title><description><![CDATA[<p>Hey,</p>
<p>vor einiger Zeit habe ich angefangen mich einwenig in die Header-Specs von PE und ELF einzulesen, und da ich schon seit längerem portable C++ Programme für Unix/Windows schreibe, kam mir neulich der Gedanke, ob es denn möglich sei beide Binaries in eine Datei zu packen. Es spricht freilich nix dagegen zwei getrennte zu verwenden, aber eine einzige für verschiedene Betriebssysteme wäre halt....naja, praktischer.</p>
<p>Ich bin weissgott kein Spezialist in Sachen Assembler und/oder Header-Formate, und weiß daher auch nicht ob es generell überhaupt funktionieren kann. Aber weiß einer von Euch zufällig ob es irgendwie möglich ist PE und ELF sowie den Binärcode beider Executables (Unix/Windows) zu verbinden?</p>
<p>Um meinen Gedankengang einfach mal zu verdeutlichen: Nehmen wir an ich habe eine Datei mit ELF-Header die unter Unix &quot;ausführbar&quot; ist. Jetzt verschieb ich die Offsets einwenig, schieb meinen PE-Header und Windows-Binärdaten dazwischen und mach am Anfang irgendwelche JNE oder JE Konstrukte um je nach Betriebssystem an die richtige Stelle zu springen.</p>
<p>Wie gesagt, kenn mich auf dieser Ebene leider etwas zu wenig aus, und ich kann's verstehen wenn mir hier jemand ne digitale Ohrfeige für diese &quot;Idee&quot; geben möchte. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1526991</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1526991</guid><dc:creator><![CDATA[PuerNoctis]]></dc:creator><pubDate>Wed, 11 Jun 2008 12:27:21 GMT</pubDate></item><item><title><![CDATA[Reply to PE- und ELF-Header in einer Binary? on Wed, 11 Jun 2008 13:33:31 GMT]]></title><description><![CDATA[<p>Das Problem dürfte darin liegen, daß eben der Header an einer fixen Position erwartet wird. Es wird ja der Anfang des Executables eingelesen und ausgewertet, BEVOR die Ausführung begonnen wird. Und beide Ansätze haben ihre Erwartungshaltung.</p>
<p>Theoretisch könntest du einen ELF-Header mit in ein PE packen, das dann jedoch nur unter Windows ausführbar wäre (weil der ELF-Header an der falschen Position läge) - oder umgekehrt.</p>
<p>Folgendes ist viel sinnvoller:<br />
Man erzeuge eine Struktur, die unter allen gewünschten Plattformen umsetzbar ist (Verzeichnisstruktur, Dateinamen, etc.) und packe je ein Executable pro Plattform in einen &quot;bin&quot;-Ordner. Bei der Installation lösche man die nicht benötigten Executables -&gt; fertig.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1527058</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1527058</guid><dc:creator><![CDATA[Sid2K7]]></dc:creator><pubDate>Wed, 11 Jun 2008 13:33:31 GMT</pubDate></item><item><title><![CDATA[Reply to PE- und ELF-Header in einer Binary? on Wed, 11 Jun 2008 13:45:00 GMT]]></title><description><![CDATA[<p>Hm, sowas habe ich mir auch fast gedacht. Das Betriebsystem wird zuerst anhand eines fixen Headers gucken (wie ein Bildbetrachter oder vergleichbares) um was für einen Dateityp es sich handelt. Hmmm....</p>
<p>Das mit dem Löschen der jeweils nicht benötigten Binary ist im Prinzip auch eine saubere Lösung, nur falls der User das Programm dann von nem anderen Betriebssystem ausführen will, müsste er es neu installieren. Da wäre es denke ich doch besser keine zu löschen.</p>
<p>Ein Arbeitskollege hatte gerade eine andere Idee: Man schreibe ganz einfach ein simples Windows-Programm das prüft um welches OS es sich handelt, daran entscheidet welche Binary verwendet werden soll, und lässt das ganze entweder nativ unter Windows oder unter Unix mit Wine laufen. Aber man kann hier nicht davon ausgehen, dass auf jedem Unix-System Wine läuft, bzw. laufen kann.</p>
<p>Naja, falls niemand anderes mehr einen Workaround oder sowas hat, werde ich mal das mit dem Löschen ausprobieren.</p>
<p>Aber erstmal danke Sid2K7.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1527068</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1527068</guid><dc:creator><![CDATA[PuerNoctis]]></dc:creator><pubDate>Wed, 11 Jun 2008 13:45:00 GMT</pubDate></item><item><title><![CDATA[Reply to PE- und ELF-Header in einer Binary? on Wed, 11 Jun 2008 13:47:22 GMT]]></title><description><![CDATA[<p><a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-213511.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-213511.html</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1527070</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1527070</guid><dc:creator><![CDATA[siehe auch]]></dc:creator><pubDate>Wed, 11 Jun 2008 13:47:22 GMT</pubDate></item><item><title><![CDATA[Reply to PE- und ELF-Header in einer Binary? on Wed, 11 Jun 2008 13:55:34 GMT]]></title><description><![CDATA[<p>Super, danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1527079</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1527079</guid><dc:creator><![CDATA[PuerNoctis]]></dc:creator><pubDate>Wed, 11 Jun 2008 13:55:34 GMT</pubDate></item></channel></rss>