Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Projektplanung und -Management (https://www.delphipraxis.net/85-projektplanung-und-management/)
-   -   Software gegen API-Zugriffe von aussen schützen? (https://www.delphipraxis.net/178661-software-gegen-api-zugriffe-von-aussen-schuetzen.html)

nuclearping 20. Jan 2014 09:52

Software gegen API-Zugriffe von aussen schützen?
 
Hallo,

wir haben ein Software-System, was wir nun auch im asiatischen Markt vertreiben wollen.

Ein Aspekt der hier besonders in den Vordergrund rückt, ist der Schutz der Software gegen Piraterie, speziell Datendiebstahl.

Zum Schutz der Software gegen Reverse-Engineering und Umgehung der Freischaltung verwenden wir bereits das WinLicense-System.

Um zu verhindern, dass die Datenbank ausgelesen werden kann, benutzen wir zum einen einen Passwortschutz und zum anderen haben wir noch die Möglichkeit, die Daten in der DB selbst zu verschlüsseln.

Allerdings hindert das ja niemanden daran, die Controls der Form per WinAPI auszulesen um somit an die Daten zu kommen. Es gibt ja bereits Programme (SnagIt zB), die es ermöglichen, einen Ausdruck des kompletten Inhalts einer x-beliebigen Control eines x-beliebigen Fensters zu erstellen (zB einem TreeView oder ListView oder VirtualStringTree), auch wenn Bereiche davon ausserhalb des Viewports liegen und nur über eine Scrollbar sichtbar gemacht werden können.

Gibt es Möglichkeiten, Programme genau daran zu hindern?

Im WinLicense-System gibt es zwar verschiedene Einstellungen, die was mit dem Thema API-Wrapping und API-Virtualization in Kombination mit der Virtual Machine zu tun haben, aber das sind nur Verschleierungs- und Virtualisierungstechniken, um externe Programme daran zu hindern, API-Spying und -Tracing zu betreiben.

Im Vorraus schonmal Danke für eure Gedanken und Tipps. :thumb:

himitsu 20. Jan 2014 10:01

AW: Software gegen API-Zugriffe von aussen schützen?
 
Verwende FMX, da gibt es keine WinAPI zum Auslesen. :stupid:

Alles was selbstgeteichnet wird, bzw. was den Text nicht in einem Window speichert, kann auch nicht via WM_GETTEXT ausgelesen werden.



Ihr könntet auch versuchen diese Message selber zu verarbeiten und dort eine Prüfung reinmachen, welche versucht zu prüfen wer da grade anfragt.

Oder ihr lasst eure Software mit bestimmten Rechten laufen.
Messages werden ja nicht mehr übertragen, wenn die Rechte fehlen.
> z.B. kann ja ein normales Benutzerprogramm keinem Adminprogramm mehr etwas senden (wenn das von Diesem nicht freigegeben wurde)
> Darum geht auch Drag&Drop meistens nicht mehr zwischen Explorer und einem Adminprogramm.

Screenshot und den Text da auslesen geht natürlich immernoch.
Wobei man natürlich auch noch versuchen kann den screenshot zu verhindern, aber auch das lässt sich umgehen und sei es mit einer Webcam vor'm Monitor, oder dem Videoausgang an einem Videoeingang.

cookie22 20. Jan 2014 10:21

AW: Software gegen API-Zugriffe von aussen schützen?
 
Man kann ja auch die Controls hooken und WM_GETTEXT abfangen.

Mir stellt sich allerdings hier wieder mal die Frage, wie sinnvoll so etwas wie WinLicense ist. Soweit ich weiß fahren da diverse Virenscanner garnicht gut drauf ab.

Ist die Software gut, dann wird sie eh gecrackt. Egal welchen Machanismus man verwendet. Das ist alles nur Zeitverschwendung.

nuclearping 20. Jan 2014 11:06

AW: Software gegen API-Zugriffe von aussen schützen?
 
Zitat:

Zitat von himitsu (Beitrag 1244510)
Verwende FMX, da gibt es keine WinAPI zum Auslesen. :stupid:

Alles was selbstgeteichnet wird, bzw. was den Text nicht in einem Window speichert, kann auch nicht via WM_GETTEXT ausgelesen werden.

Wäre wohl eine Idee, ja. ;) Aber die ganze Oberfläche des Software-Systems dafür neu zu erstellen wäre ein zu großer Aufwand, nicht nur von den Kosten, sondern vorallem auch von der Zeit her.

Zitat:

Zitat von himitsu (Beitrag 1244510)
Ihr könntet auch versuchen diese Message selber zu verarbeiten und dort eine Prüfung reinmachen, welche versucht zu prüfen wer da grade anfragt.

Zitat:

Zitat von cookie22 (Beitrag 1244512)
Man kann ja auch die Controls hooken und WM_GETTEXT abfangen.

Ja, an sowas hatte ich auch gedacht. Jedoch habe ich keine Erfahrungen damit, ob das dafür der optimale Weg wäre und wollte eure Meinungen dazu hören.

Zitat:

Zitat von himitsu (Beitrag 1244510)
Oder ihr lasst eure Software mit bestimmten Rechten laufen.
Messages werden ja nicht mehr übertragen, wenn die Rechte fehlen.
> z.B. kann ja ein normales Benutzerprogramm keinem Adminprogramm mehr etwas senden (wenn das von Diesem nicht freigegeben wurde)

Dann startet der Bösewicht halt sein Programm auch als Admin? :stupid: :mrgreen:

Zitat:

Zitat von cookie22 (Beitrag 1244512)
Mir stellt sich allerdings hier wieder mal die Frage, wie sinnvoll so etwas wie WinLicense ist. Soweit ich weiß fahren da diverse Virenscanner garnicht gut drauf ab.

Bisher haben wir noch kein negatives Feedback von Anwendern erhalten, dass einer der genutzten Virenscanner bei unserem System anspringt. Bei Fernwartungen habe ich bisher zB Avast, Avira, Kaspersky, McAffee, Norton, Panda oder Vipre im Einsatz gesehen.

Zitat:

Zitat von cookie22 (Beitrag 1244512)
Ist die Software gut, dann wird sie eh gecrackt. Egal welchen Machanismus man verwendet. Das ist alles nur Zeitverschwendung.

Bisher ist mir kein Crack für WinLicense-geschützte Programme bekannt. :P Lediglich Diskussionen wo Leute um Hilfe fragen, weil sie es eben nicht hinbekommen.

Es ist klar, dass man Software immer zu 100% irgendwie cracken kann. Aber WinLicense machts Angreifern hier absurd schwer, so dass es nur Profis schaffen würden und wenn, dann nur unter enormen Zeitaufwand.

Weiterhin ist es keine Zeitverschwendung. Die Änderungen am Code zum Einbinden der Engine sind weitestgehend einmalig und nur minimal (lediglich ein paar Zeilen Code) und der Schutz der Release-Anwendung erfolgt dann über ein externes Tool, was man über Batch starten kann. Der Verschlüsselungsvorgang dauert (je nach Größe der Anwendung und Leistung des Systems) zwei-drei Minuten. Und das wars.

Der einzige Nachteil mit WinLicense ist, dass man bei Debug-Meldungen keinen Stacktrace mehr mitgeliefert bekommt. :(

himitsu 20. Jan 2014 11:44

AW: Software gegen API-Zugriffe von aussen schützen?
 
Zitat:

Zitat von nuclearping (Beitrag 1244514)
Aber die ganze Oberfläche des Software-Systems dafür neu zu erstellen wäre ein zu großer Aufwand, nicht nur von den Kosten, sondern vorallem auch von der Zeit her.

Einfach ein TEdit erstellen, welches intern nichts dauf das EDIT vom Windows zurück geht, aber im Delphi mit der selben/kompatiblen Schnittstelle in der Klasse arbeitet.
Und dann einfach die Unit überall als Letztes in die Form-Units einbinden, so ala http://www.delphipraxis.net/141895-t...phi-other.html .

Oder via Refactoring, oder so, die Komponenten in den Forms austauschen, bzw. nur die Komponenten, wo es nötig ist.

Zitat:

Zitat von nuclearping (Beitrag 1244514)
Ja, an sowas hatte ich auch gedacht. Jedoch habe ich keine Erfahrungen damit, ob das dafür der optimale Weg wäre und wollte eure Meinungen dazu hören.

Ich weiß allerdings auch nicht, ob man an den zugänglichen Stellen überhaupt rausbekommt, von wem die Nachticht ist.

Zitat:

Zitat von nuclearping (Beitrag 1244514)
Dann startet der Bösewicht halt sein Programm auch als Admin? :stupid: :mrgreen:

Entweder ihr verwaltet dieses Konto und notfalls kann man da auch nachsehen, ob und welche Programme im selben Kontext laufen, bzw. welche die nötigen Rechte hätten.

nuclearping 21. Jan 2014 11:56

AW: Software gegen API-Zugriffe von aussen schützen?
 
Zitat:

Zitat von himitsu (Beitrag 1244519)
Einfach ein TEdit erstellen, welches intern nichts dauf das EDIT vom Windows zurück geht, aber im Delphi mit der selben/kompatiblen Schnittstelle in der Klasse arbeitet.

Hauptsächlich geht es hier um einen TVirtualStringTree, indem die Daten abgebildet werden. Aber das Prinzip müsste ja das gleiche sein.

Zitat:

Zitat von himitsu (Beitrag 1244519)
Ich weiß allerdings auch nicht, ob man an den zugänglichen Stellen überhaupt rausbekommt, von wem die Nachticht ist.

Ja, das denke ich auch.

Wir werden mal ein bisschen rumspielen und wenn es was zu berichten gibt, melde ich mich.

himitsu 21. Jan 2014 12:04

AW: Software gegen API-Zugriffe von aussen schützen?
 
Beim VirtualTreeView sind doch die Daten nicht in der GUI?
Also grade da sollte es doch nicht möglich sein, die Daten von extern abzufragen. :gruebel:

cookie22 21. Jan 2014 15:25

AW: Software gegen API-Zugriffe von aussen schützen?
 
Zitat:

Zitat von himitsu (Beitrag 1244689)
Beim VirtualTreeView sind doch die Daten nicht in der GUI?
Also grade da sollte es doch nicht möglich sein, die Daten von extern abzufragen. :gruebel:

Es nicht möglich, da brauchst gar net grübeln. ;)

Vor allem fragt sich wie sinnvoll das Ganze ist, denn wenn man die Daten stehlen will, kann man ja auch mit Screenshots arbeiten. Oder direkt im Speicher drauf zugreifen.

nuclearping 21. Jan 2014 17:30

AW: Software gegen API-Zugriffe von aussen schützen?
 
Zitat:

Zitat von himitsu (Beitrag 1244689)
Beim VirtualTreeView sind doch die Daten nicht in der GUI?
Also grade da sollte es doch nicht möglich sein, die Daten von extern abzufragen. :gruebel:

Ich weiß, dass es zB über SnagIt möglich ist, den Inhalt eines TVirtualStringTree komplett zu auszulesen und als Bild, PDF oder sonstwas zu speichern oder zu drucken.

Zitat:

Zitat von cookie22 (Beitrag 1244756)
Vor allem fragt sich wie sinnvoll das Ganze ist, denn wenn man die Daten stehlen will, kann man ja auch mit Screenshots arbeiten. Oder direkt im Speicher drauf zugreifen.

Ich weiß ehrlich gesagt nicht, was dein Problem ist? Wenn du es sinnlos findest, gut. Aber darum gehts hier doch garnicht? Wenn du was sinnvolles zu meiner Fragestellung beitragen kannst, gern. Andernfalls würde ich dich bitten, damit aufzuhören, hier in dem Thread über Sinn oder Unsinn von Softwareschutz diskutieren zu wollen.

himitsu 21. Jan 2014 17:56

AW: Software gegen API-Zugriffe von aussen schützen?
 
Zitat:

Zitat von nuclearping (Beitrag 1244765)
Ich weiß, dass es zB über SnagIt möglich ist, den Inhalt eines TVirtualStringTree komplett zu auszulesen und als Bild, PDF oder sonstwas zu speichern oder zu drucken.

ScreenShot machen und darin nach Texten suchen, wirst du praktisch nie vollständig unterbinden können.


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:56 Uhr.
Seite 1 von 3  1 23      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz