windows - Fjern DOS stub fra en PE-fil

Indlæg af Hanne Mølgaard Plasc

Problem



Er det muligt at fjerne DOS-stub og DOS-header fra en PE-fil?

Bedste reference


Der er ingen nem måde at fjerne den uden at bryde filformatet.


Men ehm, fundet dette. [1]

Andre referencer 1


PE-filen skal begynde med en IMAGE\_DOS\_HEADER efterfulgt på et tidspunkt af en IMAGE\_NT\_HEADERS-struktur, der definerer de moderne PE-felter.


IMAGE\_DOS\_HEADER har to obligatoriske felter - e\_magic skal indeholde værdien IMAGE\_DOS\_SIGNATURE (som ligner 'MZ' i ASCII) og e\_lfanew skal være forskydningen fra starten af ​​filen op til starten af ​​IMAGE\_NT\_HEADERS.


Bortset fra disse to felter er resten af ​​IMAGE\_DOS\_HEADER valgfri til Windows over 16 bit Windows og kan være nul, og DOS-stub er valgfri og kan udelades.


Den minimale overensstemmende PE-fil begynder med en IMAGE\_DOS\_HEADER, hvor e\_magic er indstillet til IMAGE\_DOS\_SIGNATURE, og e\_lfanew er indstillet til sizeof (IMAGE\_DOS\_HEADER), efterfulgt af IMAGE\_NT\_HEADERS straks.

Andre referencer 2


Fjernelse af Dos Stub har intet at gøre med Dos header. Ja det er muligt at fjerne Dos Stub (da det ikke længere bruges). Du kan endda reducere størrelsen af ​​Dos header til sit minimum (MZ + hoppe til PE Header). Men du kan ikke fjerne Dos header helt. Ellers vil Windows loader nægte at starte dit billede, hvis MZ og hoppet til PE-overskriften mangler.

Andre referencer 3


Du kan ikke reducere størrelsen på Dos header til dens 'minimum'. Desværre er længdefeltet det sidste felt i IMAGE\_DOS\_HEADER. Det har således en fast størrelse på 64 byte.