Findwindow?

10/11/2013 04:29 .SnoX#1
Hey zusammen, ich habe eine Frage undzwar suche ich ein Befehl wie ich ein Programm finde, der nicht über Findwindow verläuft.

Vielleicht durch den Exennamen selbst, aber selbst dort könnte man die exe einfach umbenennen, deswegen suche ich etwas was man nicht so leicht ändern kann.

Irgendeine erkennbare Struktur eines Programmes, Prozess oder sonstiges.

Undzwar möchte ich um es genauer zu erläutern das mein Programm alle 7 sek einen Suchlauf durchführt das nach einer bestimmten Datei (Cheat Engine) sucht, halt nicht über Findwindow, falls er es nicht findet passiert nix und wenn er es findet schließt sich mein Program.

Bedanke mich schonmal im vorraus.
10/11/2013 10:04 snow#2
Mach nen Snapshot von allen aktiven Prozessen (CreateToolhelp32Snapshot) und such dann nach nem Pattern in den Prozessen. Oder lies die Executables mit ReadFile ein und erstell nen Hash. Wenn er mit dem von CE übereinstimmt -> Treffer
Hook NtOpenProcess und schau, ob es dein Prozess ist, für den das Handle erstellt werden soll. Gibt ne Menge Möglichkeiten.
10/11/2013 10:42 Padmak#3
Oder du treibst das mit ReadFile etwas weiter und überprüfst nicht nur den Hash, den kann man ändern. Du könntest nach den typischen Modulen suchen, in der Exe nach typischen Strings etc etc
Deiner Fantasie sind kaum Grenzen gesetzt :P

Padmak
10/11/2013 12:21 MrSm!th#4
Und nicht zu vergessen:
Solche Blacklists sind unglaublich nutzlos, weil man nicht viel Fantasie braucht, um sie zu umgehen.
10/11/2013 13:15 Master674b#5
Oder du alloziierst eine neue Memory Page, lässt sie ohne darauf zuzugreifen im Speicher und rufst dauernd QueryWorkingSet für sie auf, dann guckst du ob sie bereits initialisiert wurde. Wenn ja, hat irgendwas darauf zugegriffen (z.B. ReadProcessMemory / WriteProcessMemory) und nen Page-Fault ausgelöst und die Page wurde physikalisch initialisiert.

Dann kannst zumindest nicht mehr im Prozess nach irgendwas suchen.
Ist aber sehr anfällig wenn z.B. nen bösen Treiber oder Antivirus-Software hast.

Mit ein bisschen Fantasie lässt sich damit eine wunderbare Debugger Detection draus machen.
10/12/2013 17:16 Omdi#6
Oder du schaust einfach ob es einen offenen Handle zu deinem Prozess gibt (Systemprozesse jetzt mal ausgeschlossen).