Thread overview
August 06, 2013

Alıntı:

>

version (Windows)
{
import std.c.windows.windows;

void makeExecutable(ubyte[] code)
{
    DWORD old;
    VirtualProtect(code.ptr, code.length, PAGE_EXECUTE_READWRITE, &old);
}

}
else
version (linux)
{
import core.sys.posix.sys.mman;
import core.sys.posix.unistd;

static if (!is(typeof(&mprotect)))
    extern(C) int mprotect(void*, size_t, int);

void makeExecutable(ubyte[] code)
{
    auto pageSize = sysconf(_SC_PAGE_SIZE);
    auto address = ((cast(size_t)code.ptr) & ~(pageSize-1));
    int pageCount =
        (address/pageSize == (address+code.length)/pageSize) ? 1 : 2;
    mprotect(cast(void*)address, pageSize * pageCount,
  		 PROT_READ | PROT_WRITE | PROT_EXEC);
}

}

Bu kodun mac için karşılığı nedir? Hangi fonksiyon kullanılıyor?

Zekeriya

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

August 06, 2013

Mac dediğim aslında unix oluyormuş bu arada :)

Zekeriya

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

August 06, 2013

version(GNU) olayi var acaba onun altina unix'i alabilir misin yani osx de destekliyor.

Diger dedigine gelince osx altinda c'de sys/mman.h dosyasi kullaniliyordu hem linux hem osx altinda.

yine mman basliginin altinda mprotect() cagrisi yapiliyordu. Senin linux versionda cagirdigin sistem de bu sekilde destek sagliyorsa ayni moduller kullanilamaz mi?

ekstra olarak unix sistemlerde bildigim kadariyla vm_protect() cagrisi vardi. bu standart mi onu bilmiyorum ama ama kullanimi soyleydi

vm_protect(mytask,(vm_address_t) stack, STACK_SIZE,
VM_PROT_READ|VM_PROT_WRITE|VM_PROT_EXECUTE,VM_PROT_READ|VM_PROT_WRITE|VM_PROT_EXECUTE);

Ama bu sadece ufak bi bilgiydi calistigini test edecek yerim yok.. O konuda bilgim yok yani test edemedim.

Fakat bunun icin de kutuphaneleri gerekiyordu. Sordugun bu ise umarim kafani karistirmadim :(

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

August 07, 2013

vm_protect değil ama mprotect olur gibime geliyor kodlar derlenirken hata verdi neden bilmiyorum. Elimde bir mac olsaydı çok daha rahat deneybilme fırsatım olurdu sanırsam şimdilik bunu ertelemek zorundayım.

Zekeriya

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]