Am 18.02.2011 13:46, schrieb Sven Barth:
Am 18.02.2011 12:16, schrieb Marco van de Voort:
In our previous episode, Jonas Maebe said:
because this is not a problem in Delphi nor it was in an old version
of fpc-Lazarus 32 bits. Please give me a tip.
Many thanks in advance.

You probably have to mark the memory in which you write the code as
"executable" first (this has to be done using an OS-specific function;
I know next to nothing about Windows programming, but you should be
able to find the necessary information in MSDN).

In fact, you should also do this on 32 bit platforms, since more and
more systems mark memory by default as not executable for security
purposes.

This is called DEP (Data Execution Protection, which is an amalgam of
resp
AMD and Intel hardware protection and some software forms). IIRC it is
always on for 64-bit, and for 32-bit server versions that use a PAE
kernel.
(client OSes don't have PAE version on windows afaik)


This is not entirely correct. Quote from Wikipedia regarding PAE:
===quote begin===
Windows XP SP2 and later, by default, on processors with the no-execute
(NX) or execute-disable (XD) feature, runs in PAE mode in order to allow
NX.
===quote end===

Afaik it can only be turned on before starting a binary. An executable
can't
disable it while running (since then it would be useless, as a virus
could
simply disable it)

See e.g.
http://techblissonline.com/enable-disable-dep-in-windows-xp-vista/

Searching for "disable dep" or so will probably yield more results.

Of course, this is not healthy and supportable application behaviour,
but I
assume this is already known.

I personally would say that mapping a page with the Execute flag set and
storing the to-be-executed content there should be enough. After all JIT
compilers must do that as well. ;)

Also according to here: http://en.wikipedia.org/wiki/Data_Execution_Prevention#Configuration DEP is not enabled by default for all applications.

Regards,
Sven
_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal

Reply via email to