![]() |
Verhindern, dass eigenes Programm von außen gesteuert wird??
Hallo!
Wie kann ich verhindern, dass eine andere Anwenung mein Programm steuern kann, ich meine Buttons klicken, Textfelder ausfüllen etc. Das geht relativ einfach, wenn man das Handle des Objektes erhalten kann. Aber wie kann ich das verhindern? Danke! |
Re: Verhindern, dass eigenes Programm von außen gesteuert wi
Entweder, Du sorgst dafür, dass sich dein Handle ständig ändert (Form neu machen), oder Du sorgst dafür, dass die gesamte Oberfläche ein einziges Handle hat (z.b.: ein TImage nehmen und alles selber da draufzeichnen), oder Du ignorierst alle Windows-Nachrichten.
|
Re: Verhindern, dass eigenes Programm von außen gesteuert wi
Zitat:
|
Re: Verhindern, dass eigenes Programm von außen gesteuert wi
Ich glaube Sidorion verarscht dich ein bischen.
Nicht auf Windows-Messages zu reagieren bedeutet das das Programm nicht auf Eingaben reagieren kann. Eine Fernsteuerung mittels Messages laesst sich praktisch nicht verhindern. Zusaetzlich gibt es noch die Moeglichkeit der Fernsteuerung mittels synthetisierter Maus- und Keyboardmessages (mouse_event bzw keybd_event). |
Re: Verhindern, dass eigenes Programm von außen gesteuert wi
Wie kann man solche Fernsteuerung maximal erschweren?
|
Re: Verhindern, dass eigenes Programm von außen gesteuert wi
Warum willst du es eigentlich verhindern? Gibt es einen besonderen Grund dafür? :?
|
Re: Verhindern, dass eigenes Programm von außen gesteuert wi
Ich habe ein Programm geschrieben für eine Gruppe von Autohändlern. Das Programm bietet allen Benutzern gleiche Vorteile. Jetzt hat einer der Händler einen anderen Entwickler beauftragt ein Programm zu entwickeln, mit dem man bestimmte Funktionen meines Programms so manipulieren kann, dass es für andere Benutzer keinen Sinn mehr macht, mein Programm zu benutzen. Er hat das auch erreicht. Ich möchte das verhindern.
|
Re: Verhindern, dass eigenes Programm von außen gesteuert wi
Zitat:
Besteht die Möglichkeit einer Unterlassungsklage? |
Re: Verhindern, dass eigenes Programm von außen gesteuert wi
Das verstehe ich nicht. Das Programm läuft doch wohl lokal auf einem PC bei dem Autohändler oder?Und was kümmert es dich, wenn jemand dein Programm für andere unbenutzbar macht? Das sollten dann die anderen Benutzer mit dem einem Autohädler klären.
|
Re: Verhindern, dass eigenes Programm von außen gesteuert wi
Juristisch lässt sich einiges machen, ich habe schon eine Unterlassungserklärung beauftragt, dann kommt noch die Einstweilige Verfügung und die Schadenersatzanspruche, unter anderem auch für die betrofenen Autohändler. Aber das alles gehört hier nicht.
Technisch gesehen muss jetzt ein Update her, die die Manipulationen verhindert. Was kann man da machen? Das Problem verursacht nur ein Button in der ToolBar meines Programs. Es wird mit einem Interval von 1-3 Sekunden einen Klick auf diese Button simuliert. Das muss verhindert werden. |
Re: Verhindern, dass eigenes Programm von außen gesteuert wi
Geht es um einen Online-Abgleich? Dann bau doch ein server- oder clientseitiges Delay ein, so dass die Taste nach dem Drücken für 5-10 Sekunden funktionsuntüchtig bleibt (oder am Server einfach nichts für diesen Client gemacht wird in der Zeit)
Nicht schön, aber wirkungsvoll... Noch ein Edit: Wie kanns überhaupt passieren, dass ein einzelner mit sowas einfach alles lahmlegen kann? Rein interessehalber... |
Re: Verhindern, dass eigenes Programm von außen gesteuert wi
wie cruiser schon schrieb könnte man bei deinem problem einfach im ButtonClick prüfen dass, das letzte ButtonClick schon eine weile her ist. Desweiteren könntest du überprüfen ob dein Programm den Focus hat während der Eingabe. Wenn man der WM_Click etc. gearbeitet wird könntest du eventuell auch global abfragen ob die Maustaste gedrückt ist.
|
Re: Verhindern, dass eigenes Programm von außen gesteuert wi
Kann ich es z. B. so machen, dass während des Mausklicks auf die Schaltfläche eine Code dynamisch erstellt wird, die dann in der OnClick-Procedure überprüft wird? Würde das helfen? Oder kann man auch den Mausklick von außen simulieren?
|
Re: Verhindern, dass eigenes Programm von außen gesteuert wi
Zitat:
|
Re: Verhindern, dass eigenes Programm von außen gesteuert wi
Hat jmand noch Ideen?
|
Re: Verhindern, dass eigenes Programm von außen gesteuert wi
Du könntest Hook Funktionen für Maus und Tastatur schreiben und deren Informationen auswerten,
das wäre mal ne Hürde, diese Informationen zu simulieren. Aber wenn der andere Programmier schlau ist schaut er auch in die DP und findete den Tipp und muss nur deine Hook-DLL gegen eigene tauschen! Also man kann die Latte nur höher legen, aber wenn einer will springt er drüber. Sollt dein Programm nicht mehr knackbar sein schreibt der andere halt ein Eigenes. wo "nur" die Funktionalität diese einen Button drin steckt. Den Vorschlag mit dem Verhindern das in alzu kurzen Klick Abständen was passiert findi ich auch sehr gut. Vor allem wenn es der Server auswertet. |
Re: Verhindern, dass eigenes Programm von außen gesteuert wi
Dazu müsstest du wenigstens mal kurz anreißen, was dieser eine Button denn macht? Wie kann eine einzige Person durch einen Buttonklick das System/Programm für andere unbenutzbar machen? Du solltest vllt. an dieser Stelle ansetzen.
|
Re: Verhindern, dass eigenes Programm von außen gesteuert wi
Du könntest auf den Button noch eine weitere Sichrheitsabfrage legen, z.B. Eingabe von Passwort ( könnte er umgehen :-() oder Eingabe eines dynamisch erzeugte Prüfcodes.
|
Re: Verhindern, dass eigenes Programm von außen gesteuert wi
Zitat:
|
Re: Verhindern, dass eigenes Programm von außen gesteuert wi
Wenn ich das hier richtig verstanden habe, dann muss der Bentzer normalerweise SELBER auf den Button klicken.
Prüfe doch einfach, ob dein Fenster aktuell den Fokus besitzt, wenn auf den Button geklickt wurde. Wenn ja, dann wird der Code ausgeführt, ansonsten nicht... |
Re: Verhindern, dass eigenes Programm von außen gesteuert wi
Zitat:
*EDIT* Aus diesem Kampf kann man nicht als Sieger hervorgehen, man kann es nur schwerer machen. Naja, bald haben wir ja TCPA etc., dann geht das zwar, aber zu welchem Preis ;) |
Re: Verhindern, dass eigenes Programm von außen gesteuert wi
eine Prüfcode wie bei Ebay,
da wird eine Zahlenkombination als Bild (bitmap) dargestellt. Eingegben werden muß sie hingegen als Ziffernfolge. Das Bitmap sollte von extern nicht so leicht zu analysieren sein. Grüße Klaus |
Re: Verhindern, dass eigenes Programm von außen gesteuert wi
Zitat:
|
Re: Verhindern, dass eigenes Programm von außen gesteuert wi
Zitat:
Lass uns mal überlegen, Focus setzen, Click, Focus zurückholen = 70 Millisekunden? Das siehst du kaum, und wenn doch sperre ich dir vorher noch deine GDI Refresh-Routine, somit wird garnichts gezeichnet während dieser Zeit. Klaus sein Vorschlag ist gut, das Bild muss allerdings serverseitig erzeugt werden. Die anderen Nutzer werden sich darüber sicherlich nicht freuen, aber da das Programm ansonsten wie beschrieben unbrauchbar ist, werden sie es wohl in kauf nehmen müßen. Die einzige Chance ist irgendetwas serverseitig zu machen, denn der Client ist IMMER manipulierbar. |
Re: Verhindern, dass eigenes Programm von außen gesteuert wi
Wie bei den online games: Ein Bild mit Zahlen und Buchstaben erstellen die man dann in ein Editfeld eintragen muss.
Wenn übrigens, keine Hooks verwendet wurden sondern nur due normalen windows Befehle zum steuer des Programms (keybd_event usw) wirste mit ner Klage nicht durchkommen. |
Re: Verhindern, dass eigenes Programm von außen gesteuert wi
Zitat:
Oder wird OnMouseEnter durch SetCursorPos() ausgelöst? |
Re: Verhindern, dass eigenes Programm von außen gesteuert wi
Devil wir können dieses Spiel bis zur Unendlichkeit treiben, du kannst nicht gewinnen.
Und wenn du mit irgendwelchen Funktionen sonstwas abfragst, ich bieg dir sie dir alle um ;) |
Re: Verhindern, dass eigenes Programm von außen gesteuert wi
das mit Prüfcode war so gemeint wie brechi es beschrieben hat. Prüfcode in ein nicht maschienelesbarem Bild erzeugen, un den abfragen.
|
Re: Verhindern, dass eigenes Programm von außen gesteuert wi
Zitat:
|
Re: Verhindern, dass eigenes Programm von außen gesteuert wi
Zitat:
|
Re: Verhindern, dass eigenes Programm von außen gesteuert wi
na gut, getreu dem Motto der Klügere gibt nach, beende ich dies hiermit.
Sollten wirklich Daten zu einem Server gesendet werden, so hat dieser sicher irgendwo eine Benutzerauthentifizierung. Diese kann man im Extremfall für eine bestimmte Zeit deaktivieren, wenn zuviele Anfragen kommen oder komplett entfernen.... |
Re: Verhindern, dass eigenes Programm von außen gesteuert wi
Hum... bleibt mal beim Prakmatischsten.. sichern kann ers nur dadurch, dass er verhindert, dass ein einziger User das System blockieren kann. Das hat weniger etwas mit der GUI als mit der Abfrage(routine) an sich zu tun. Aber um da wirklich helfen zu können bräuchte man ein paar mehr Infos.
|
Re: Verhindern, dass eigenes Programm von außen gesteuert wi
Du musst die Intelligenz des Menschen vor dem Rechner abfragen, sprich eine Abfrage die mit heutigen Mitteln nicht automatisiert werden kann.
Zb. hast du statt 1 Bestätigungsbutton 3 solcher Buttons. Den Text/Grafik auf diesen Buttons zeichnest du über das GDI selber, zb. Text als Grafik -> "Abbruch" "Bestätigen". Nun wählst du per Zufall nun 1 der 3 Buttons als Bestätigen Button aus und die anderen beiden als Abbruch Button. Im Program überprüfst du das in einer Zeitspanne von zb. 100-500 Millisekunden nur einer der 3 Button gedrückt wurde. Eine "Angreifer" müsste nun schon entweder 1.) eine Schrift/Bilderkennungssoftware programmieren können, die meisten schaffen das nicht. 2.) das komplette GDI System hooken, oder 3.) gleich dein Program dynamisch patchen/Code injezieren Gruß Hagen |
Re: Verhindern, dass eigenes Programm von außen gesteuert wi
die logischte und einfachste variante ist wie gesagt schon die zu prüfen wann der letzte buttonklick erfolgt ist ... zb alle sek macht dei programm einen klick - dann fügst du ne zeile ein die das prüft ob der letzte klick auc hschon 5 ske her ist und dann erst wird der klick simuliert ;)
grüße Nico |
Re: Verhindern, dass eigenes Programm von außen gesteuert wi
Irgendwie muss der pöhse Haxor ja an dein Fensterhandle - also kannst du ganz einfach alle Funktionen, mit denen das geht (EnumWindows, GetWindowFromPoint, GetActiveWindow etc.) hooken und dein eigenes Programm verstecken (oder gleich den aufrufer killen, Exception sollte reichen :gruebel: ). Ach ja, wie wärs mit nem rootkit? :mrgreen:
Ansonten wäre es gut etwas mehr über die Archtitektur deines Programmes zu wissen. Ich gehe jetzt mal davon aus, dass alles lokal abläuft. Das störende Programm scheint ja dein Programm mit Ereignissen zuzukloppen, so dass kein sinnvolles arbeiten mehr möglich ist. Eventuell kannst du dieses Programm finden und zerstören. Ausserdem fragt sich, wie kommt das Programm da hin? Es ist ja eigentlich bereits als Virus einzustufen. Alle Sicherheitsmaßnahmen gegen Viren können also auch hier helfen. Ausserdem solltest du versuchen, einen infizierten Rechner zu kriegen, damit du den untersuchen kannst und sehen, wo das gegnerische Programm herkommt. |
Re: Verhindern, dass eigenes Programm von außen gesteuert wi
Zitat:
Zitat:
Zitat:
|
Re: Verhindern, dass eigenes Programm von außen gesteuert wi
Zitat:
Glaube ich nicht. Ich weiss nicht, woraus du deine Informationen ziehst, toxman, aber dieses szenario erscheint mir als unrealistisch. Was sind das eigentlich für "Vorteile", die das Programm bringt? :gruebel: Wie bereits gesagt, ohne weiteres Wissen über die Architektur der Softwarelösung, des Systems(ok... MS Windows...) und wie beide interagieren(man kann mit Windows messages dran schrauben... aber wann kann man das nicht?), kann ich nicht mehr sagen. Am wahrscheinlichsten ist das Szenario, dass es ein PC ist, und man über verschiedene Benutzerkonten (programmintern oder auf Systemebene) auf verschiedene Datenstrukturen Zugriff bekommt. Ein Jammer blockiert nun das Interface, indem z.B. jeder "Abbruch"-Button, der erscheint geklickt wird. Wenn das das Programm merkt, gleichzeitig feststellen kann, dass ein (genügend) autorisierter user am PC sitzt und sich gestört fühlt, kann es dem user die Option anbieten, den Störenfried abzuschießen - wäre das dann illegal? Natürlich muss man dazu des Störenfrieds habhaft werden. Man kann dem User dann auch eine PID anbieten und ein Programm, dass diese abschießt... Also noch einmal: was macht das programm? wie genau wird es gestört? |
Re: Verhindern, dass eigenes Programm von außen gesteuert wi
Bloss mah so ein Gedanke von nehm Ahnungslosen.
Meiner Meinug nach bei nehm lokalen Programm stimme ich DGL-luke zu. Wenn es aber übers Netz läuft, müsste sich doch feststellten von welcher IP die angriffe kommen, und dann müsste es doch gehen diese IP zu ignorieren. |
Re: Verhindern, dass eigenes Programm von außen gesteuert wi
Zitat:
Zitat:
|
Re: Verhindern, dass eigenes Programm von außen gesteuert wi
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:41 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz