![]() |
Screenshot verhindern
Hallo,
ich hab mal wieder ein kniffliges Problem.. und zwar möchte ich verhindern das der User einen Screenshot von meinem Programmfenster machen kann. Eigentlich geht es um ein TImage Object das nicht per Screenshot kopiert werden soll. Dabei ist es mir wichtig nicht nur die Windows Standardfunktion per (tastendruck PRINT SCREEN oder ALT + PRINT SCREEN) zu blockieren sondern auch Programme die einen Screenshot machen könnten. Das Bild im TImage ist nicht in der Exe enthalten es wird in echtzeit per internet übertragen. Hat da jemand eine Idee wie man das umsetzen könnte? Gruß Andreas |
Re: Screenshot verhindern
Zitat:
|
Re: Screenshot verhindern
Zitat:
Aber der normale PC User soll es halt nicht können |
Re: Screenshot verhindern
Zitat:
Gegenfrage: Was ist so wertvoll das du es so drastisch schützen willst ? |
Re: Screenshot verhindern
Zitat:
Es gibt da zwar auch tools die Overlays grabben kann die hat aber otto normalverbraucher i.d.R. nicht. Nur wie mach ich das mit einem Overlay bei delphi? |
Re: Screenshot verhindern
also mich würde auch interessieren was so schützenwert ist.
könntest du nicht einfach eine checkbox reinmachen, die bei checked = false den inhalt ausblendet? |
Re: Screenshot verhindern
Zitat:
Dann wirst du noch weniger Chancen haben. |
Re: Screenshot verhindern
Zitat:
|
Re: Screenshot verhindern
Zitat:
|
Re: Screenshot verhindern
Zitat:
|
Re: Screenshot verhindern
Zitat:
@Bernhard Geyer VM Ware/VPC hat aber auch kein otto normal User! Und wie gesagt es muss nicht einem Cumpterfreak oder Hacker standhalten! Es soll lediglich normaluser so schwer wie möglich machen das Bild abzugreifen |
Re: Screenshot verhindern
Es ist doch völlig egal ob die Daten im Falle einer Webcamsoftware verschlüsselt übertragen werden.
Ein Screenshot, und das bild ist gespeichert. Naja, kann sein Anliegen schon teilweise verstehn, soll ja auch mitunter recht 'intime' Webcamsessions geben :mrgreen: |
Re: Screenshot verhindern
Der Screenshot wird doch in der Zwischenablage gespeichert. Du könntest doch in deinem Programm diese Auslesen und speichern.
Dein Form könntest du so verändern, dass du Bild darauf untersuchen kannst, ob es eines von deinem Form ist. (z.B. die Formfarbe leicht verändern o.ä.) Wenn du also dein Bild in der Zwischenablage findest, kannst du das dann durch den gespeicherten Inhalt der Zwischenablage ersetzen. Davon sollte ein normaler User eigentlich nichts mitbekommen oder etwas dagegen machen können. Ich weiss nur nicht, in welchem Format Bilder in der Zwischenablage gespeichert werden und wie exakt da die Farben übernommen werden, aber das lässt sich ja ausprobieren. Oder du schreibst etwas in Richtung Keylogger und wenn strg,alt,druck innerhalb kurzer zeit gedrückt werden, blendest du das Bild aus. |
Re: Screenshot verhindern
Zitat:
|
Re: Screenshot verhindern
Liste der Anhänge anzeigen (Anzahl: 1)
Wenn du eine DirectX-Darstellung machst, könnte es funktionieren. Bei AOE z.B. gehts auchnicht. Natürlich hast du überhaupt keine Chance wenn das Bild auf einer VM läuft.
|
Re: Screenshot verhindern
verhindern kannst du einen screenshot nicht.
aber du kannst es erschweren. zeichne einfach nur einzelne teile auf dem bildschrim. das oft genug hintereinander und das auge erkennt nur 1 gesamtes bild. der screenshot enthält dann jeweils nur den teil welcher gerade angezeigt wird. |
Re: Screenshot verhindern
Ein Overlay könnte es erschweren, aber das Programm [google]Fraps[/goolge] ist meiner Meinung nach zu bekannt und benutzerfreudlich um es bei deinen Überlegungen zu vernachlässigen. Es gibt soweit ich weiss noch ein weiteres Tool dass ähnlich weit entwickelt ist:
![]() Was den Screenie von AoE angeht: Ich weiss es nicht 100%ig, aber ich meine auch schon normale Screenshots von Spielen gemacht zu haben, und dass evtl. bei AoE lediglich das Pixelformat nicht geeignet ist. Bei Overlays hab ich bisher alles gesehen, von schwarzem Bild über verstümmeltes Bild bis hin zu einem 1:1 Abbild. Welche Parameter da aber entscheidend sind kann ich nicht sagen. Aber wie gesagt: Spätestens mit Fraps hat man da verloren. \\edit: Die Idee von generic ist btw. garnicht übel! Das einzige Problem könnte sein, dass du dazu eine reichlich hohe Framerate erreichen musst, um ein Flackern zu minimieren. 60Hz sollten es für 1 Bild sein, teilt man es in zwei sollten es also schon 120Hz werden, und je Teilung entsprechend. Das ist technisch nicht einfach oder eben etwas flackerig, aber sicher nicht die schlechteste Idee. Mit etwas Glück (und/oder Geduld) lässt sich hier aber auch ein Gesamtbild erzeugen, indem man lange genug Screens macht und dabei in der Summe alle Teilbilder zusammenhat und zu einem zusammenfügen kann. Minimieren ließe sich das wiederum, indem man die nicht sichtbaren Teile zufällig wählt, aber dort ist die Gefahr des Flackerns NOCH größer, und auch hier hat der geduldige "Screenshoter" irgendwann alle nötigen Teilbilder zusammen, oder zumindest ausreichend. |
Re: Screenshot verhindern
Zitat:
Man liest sich, Stanlay :hi: |
Re: Screenshot verhindern
Zitat:
Hat wer ein Beispiel welches wirklich nur ein Bild ausgibt (ich will ja kein Spiel Programmieren. |
Re: Screenshot verhindern
Ich kann wunderbar per Druck-Taste Screenshots von Direct3D-Anwendungen machen. Nur so zu deiner Kenntnisnahme. ;)
|
Re: Screenshot verhindern
wollte das nicht unter den Tisch fallen lassen :
Zitat:
|
Re: Screenshot verhindern
Age of Empires macht es genau so dass es nur Teile des Bildes Darstellt.
@Oxmyx: versuch doch mal einen Screenshot von Age of Empires zu machen. Oder Jurassic Park Operation Genesis. @perle: englisch :wall: aber gegen eine Virtual Workstation hilft das nix. |
Re: Screenshot verhindern
Könntest du nicht einfach die "Print Screen" bzw. "Druck" - Taste hooken, wenn dein Programm gestartet wird? Das schützt schonmal vor dem OttoNormalBenutzer.
//Edit: Vergiss meinen Satz.... |
Re: Screenshot verhindern
Gibt es da vllt ne API-Funktion?
|
Re: Screenshot verhindern
also du könntest immer die zwischenablage durch ein anderes bild ersetzen, aber ich glaube nicht, dass du das willst.
Dann kannst du Bilder/Videos direkt an die GrakaStreamen. So macht's z.b. mein TV-Tool, dann ist das Feld schwarz im Screenshot. Aber da hast du in ner VM das Bild immernoch. In Delphi kann man doch die Tastenanschläge abfangen, kannst doch machen, dass das Bild in der Zeit ausgeblendet wird wenn die Taste gedrückt wird oder nicht? |
Re: Screenshot verhindern
Zitat:
Es gibt Screenshot-Programme, wo man keine Tastenkombination drücken muss. |
Re: Screenshot verhindern
Und wenn du alles fertig hast, hole ich es mir mit dem ResHacker aus der Exe. ;)
|
Re: Screenshot verhindern
Zitat:
Hindert aber keinen daran den Netzwerkverkehr abzufangen und -speichern oder das Bild aus dem RAM des Programmes auszulesen. |
Re: Screenshot verhindern
was willst du denn so schützen?
Dann muss man sich ja richtig ran hängen. Also man kannst nicht verhindern, aber erheblich erschweren. |
Re: Screenshot verhindern
Zitat:
Wenn man 2 Videos gleichzeitig startet (in 2 versch. Mediaplayern) und eines oder beide pausiert, dann kann die Grafikkarte das Videobild nicht mehr in e i n e m Overlay verstecken... In dieser Situation kann man mit PrintScreen das Videobild einfangen! |
Re: Screenshot verhindern
Der Normaluser nimmt UltraVNC mit einer Loopback-Verbindung und macht fröhlich Screenshots.
Vergiß es doch einfach. Es ist unsinnig, es ist nicht machbar, warum diskutiert ihr noch? Wenn wir irgendwann mal ein "DRM-System" auf Pro-Fenster-Basis bekommen, können wir ja weiterdiskutieren ... :mrgreen: :zwinker: |
Re: Screenshot verhindern
Zitat:
Ich bin eher der Meinung das es machbar sein müsste, aber nur mit erheblichem Aufwand. Du müsstest einen Treiber schreiben der die Ausgabe auf dem Bildschirm selber übernimmt und mit Deiner Software ausschliesslich diesen Treiber ansteuern. Da dann Dein Treiber direkt den physikalischen Output erzeugt kann das nicht so einfach mit Hausmitteln gegrabbt werden. Der Treiber kann auch so geschrieben sein dass er seinen Dienst in einer VM versagt. Damit hast Du ein Hemmnis das der Normaluser nicht mit 'Ich suche mit Google einen Screengrabber, lade den Runter und verwende den' umgehen kann. Allerdings ist Dein Aufwand auch entsprechend hoch - fraglich ob sich das lohnt, aber durchaus machbar. |
Re: Screenshot verhindern
;) Alles was auf dem Bildschirm dargestellt wird kann man "Grappen". (Und wenn ich dazu nen' Fotoapperat auspacken muss) ;)
Fine. |
Re: Screenshot verhindern
Zitat:
Zitat:
So gesehen, ja, es ist rein prinzipiell möglich. Zitat:
Zitat:
Abgesehen von allem Gesagten ist es müßig darüber zu diskutieren ob es überhaupt geht, denn in diesem Forum reden wir über Delphiprogramme im Usermode und höchstwahrscheinlich sogar festgelegt auf das Win32-Subsystem. Und sorry, in dieser Umgebung geht es nunmal nicht das zu verhindern. |
Re: Screenshot verhindern
Zitat:
|
Re: Screenshot verhindern
Zitat:
|
Re: Screenshot verhindern
Moin Olli,
ein spezieller Treiber müsste sich doch auch durch einen dazwischengeschalteten Filtertreiber aushebeln lassen der die Ausgabe dann grabbt :gruebel: |
Re: Screenshot verhindern
Moin Christian,
Zitat:
Bei dem vorgeschlagenen Treiber dürfte das aber sowieso müßig sein, weil so ein Treiber gegen so ziemlich alles verstößt, was in der Treiberentwicklung Usus ist. So ein Treiber würde nämlich quasi "ein Flickenteppich aus schmutzigen Tricks" sein ;) Für die Entwicklung eines stabilen Prototypen "from scratch" würde ich mal mindestens 5 Mannjahre veranschlagen. Allein zum Filtern der ganzen win32k.sys-Funktionen :zwinker: |
Re: Screenshot verhindern
Man man man. Die Grafiken müssen ja wirklich höchst Geheim sein. Wenn ich die wirklich haben will dann bekomme ich die auch. Und wenn ich einen Debugger einschalte und mir die Bilddaten direkt aus dem Speicher holen möchte ...
Wozu der Aufwand? Nur Teile des Bildes anzeigen lassen und so schnell, dass es das Auge nicht wahrnimmt? Dann musst du schon extrem hohe Framerate erreichen, die kein Monitor darstellen kann. Bei einem stehenden Bild fällt selbst bei 60 Bildern pro Sekunde noch ein Flimmern auf. Da das Bild in mehere Teile aufteilen müsstest, müsstest du pro Bildteil die 60 Frames einrechnen. Bei 4 Teilen wären es also schon 240 Frames pro Sekunde. Und bei vier Teilen sollte es unproblematisch sein, sich das Bild selbst zusammen bauen ... Einen Treiber ins System einhängen? Wenn das jede Software macht dann schönen dank. Zu dem du auch dann noch die Daten aus dem Speicher holen kannst. Was du brauchst lässt sich NUR mit dem geforderten Schutz aus Hollywood von HDTV erreichen. Jeder Hardware- und Software-Kanal vom Eingabegerät bis hin zum Ausgabegerät muss verschlüsselt sein. Ansonsten findest du immer einen Angriffspunkt. Ach ja zum Thema abfilmen. Auch hier ist man dran, dass durch bestimmte Störsignale vom Ausgabegerät ein Abfilmen erschwert werden soll. (Fangt jetzt bloß keine Diskussion über HDTV und HDCP und ... an). Denk mal drüber nach, ob sich der Aufwand und die Einschränkung für den Nutzer lohnen ... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:56 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 by Thomas Breitkreuz