# control the output file at binary level

I would like to generate a PDF file via PDFTeX that is also a Windows Executable at the same time (the resulting file is a polyglot).

For this, I need the PDF file, among other thing, to start with the 'MZ' letters.

Can I do that via a specific macro or package?

-
What's a “Windows executable polyglot”? Can you give a reference? –  egreg Feb 24 at 21:36
@egreg edited with clarification –  Ange Feb 24 at 21:39
OMG WTF PDF. :-{ –  Martin Schröder Feb 24 at 21:57
@MartinSchröder (my page on the topic)[pdf.corkami.com]. I also made a bootable PDF (PoC||GTFO 0x02). –  Ange Feb 25 at 7:43

Your "polyglot" is not a valid PDF file. A canonical PDF file starts with the PDF header (`%PDF-1.x`). However Acrobat Reader and some other PDF viewers are less strict, from the implementation notes in the PDF specification:

13. Acrobat viewers require only that the header appear somewhere within the first 1024 bytes of the file.

A canonical PDF file ends with `%%EOF` in the last line. Again, Acrobat Reader is less strict:

3.4.4, "File Trailer"
18. Acrobat viewers require only that the `%%EOF` marker appear somewhere within the last 1024 bytes of the file.

Thus there is some room to add a wrapper for other formats.

However, you cannot add something at the beginning or the end with pdfTeX. But something can be added inside the PDF file:

``````\begingroup
\pdfcompresslevel=0\relax
\immediate\pdfobj stream file{foo.bar}\relax
\endgroup
``````

Then the contents of file `foo.bar` can be found uncompressed inside the PDF file.

-
It is a valid file from my (malware analyst) perspective: it's rendered as expected, without any errors, by all readers (linux ones, sumatra, firefox, chrome, adobe). –  Ange Feb 25 at 7:38