AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Softwareentwicklung im Allgemeinen Projektplanung und -Management Software gegen API-Zugriffe von aussen schützen?
Thema durchsuchen
Ansicht
Themen-Optionen

Software gegen API-Zugriffe von aussen schützen?

Ein Thema von nuclearping · begonnen am 20. Jan 2014 · letzter Beitrag vom 25. Jan 2014
Antwort Antwort
nuclearping

Registriert seit: 7. Jun 2008
708 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

Software gegen API-Zugriffe von aussen schützen?

  Alt 20. Jan 2014, 09:52
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.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.261 Beiträge
 
Delphi 12 Athens
 
#2

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

  Alt 20. Jan 2014, 10:01
Verwende FMX, da gibt es keine WinAPI zum Auslesen.

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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (20. Jan 2014 um 10:28 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von cookie22
cookie22

Registriert seit: 28. Jun 2006
Ort: Düsseldorf
936 Beiträge
 
Delphi XE2 Professional
 
#3

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

  Alt 20. Jan 2014, 10:21
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.
Gruß
Cookie
  Mit Zitat antworten Zitat
schöni

Registriert seit: 23. Jan 2005
Ort: Dresden
445 Beiträge
 
Delphi 7 Personal
 
#4

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

  Alt 23. Jan 2014, 12:10
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.
Mir stellt sich allerdings hier wieder mal die Frage, warum crachschutz sinnlos sein soll. Man kann nälich sehr wohl mit JEDEM wie auch immer gearteten Crackschutz den Aufwand für die illegale Nutzung der Software oder hier Daten für den illegalen Interessenten so schwer wie nur möhlich machen. Geht sogar bei Open Source. Hab ich jetzt erst wieder erlebt mit dem Mystix Texteditor-Projekt. Die nur schlecht dokumentierten JEDI Komponenten werden zwingend vorausgesetzt, deren Installation ein einziger Krampf ist, ich habe 3 volle Tage zur Installation gebraucht. Damit aber nicht genug, setzt Mystix noch die Units ThemeMgr.pas, ThemeSrv.pas, TmSchema.pas und UxTheme.pas voraus. Dann kommt noch dazu, das die Sysnedit-Codefolding Komponenten mit Unicode-Teilen verknüpft sind, die bei der Package Installation der Synedit Codefolding Komponenten nicht mit übersetzt werden. Das hat zur Folge, das sich Mystix noch immer nicht übersetzen lässt. Das alles bloß dafür das ich den Mystix Editor für meine vor längerer Zeit entwickelte "Einfache Freepascal IDE" zur Weiterentwicklung nutzen wollte, im nicht alles noch mal neu programmieren zu müssen. Der alte Entwurf ist alles Andere als stabil. Besser ich beginne neu. Deshalb wollte ich eben nicht ganz neu sondern auf dem Stand von Mystix beginnen. Der Autor ist nicht mehr erreichbar, keine gültige Emailadresse mehr. Ältere Versionen setzen neben Jedi auch noch die TB2K Kompos voraus, die zwar einfacher zu installieren sind, aber nerven tut das dennoch. Und ALLE Versionen auch die allererste kommt mit dem ThemeMgr daher, was deshalb nervt, da wegen angeblich ab Compilerversion oberhalb Delphi 7 dieser ThemeManger im Quelltext nicht mehr akzeptiert wird. Es gibt dehalb im Quelltext die folgende Zeile:

Delphi-Quellcode:
{$ifedf COMPILER_7_UP}
  Error: Delphi versions upper 7 have their own thememanger. You must remove the ThemeManager from
  the project for proper copmpilation.
{$endif}
Ich habe nun die Bezüge auf ThemeMgr.pas entfernt und nun kommt Compilerfehler ".exe kann nicht erstellt werden. Na toll.

Optimal geschützt der Mystix Editor. Optimal vor illegaler Veränderung abgesichert. Auch wenn Experten den sich zumLaufen kriegen werden. Bloß, habe ich in derselben Zeit nicht auch, übrigens mit den wirklich ansprechend aussehenden SPTBX KOmponenten oder mit den nun mal schon installierten Jedis das Editor Layout neu gebaut, einschließlich der Implementierung der Funktionen "Suchen", "Ersetzen", "Gehe zu Zeile" sowie der Clipboardfunktionen????

Wenn schon ein Softwareschutz soooooo sinnlos ist, dann macht es bitte wenigsten auf dem Gebiet der im Quelltext frei verfügbaren Software den interessierten Nutzern leichter setzt nicht schwierig zu installierende oder womöglich noch kostenpflichtige Koponenten voraus. Ausgenommen die Delphi Standard Komponenten. Die Jedis sind zudem nur schlecht dokumentiert und so für mich eher Ballast als nützliche Komponentensammlung. Auch ich habe, wenn auch in der Regel nur mitgelesen, wie ich jetzt auch wieder tun wollte, bis ich diesen Beitrag hier fand, die Geschichte mit Delphi Portable mit Interesse verfolgt. Und daher habe ich für mich beschlossen, die portable Version von Turbo Delphi zu nutzen, erweitert um die Teile, die zwar ohne .NET vorauszusetzen im Original, jedoch nicht in der im Internet verfügbaren englischen Version enthalten sind. Bereichert um den XRefactor aus der DP und ESSModel zur Modellunterstützung. Daher wollte ich eigentlich nicht noch in D7Per die Jedis noch mal installieren und den anderen Ballast dazu, um Mystix vielleicht doch noch zum Laufen zu kriegen. Bringt jetzt auch nix mehr, denn nach all dem Stress ist eine Weiterentwicklung dieses Projektes nur noch kommerziell möglich. Im Preis wäre dann aber auch der Anschaffungspreis für einen neuen fett ausgestatteten PC mit mindesten 4GB RAM, SSD Festplatte, etc. plus aktuelle Softwareentwicklungswerzeuge, abhängig von zukünftigen möglichen Projekten zwingend enthalten. Somit wird so eine Entwicklung für eine neue IDE wohl kaum sinnvoll sein, wenn mir da die IDEs von MS, einigen OpenSource-Entwicklern oder auch von Emba ansehe.

Ist die Software gut, dann wird sie eh gecrackt. Egal welchen Machanismus man verwendet. Das ist alles nur Zeitverschwendung.
Sicher. Aber es ist sehr wohl möglich, dem illegalen Interessenten das Leben zur Hölle zu machen. Siehe voriger Absatz. Das funktioniert sogar bei frei verfügbarem Quelltext!
Damit der Topf nicht explodiert, lässt man es ab und zu mal zischen.
  Mit Zitat antworten Zitat
nuclearping

Registriert seit: 7. Jun 2008
708 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

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

  Alt 20. Jan 2014, 11:06
Verwende FMX, da gibt es keine WinAPI zum Auslesen.

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.

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.
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.

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?

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.

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. 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.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.261 Beiträge
 
Delphi 12 Athens
 
#6

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

  Alt 20. Jan 2014, 11:44
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.

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.

Dann startet der Bösewicht halt sein Programm auch als Admin?
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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
nuclearping

Registriert seit: 7. Jun 2008
708 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#7

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

  Alt 21. Jan 2014, 11:56
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.

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.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.261 Beiträge
 
Delphi 12 Athens
 
#8

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

  Alt 21. Jan 2014, 12:04
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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:10 Uhr.
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