Ich versuche zu überprüfen, ob eine Anwendung versucht, einen bestimmten Prozess zu manipulieren (z. B. hooks sich daran). Ich konnte keinen geeigneten Ansatz finden, um dies zu erreichen. Ist die Berechnung der Prüfsumme über den laufenden Prozess möglich? Wenn es nicht ist, wie kann ich diese Situation feststellen?
Anderer Prozess kann keine Hooks in Ihrem Prozess erzeugen, kann Speicher modifizieren, aber um Hooks zu machen, muss dieser Code in Ihrem Adressraum sein, dies kann getan werden, um DLL in Ihren Prozess zu injizieren wenn er startet (zur Laufzeit inject dll ist a schwer), können Sie dies leicht überprüfen, indem Sie DLLs in Ihrem Prozess auflisten und einige ReadProcessMemory
, WriteProcessMemory
, OpenProcess
, CallNextHookEx
-Funktionsaufrufe in ihrem Code suchen. Um dies zu tun, erhalten Sie eine Adresse ( GetProcAddress
) der Funktion und des Suchwerts im Code (Sie können einige Asm call
Vorhersagen für das Ergebnis für enge Bereiche hinzufügen).
Sie können prüfen, was mit Ihrer PE-Datei auf der Festplatte und im Speicher nicht stimmt . Wenn die DLL-Injektion beim Start auftritt, sollte Ihre PE-Datei nach dem Kopieren aus der Datei in den Speicher beschädigt sein Letzte DLL-Bibliothek sollten Sie Debug-Symbole mit zusätzlichen DLL-Import überschrieben haben. Diese Änderung kann in der gleichen Datei wie im Speicher vorgenommen werden.
Die beste Methode, aber wahrscheinlich nicht leicht für Sie, wenn Sie C # Sprache verwenden, ist Ihren Code verschleiern . Ich denke, das ist eine gute Methode, weil Sie nicht etwas haken, von dem Sie nicht wissen, wie Sie arbeiten , weil Sie nicht wissen, welchen Haken Sie tun müssen und wo. Aber für gute Verschleierung C # -Code müssen Sie gute Software dafür finden und wahrscheinlich nicht niedrigen Preis bezahlen.