SImple C++ code to D
    bearophile via Digitalmars-d-learn 
    digitalmars-d-learn at puremagic.com
       
    Sun Jul 13 19:23:58 PDT 2014
    
    
  
Alexandre:
> When the PE file is generate in EXE have just the "M" of "MZ"...
Let's try again, is this better?
import std.c.windows.windows: WORD, LONG;
struct IMAGE_DOS_HEADER {
     WORD e_magic = ('M' << 8) + 'Z',
          e_cblp,
          e_cp,
          e_crlc,
          e_cparhdr,
          e_minalloc,
          e_maxalloc,
          e_ss,
          e_sp,
          e_csum,
          e_ip,
          e_cs,
          e_lfarlc,
          e_ovno;
     WORD[4] e_res;
     WORD e_oemid,
          e_oeminfo;
     WORD[10] e_res2;
     LONG e_lfanew;
}
alias PIMAGE_DOS_HEADER = IMAGE_DOS_HEADER*;
__gshared ubyte[0x800] image;
void main() {
     import std.stdio;
     import core.stdc.string;
     auto dosh = cast(PIMAGE_DOS_HEADER)image.ptr;
     immutable stub = x"b8 01 4c cd 21";
     memcpy(&image[IMAGE_DOS_HEADER.sizeof],
            stub.ptr, stub.length);
}
Bye,
bearophile
    
    
More information about the Digitalmars-d-learn
mailing list