Ich versuche, mprotect API auf MacOSX 10.4 (Tiger) zu verwenden, habe ich versucht, jede mögliche Weise, die ich weiß, gibt immer -1, mit errno 13, was "Erlaubnis verweigert" bedeutet, während ich Ich versuche, die Schreibberechtigung zu einem ausführbaren Code hinzuzufügen.mprotect API unter OS X Tiger
Der gleiche Code funktioniert genau auf MacOS X 10.5 (Leopard).
der Code ist ziemlich einfach
int ret = mprotect((void*)pFunc, 4096, PROT_WRITE | PROT_EXEC);
pFunc wo die Adresse von jeder Funktion in dem Prozessadressraum geladen wird. Ich habe versucht, die PROT_EXEC vor dem Hinzufügen des Zugriffsrechts PROT_WRITE zu entfernen, aber kein Glück. Ich versuchte auch, pFunc mit der Speicherseitengröße auszurichten, kein Glück weder ..
Irgendeine Idee, wie man das funktioniert?
+1, hatte ich das gleiche genaue Problem und schließlich nur OSX aus meiner Liste der unterstützten. –
Zeigen Sie das vollständige Programm, das ein Problem verursacht. – stepancheg