Autor Beitrag
Poolspieler
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 45


D5 Prof / D7 Prof
BeitragVerfasst: Di 13.07.04 17:19 
Hallo,
ich möchte ein Bild hart in meine Exedatei einfügen (also in ein TImage ein Bild zur Entwurfszeit laden...)

Wie einfach ist es nun für einen Hacker, dieses Bild durch ein anderes zu ersetzen?
Was kann ich dagegen tun? --> muss ich ein dongle verwenden, oder gibt es eine vernünftige Softwarelösung??? :roll:

Gruß

Poolspieler

_________________
Ich weis, das ich nichts weis, aber was bringt mir das?
obbschtkuche
Gast
Erhaltene Danke: 1



BeitragVerfasst: Di 13.07.04 17:28 
Ein Hacker wird da wohl nicht viel machen können ;-)

Wenn es in einer Ressource ist, ist es leicht.
Wenn es sich auf dem Formular befindet auch.
Wenn es sich in einer externen Datei befindet nur wenn das Format bekannt ist.

Du könntest eine Prüfsumme des Bildes berechnen um zu überprüfen ob es das Richtige ist. Das lässt sich aber auch ganz schnel ausnopen oder die Prüfsumme die du speicherst kann geändert werden.
Poolspieler Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 45


D5 Prof / D7 Prof
BeitragVerfasst: Di 13.07.04 17:51 
Sorry,
wenn ich mich jetzt dumm stelle, aber was ist die Botschaft Deiner Antwort??? :?

Kann ich nun etwas dagegen tun - und zwar so viel, dass ein Hacker mehrere Wochen/Monate bräuchte um ein eigenes Bild ein meiner Exe zu platzieren...???

Ich weiß schon, dass es KEINE Software gibt, die vor Hackern sicher ist - aber man kann so ein Ziel ja zumindest mal anpeilen... :wink:

Bis jetzt befindet sich das Bild (ein Firmenlogo) einfach auf dem Formular selbst...
Das mit der Prüfsumme ist nicht schlecht - wie viel Aufwand ist es denn, diese Abfrage aus zu knocken???

Oder sollte ich doch über Dongles nachdenken - hat da jemand Erfahrungen???


Gruß und danke

Poolspieler

_________________
Ich weis, das ich nichts weis, aber was bringt mir das?
MSCH
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1448
Erhaltene Danke: 3

W7 64
XE2, SQL, DevExpress, DevArt, Oracle, SQLServer
BeitragVerfasst: Di 13.07.04 17:58 
Such dir einen richtig schönen Verschlüsselungsalgo - verrödel damit dein Bild und nimm als Key die Prüfsumme deiner Exe. Mit jeder Änderung der Exe (und der darin enthaltenen Resourcen) kann das Bild nicht mehr aufgelöst werden.
Nimm dazu einen 1024 Bit Schlüssel und DES oder RSA oder oder oder und der Hacker - wozu auch immer - kann es nicht mehr in vernüftiger Zeit decodieren.

Allerdings, warum sollte er das tun? Ist deine Software mehrere tausend Euronen werd?

grez
msch

***SATIRE*** ?

_________________
ist das politisch, wenn ich linksdrehenden Joghurt haben möchte?
obbschtkuche
Gast
Erhaltene Danke: 1



BeitragVerfasst: Di 13.07.04 18:09 
Poolspieler hat folgendes geschrieben:
wenn ich mich jetzt dumm stelle, aber was ist die Botschaft Deiner Antwort???


Dass das einzige was mit einfällt eine Prüfsumme ist, die sich aber dummerweise auch recht leicht umgehen lässt. Es kommt immer drauf an wie kompliziert Du es machst. Ansatzpunkte um es möglichst schwer zu machen wäre dass Du den Code deiner EXE zur Laufzeit modifizierst und wieder mit dem korrekten Code überschreibst - das würde schonmal alle disassemblisierer abhalten und vielleicht auch den ein oder anderen Debugger in den Wahnsinn treiben. Dann gibts noch eine API-Funktion (IsDebuggerPresent) die bringt aber in der Praxis auch so gut wie nichts, weil man sie hooken kann und schon gibt sie immer false zurück. (Ich meine aber irgendwann mal eine Version davon gesehen zu haben die ohne eine DLL arbeitet)

Zum Thema: Du könntest zum Beispiel Suche in: Delphi-Forum, Delphi-Library MD5 nehmen und den ein bissl modifizieren, damit es nicht ganz so leicht wird, dann aus den Daten deines Bildes eine Prüfsumme bilden und das dann mit einem festen Wert vergleichen. Die Prüfsumme Deiner EXE da rein zu bringen ist aber auch keine gute Idee, weil sich die sobald du die Prüfsumme in Deiner EXE änderst auch wieder ändert. Wenn Du sie extern ablegst hat das ganze keinen Sinn mehr, weil sie total einfach geändert werden kann. (Du hast also prinzipiell das selbe Problem wie der Cracker)

MSCH hat folgendes geschrieben:
... und der Hacker - wozu auch immer - kann es nicht mehr in vernüftiger Zeit decodieren.


IMHO könnte er immernoch die Verschlüsselung komplett entfernen und die Daten direkt unverschlüsselt in deine EXE verpflanzen.
neojones
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1206
Erhaltene Danke: 1



BeitragVerfasst: Di 13.07.04 18:29 
www.s-a-ve.com/faq/A...-Cracking-Tips-1.txt
www.s-a-ve.com/faq/EXE-Packer_ASPACK.txt
www.s-a-ve.com/faq/A...-Cracking-Tips-2.htm

Ich empfehle diese Links als Lektüre.

Merke: Wer teure Software ohne Dongle anbietet ist selbst schuld.

_________________
Ha! Es compiliert! Wir können ausliefern!
Poolspieler Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 45


D5 Prof / D7 Prof
BeitragVerfasst: Di 13.07.04 19:23 
Vielen Dank für eure Antworten.
Um so länger ich über dieses Problem nachdenke, umso mehr komme ich zu dem Schluss, dass neojones Recht hat!!!

Kannst Du und jemand anderes mir sagen, wo man gute Dongles (Preis vs. Leistung) herbekommt - auch erstmal in recht kleinen Stückzahlen?
Funktion Dongle:
Wenn ich das noch richtig weis, dann wird doch die Exe von einem speziellem Programm verschlüsselt (lokal auf dem Entwicklungs-PC).
Diese verschlüsselte Exe wird mit dem Dongle ausgeliefert.
Wenn man dann diese Exe auf dem Userrechner ausführt, wird diese verschlüsselte Exe an das Dongle gesendet, DORT entschlüsselt und ausgeführt.
--> So, oder so ähnlich funktioniert doch ein aktuelles Dongle - oder?

Gruß

Poolspieler (der wenig Ahnung von Dongles hat :shock: )

_________________
Ich weis, das ich nichts weis, aber was bringt mir das?
raziel
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2453

Arch Linux
JS (WebStorm), C#, C++/CLI, C++ (VS2013)
BeitragVerfasst: Di 13.07.04 19:38 
MSCH hat folgendes geschrieben:
Such dir einen richtig schönen Verschlüsselungsalgo - verrödel damit dein Bild und nimm als Key die Prüfsumme deiner Exe. Mit jeder Änderung der Exe (und der darin enthaltenen Resourcen) kann das Bild nicht mehr aufgelöst werden.

Wenn ein Cracker genügend Ahnung von der Sach hat, guckt er in die Exe, macht ne Prüfsumme davon und entschlüsselt das Bild und verschlüsselt sein Eigenes damit..., denn das Bild kann imho nicht in die Prüfsumme mit einbezogen werden!
Wieso ist eigentlich das Bild so wichtig??
Das mit dem Dongle: Ich kenn mich damit auch nich wirklich aus, aber wenn der wirklich so funktioniert, dann kann man theoretisch aus dem Speicher eine dekodierte Fassung der Exe ziehen (irgendwann müssen ALLE Exen dekodiert im Speicher vorhanden sein, um ausgeführt werden zu können - es sei denn sie werden interpretiert - aber das is was anderes).
Der beste Schutz gegen Raubkopien: Machs Freeware oder OpenSource ;-)

raziel

_________________
JSXGraph
obbschtkuche
Gast
Erhaltene Danke: 1



BeitragVerfasst: Di 13.07.04 19:42 
Wenn die Software wirklich teuer ist, (und du sowieso erstmal nur kleine Stückzahlen verkaufen willst) dann würde ich dir empfehlen jeder Software ein eigenes Wasserzeichen zu verpassen. (Irgendwo im Code wird sich schon ein kleines Stück Code reservieren lassen, das nie ausgeführt wird und wo du irgendwelche Daten reinschreiben kannst. Dann weißt du wenigstens wer für eine eventuelle Raubkopie verantwortlich ist.
Poolspieler Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 45


D5 Prof / D7 Prof
BeitragVerfasst: Di 13.07.04 19:45 
Nun,
das Bild hat einen wichtigen Hintergrund:
Es soll das Firmenlogo der Firma sein, die mein Programm kauft. Wenn mein Programm dann eine Rechnung oder einen Lieferschein druckt, dann erscheint IMMER das Firmenlogo auf dem Ausdruck.

--> Folglicher weise hilft es einer anderen Firma wenig, wenn sie das Programm raubkopiert, da ja auf den Ausdrucken das Logo einer anderen Firma erscheint...
(Ob ich das Programm jemals verkaufen werde/kann, weiß ich noch nicht, aber ich möchte mir diese Option auf jeden Fall jetzt schon offen halten...)

Ich glaube aber nicht, dass es sooo einfach ist, ein kommerzielles, proffessionelles Dongle zu knacken - von einem Cracker :wink: --> diese Dongles sind, so weit ich weiß auch nicht ganz billig...

Gruß

Poolplayer

_________________
Ich weis, das ich nichts weis, aber was bringt mir das?
Poolspieler Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 45


D5 Prof / D7 Prof
BeitragVerfasst: Di 13.07.04 19:48 
Moment, das mit dem Wasserzeichen verstehe ich auch nicht ganz - das ist dann doch der selbe Ansatz wie mit der Prüfsumme...

Und irgendwo im Code steht doch auch

ausblenden Quelltext
1:
2:
3:
4:
if wasserzeichen='schießmichtot' then
  begin
    ...
  end;


Oder verstehe ich Dich jetzt falsch?

Poolspieler

P.s.: Ja, die Software soll schon recht umfangreich werden (mehrere hundert stunden sind geplant...)

_________________
Ich weis, das ich nichts weis, aber was bringt mir das?
Poolspieler Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 45


D5 Prof / D7 Prof
BeitragVerfasst: Di 13.07.04 20:04 
Hi,
was haltet ihr von folgendem Dongle:
www.aladdin.de/produ...rdlock_hardware.html

Sind fast 400€ (--> 10 Dongles und Starterkit) zu viel, oder sollte man das Geld ausgeben???

:?: Ratlos :cry:

Gruß

Poolspieler

_________________
Ich weis, das ich nichts weis, aber was bringt mir das?
obbschtkuche
Gast
Erhaltene Danke: 1



BeitragVerfasst: Di 13.07.04 20:27 
Wasserzeichen in dieser Form:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
var
 dummy: boolean;
begin
 dummy := false;
 if dummy then
 asm
  db 23412653463323756385342634237217451544, ...
 end;
end;


Natürlich noch etwas komplizierter Verpackt, damit es nicht so leicht bemerkt wird. Außerdem wäre es noch ratsam statt so einem unsinn sinnvolle (Assembler-)Befehle zu nehmen, weil das sonst dem disassembler auffällt. Alternativ könntest du auch ein paar $90s hinten anfügen, dann wird die Wahrscheinlichkeit dass am Ende dadurch der Restliche Code durcheinandergeworfen wird geringer. Vermeiden solltest du dann allerdings die 102 ($66), da könnten ein paar mehr Befehle nicht belegt sein, hab ich aber nicht im Kopf. Gegebenenfalls einfach mal einen Brakepoint auf "if dummy then" setzen und STRG + SHIFT + C drücken.
UGrohne
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Veteran
Beiträge: 5502
Erhaltene Danke: 220

Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
BeitragVerfasst: Di 13.07.04 23:20 
Poolspieler hat folgendes geschrieben:
Hi,
was haltet ihr von folgendem Dongle:
www.aladdin.de/produ...rdlock_hardware.html

Sind fast 400? (--> 10 Dongles und Starterkit) zu viel, oder sollte man das Geld ausgeben???

:?: Ratlos :cry:

Gruß

Poolspieler


Von denen bekommst Du auch Test-Kits. Hab auf der Systems damals bei denen nachgefrat und ne Woche später stand das Paket vor meiner Tür. Da ist ein Dongle (Eval-Version, kommtn Popup) drin und die komplette Software. Konnte es aber noch nicht ausführlich testen. Frag einfach mal an, da kriegste bestimmt was. Die sind sehr penetrant, was auch den Kontakt angeht, also mit Anrufen alle paar Monate musste rechnen, is aber auch in Ordnung ;-)
MartinPb
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 698



BeitragVerfasst: Di 13.07.04 23:25 
Einige Fragen:

  • Welche delphi Version hast du?
  • Wie groß ist das Bild?

Wenn du Indy Komponenten in deiner Delphi Version hast, dann wirst du unter anderem den Base64 Encoder als Komponente finden. Mit dieser Komponente kannst du zuerst ein Decoder Programm bauen, das das Bild in Buchstaben-Strings zerlegt und daraus eine Unit erstellt. Das Bild hättest du somit als Buchstaben-Salat. Nach dem Start des Programms müßtest du die Buchstaben nur noch in die Binärform bringen und hättest das Bild zurück. Das kriegt keiner ausgetauscht und schwer ist das auch nicht.

_________________
Gruß
Martin
MAlsleben
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 303

W2k,WinXP
D3 - DXE3 Enterprise
BeitragVerfasst: Mi 14.07.04 10:38 
Hi,

also ich halte gar nichts von Dongles. Bei uns haben wir mit den Anwendungen bzw. Rechner, die diesen unbedingt benötigen, nur Probleme; egal was für ein Dongle. Eine Softwarelösung halte ich für besser. Beim Dongle's an der Parallel- Schnittstelle ständig Probleme beim Drucken, bei USB- eventl. nicht zertifizierte Treiber -> bzw. bei uns werden externen Schnittstellen ( außer NW- Karte) gesperrt. Also passt der USB-Dongle auch nicht ins Firmensicherheitskonzept. Also wären für solche Sachen Ausnahmen notwendig, dann macht aber kein Sicherheitskonzept sind. Wenn USB-offen, wird der Rechner mit irgendwelchen Mist von Zuhause , nach den Motto mal ausprobieren, geschossen. Also bei mir hinterläßt eine angebote Software mit Dongle als Schutz immer schon einen Scheiß-Beigeschmack. Es gibt immer ein Produkt, was es ohne kann, dann nehmen wir das.

Gruß Micha.

_________________
Viele Wege führen nach Rom.
neojones
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1206
Erhaltene Danke: 1



BeitragVerfasst: Mi 14.07.04 11:18 
@MAlsleben: Das ist die Sicht des Käufers einer Software. Der Verkäufer muss sich aber schützen und wenn der Käufer die Software mit Dongle nicht will: Pech gehabt, dann bekommt er die Software halt nicht. Ein Dongle ist ein wichtiger Investitionsschutz für den Hersteller... Denn eine Raubkopie kann über Leben und Tod eines Unternehmens entscheiden, wenn der Hersteller ein kleines Unternehmen ist und z.B. nur 3 oder 4 Kunden hat (Was z.B. bei branchenspezifischen Lösungen durchaus schon eine größe sein kann)

@Poolspieler: Ein Dongle ist auch hackbar, denn man braucht immer ein Software-Segment, das den Dongle anspricht und das kann ein guter Cracker auch lösen. Nichts desto trotz ist es derzeit der sicherste Investitionsschutz. Die Dongles von Aladdin hab ich mir mal angeschaut, sind gut zu konfigurieren, unterstützen Netzwerk-Lizenzmanagement auf Client-Basis, Nachkonfiguration und Paketsteuerung, etc.

Die Dongles von Wibu Systems sind auch nicht schlecht. www.wibu.de

_________________
Ha! Es compiliert! Wir können ausliefern!
Poolspieler Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 45


D5 Prof / D7 Prof
BeitragVerfasst: Mi 14.07.04 12:08 
Hallo,
vielen Dank erstmal für eure ausführlichen Antworten... :lol:

:arrow: Ich benutze Delphi 5 Professional
:arrow: Das Bild würde wohl so ca. 100 bis 500 kB haben und ein .jpg sein (ein Firmenlogo) halt

Das mit diesen Indykompenten hört sich aber auch sehr "crackbar" an - leider habe ich kein Gefühl dafür, wie einfach es ist, so eine Exe zu disasemblieren - weil ich sowas noch nie gemacht habe :(
Gibts da im Netz der Netze auch ein paar Infos drüber - mit welchen Werkzeugen man sowas macht, wie man vorgeht... etc.
--> Denn wenn man weis, wie diese Leute vorgehen, dann weis man auch, wogegen man sich schützen muss...
( :wink: Die Seiten von neojones werde ich mir mal ausdrucken und in Ruhe durchlesen - am Wochenende :wink: )

Das mit dem Testkit hört sich sehr gut an - da werde ich bei den genannten Firmen mal anfragen...

Dass auch ein Dongle Crackbar ist, ist mir schon klar --> was auf der Computerwelt ist nicht crackbar... :x
Aber die Frage ist, welchen Aufwand muss da jemand reinstecken...
Des weiteren steckt hinter so einem Dongle ja auch eine große Firma, die wohl alles daran setzen wird, dass ihre Dongles "sicher" sind. Alles andere würde den Ruin dieser Firma bedeuten - oder sehe ich da was falsch? Und diesen Service lassen sich die Donglefirmen ja auch gut bezahlen.

Gruß

Poolspieler

_________________
Ich weis, das ich nichts weis, aber was bringt mir das?
obbschtkuche
Gast
Erhaltene Danke: 1



BeitragVerfasst: Mi 14.07.04 14:22 
Also das was MartinPb vorgeschlagen hat ist ganz schnell ersetzt.

In der Regel wird wohl ein Debugger benutzt (was zum Austauschen eines Bildes benutzt wird kann ich dir nicht sagen, ich glaube nicht dass das irgendjemand macht :roll: )

Ein ziemlich guter heißt OllyDbg, kannst ihn Dir ja mal ansehen. Hauptproblem wird wohl sein herauszufinden wo das Bild abgelegt ist. Wie leicht das zu finden ist wird wohl von der Kodierung abhängen (Base64 ist wahrscheinlich so ziemlich das einfachste, weil der Debugger das als refernezierten Textstring erkennt und in einer Liste anzeigen kann)
MartinPb
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 698



BeitragVerfasst: Mi 14.07.04 21:41 
obbschtkuche hat folgendes geschrieben:
Also das was MartinPb vorgeschlagen hat ist ganz schnell ersetzt.


Glaube ich nicht. Erstens ist es kein Bild das du einfach austauschen kannst, sondern ein 700KByte großer String. Zerleg mal den String in viele Teilstrings und verteil diese auf mehrere Funktionen, die du irgendwann wieder zu einem String zusammenfügst. Versuch das zu ersetzten.

Man sollte nicht immer die einfachste Lösung annehmen.

_________________
Gruß
Martin