Zutrittskontrolle in Windows ist auf einer pro-Objekt-Basis. Wenn Sie das Prozessobjekt schützen möchten, müssen Sie die ACL des Prozessobjekts entweder beim Erstellen des Prozesses (über lpProcessAttributes von CreateProcess) oder danach (über SetKernelObjectSecurity) festlegen. Wenn Sie der ACL den Eintrag "Alle verweigern" hinzufügen, schlägt der Versuch fehl, den Prozess durch einen Angreifer zu öffnen.
Natürlich kann der Besitzer des Prozesses (und somit der vom Benutzer ausgeführte bösartige Code) die ACL zurück in das ändern, was sie war - bösartiger Code ist dafür möglicherweise nicht vorbereitet. Um Angriffe aus dem Benutzerbereich effektiv zu verhindern, müssen Sie den Prozess als nicht interaktiven Benutzer ausführen (z. B. als LocalSystem).
Kein Schutz kann Angriffe aus dem Kernelraum verhindern, so dass jeder, der Treiber installieren kann, auch jeden Prozess auf dem System hacken kann.
Der Wortlaut dieser Frage könnte besser sein, aber die Frage selbst ist es wert, gefragt zu werden. +1 –
bezogen: http://stackoverflow.com/questions/869320/how-would-i-go-about-prevent-dll-injection/869466 –
Der Wortlaut ist in Ordnung !!! +1 dafür und für eine gute Frage! – Narek