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
Seite 1 von 3  1 23      
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, 10: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
44.071 Beiträge
 
Delphi 12 Athens
 
#2

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

  Alt 20. Jan 2014, 11: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.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (20. Jan 2014 um 11: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, 11: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
nuclearping

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

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

  Alt 20. Jan 2014, 12: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
44.071 Beiträge
 
Delphi 12 Athens
 
#5

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

  Alt 20. Jan 2014, 12: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.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
nuclearping

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

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

  Alt 21. Jan 2014, 12: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
44.071 Beiträge
 
Delphi 12 Athens
 
#7

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

  Alt 21. Jan 2014, 13: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.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von cookie22
cookie22

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

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

  Alt 21. Jan 2014, 16:25
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.
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.
Gruß
Cookie

Geändert von cookie22 (21. Jan 2014 um 16:42 Uhr)
  Mit Zitat antworten Zitat
nuclearping

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

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

  Alt 21. Jan 2014, 18:30
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.
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.

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

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

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

  Alt 21. Jan 2014, 18:56
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.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 00:00 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