2009-09-19 19 views
7

Ich weiß, dass WinAPI Hacking-Funktionen integriert hat.C++ und Prozess Speicherschutz

Ich habe sie auch in C# mit Pinvoke ... Um Sweeper zu hacken ... Es war einfach ... Also ...

Wie ich meine Anwendung von Prozessspeicher Bearbeitung schützen könnte, DLL injizierende verweigern und andere Hacking-Möglichkeiten. WIE?!

Hoffnung WinAPI etwas wie nichtig DontTouchMeOrIWillTerminateYou(bool protect) hat ...

+2

Der Wortlaut dieser Frage könnte besser sein, aber die Frage selbst ist es wert, gefragt zu werden. +1 –

+0

bezogen: http://stackoverflow.com/questions/869320/how-would-i-go-about-prevent-dll-injection/869466 –

+0

Der Wortlaut ist in Ordnung !!! +1 dafür und für eine gute Frage! – Narek

Antwort

9

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.

+0

1. Gibt es eine Möglichkeit, Launcher-Anwendung zu erkennen? 2. Kann ich attact erkennen und den Angreifer deaktivieren (sofortiger PC-Crash oder so etwas ...) – user175908

4

Hacking? Nein. Es heißt Debugging (zum größten Teil)

Und die kurze Antwort auf Ihre Frage ist "Nein, das kannst du nicht tun". Ich höre, dass in Vista und später gibt es einige OS-Prozesse, die Sie nicht debuggen können (DRM-Prozesse und dergleichen), aber ich bin mir nicht sicher, ob Sie Ihre Prozesse so ausführen können.

Die eigentliche Frage ist, warum Sie das tun wollen, und müssen Sie sich nicht um wichtigere Dinge sorgen (z. B. Leistung und Benutzerfreundlichkeit, ganz zu schweigen von der Korrektheit Ihrer Software)?

+0

Ich brauche Leistung und Sicherheit. – user175908

1

Über Speicherbearbeitung, ein trivialer Weg, um es zu erkennen wäre, eine Prüfsumme für einige Ihrer Daten zu halten.

+0

Werte ändern sich ständig ... – user175908

0

Implementieren Sie Ihren Prozess nicht auf einem vom Endbenutzer gesteuerten Computer: Führen Sie Ihren Prozess stattdessen auf Ihrem eigenen Computer aus und lassen Sie die Endbenutzer über das Internet mit Ihrem Prozess kommunizieren.

+0

Kannst du das Ding LAG ??? – user175908