Beispiel #1
0
    public static unsafe void Main()
    {
        int prot = 0x1 | 0x2 | 0x4; //PROT_READ | PROT_WRITE | PROT_EXEC
        int flags = 0x1000 | 0x0002; //MAP_ANON | MAP_PRIVATE
        var res = mmap (IntPtr.Zero, (IntPtr)4096, prot , flags, 0);
        var mem = new UnmanagedMemoryStream ((byte*)res, 4096, 4096, FileAccess.ReadWrite);
        var asm = new Assembler (mem);

        asm.Push (EBP);
        asm.Mov (EBP, ESP);
        asm.Mov (EAX, 10);
        asm.Leave ();
        asm.Ret ();

        NoArgsReturnInt dele = (NoArgsReturnInt)Marshal.GetDelegateForFunctionPointer (res, typeof (NoArgsReturnInt));

        Console.WriteLine (dele ());
    }