wie binäre datei einbinden und dann darauf zugreifen?

Rund um die LCL und andere Komponenten
Leberecht
Beiträge: 73
Registriert: Fr 28. Mai 2010, 08:39
OS, Lazarus, FPC: Win7 64bit, Lazarus 1.6.0 32bit (FPC 3.0.0)
CPU-Target: 32Bit
Wohnort: Heidelberg

wie binäre datei einbinden und dann darauf zugreifen?

Beitrag von Leberecht »

hallo,

ich habe ein problem, für das ich einfach keine lösung finde. ich möchte gern eine binärdatei von ca. 600kb grösse meinem lazarus-projekt hinzufügen, undzwar so, das diese später in der compilierten .exe
mit eingebunden ist (ähnlich den image bildcontainern, die man auf formularen platziert und die bilder enthalten). wichtig ist für mich ausserdem, das ich dann im programm leicht auf diese
ressource zugreifen und z.b. byte 425 auslesen kann. was ist da die beste vorgehensweise, gibts irgentein containerelement in der lcl, welches das kann?

vielen dank.

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: wie binäre datei einbinden und dann darauf zugreifen?

Beitrag von mschnell »

Ich weiß nicht wie das genau funktioniert, aber dafür gibt es die Möglichkeit "Ressourcen" einzubinden und zur Laufzeit auszulesen.

-Michael

Maik81ftl
Beiträge: 619
Registriert: Mi 9. Mär 2011, 16:34
OS, Lazarus, FPC: Ubuntu10.04 LTS (L 0.9.31.0 FPC 2.4.4)
CPU-Target: 64Bit
Wohnort: seit 01.06.2011 in Wahlstedt

Re: wie binäre datei einbinden und dann darauf zugreifen?

Beitrag von Maik81ftl »

Gehe ich davon aus, das Die Binäri als Exe vorliegt? wenn ja http://wiki.lazarus.freepascal.org/Exec ... rograms/de" onclick="window.open(this.href);return false;. sollte auch so mithelfen.
Ubuntu 10.04 LTS ist meine Heimat. Lazarus ist meine Sprache :D und der Kreis Segeberg meine LIEBE :D

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2822
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: wie binäre datei einbinden und dann darauf zugreifen?

Beitrag von m.fuchs »

@Maik81ftl: Du hast aber schon gelesen was Leberecht geschrieben hat? :wink:

Ressourcen sind wohl die Antwort (http://wiki.freepascal.org/Lazarus_Resources). Auf der Seite ist auch beschrieben, wie man per TResourceStream darauf zugreifen kann. Damit sollte dann auch per Seek oder ähnlichem ein Bytegenauer Zugriff möglich sein.

hth
Michael
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

creed steiger
Beiträge: 958
Registriert: Mo 11. Sep 2006, 22:56

Re: wie binäre datei einbinden und dann darauf zugreifen?

Beitrag von creed steiger »

lazmxstorage könnte es dir etwas erleichtern (ich hab's noch nicht getestet)

http://forum.lazarus.freepascal.org/ind ... 056.0.html" onclick="window.open(this.href);return false;

http://sourceforge.net/projects/lazmxstorage/" onclick="window.open(this.href);return false;

Leberecht
Beiträge: 73
Registriert: Fr 28. Mai 2010, 08:39
OS, Lazarus, FPC: Win7 64bit, Lazarus 1.6.0 32bit (FPC 3.0.0)
CPU-Target: 32Bit
Wohnort: Heidelberg

Re: wie binäre datei einbinden und dann darauf zugreifen?

Beitrag von Leberecht »

danke für die antworten. habs mal zuerst mit lazarus-ressourcen probiert -ging leider nicht:

1. das tools "lazres" benutzt, um aus einer .dat-datei(teile einer ehemaligen .jpg-datei) eine ressource zu machen. nach anleitung gemacht: "lazres meineNeueRessource.lrs res01.dat"
2. die .lrs in meinen projekt-ordner kopiert
3. in der betreffenden unit am schluss die ressource eingebunden:
initialization
{$I meineNeueRessource.lrs}

4. kompiliert. fehlermeldung: meineNeueRessource.lrs(65,3): Error: type conflict between set elements
es sieht wohl so aus, das er in einer zeile mit der art der binären daten nicht klarkommt.
auch ist die grösse der ressoucendaten um ein vielfaches grösser. original: 600kb, .lrs=2mb.

weiss jemand, was ich da tun kann. für reine fpc-ressoucen braucht man ja wieder eigene ressourcen-kompiler, so das ich lieber lei lazarus-ressoucen bleiben würde.

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2822
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: wie binäre datei einbinden und dann darauf zugreifen?

Beitrag von m.fuchs »

Leberecht hat geschrieben:[..] fehlermeldung: meineNeueRessource.lrs(65,3): Error: type conflict between set elements
Könnte sein dass der lazres da einen Fehler gemacht hat. Kannst du die betreffende Zeile der lrs mal posten? Und welche Lazarusversion nutzt du?
Leberecht hat geschrieben:[..]auch ist die grösse der ressoucendaten um ein vielfaches grösser. original: 600kb, .lrs=2mb.
Das ist normal, die .lrs sind immer größer. Im einkompilierten Zustand gilt das für die Ressourcen nicht mehr.

mfg
Micha
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

Leberecht
Beiträge: 73
Registriert: Fr 28. Mai 2010, 08:39
OS, Lazarus, FPC: Win7 64bit, Lazarus 1.6.0 32bit (FPC 3.0.0)
CPU-Target: 32Bit
Wohnort: Heidelberg

Re: wie binäre datei einbinden und dann darauf zugreifen?

Beitrag von Leberecht »

die betreffende zeile lautet:

+#249'fux'#165#154#24#217'FA.FO&'#158#243#221#223#219#201#20#151'A]X'#194#152

ich nutze lazarus 0.9.30, win 32bit (mit fpc 2.4.2).
„Viel zu lernen du noch hast.“
(Yoda zu Dooku)

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: wie binäre datei einbinden und dann darauf zugreifen?

Beitrag von pluto »

Was für ein Vorteil hat es, diese Binäre Datei einzubinden Statt Dynamisch drauf zuzugreifen?
Ich finde, dass hat nur "Nachteile".
MFG
Michael Springwald

Leberecht
Beiträge: 73
Registriert: Fr 28. Mai 2010, 08:39
OS, Lazarus, FPC: Win7 64bit, Lazarus 1.6.0 32bit (FPC 3.0.0)
CPU-Target: 32Bit
Wohnort: Heidelberg

Re: wie binäre datei einbinden und dann darauf zugreifen?

Beitrag von Leberecht »

kopierschutz, bzw. prüfen der lizenzdatei mittels keydatei(one time pad-verfahren). wenn ich die von einer externen quelle lade, kann man
mit einem disassembler wesentlich leichter die quelle identifizieren und auf das verfahren schliessen.
„Viel zu lernen du noch hast.“
(Yoda zu Dooku)

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: wie binäre datei einbinden und dann darauf zugreifen?

Beitrag von pluto »

So wie du es jetzt Plant aber auch. Es gibt tools, die können sowas feststellen. Es ist nicht viel schwerer. Aber die Leute die sich damit auskennen, für die ist das kein Problem. Mach das doch so wie bei Clonk.

Dort läuft es in etwa so ab:
Ich kaufe mir das spiel, dann bekomme ich eine E-Mail mit einer Datei. Diese Datei muss ich dann nur noch in ein Bestimmtes Verzeichnis Kopieren Fertig. Es kommt natürlich darauf an, wie du die Datei aufbaust. Z.B. könntest du Checksummen verwenden und der gleichen.
MFG
Michael Springwald

Leberecht
Beiträge: 73
Registriert: Fr 28. Mai 2010, 08:39
OS, Lazarus, FPC: Win7 64bit, Lazarus 1.6.0 32bit (FPC 3.0.0)
CPU-Target: 32Bit
Wohnort: Heidelberg

Re: wie binäre datei einbinden und dann darauf zugreifen?

Beitrag von Leberecht »

nein, wenn du code-obfuscation verwendest, kriegen die leute das eben nicht bzw. nur extrem schwer raus und ich glaube nicht, das jemand bei einer anwendung für 30 euro diesen aufwand betreiben würde. bei einer externen datrei braucht man halt nur die file-io zugriffe der anwendung beobachten, das geht alt auch mit obfuscation.
Ich kaufe mir das spiel, dann bekomme ich eine E-Mail mit einer Datei. Diese Datei muss ich dann nur noch in ein Bestimmtes Verzeichnis Kopieren Fertig. Es kommt natürlich darauf an, wie du die Datei aufbaust. Z.B. könntest du Checksummen verwenden und der gleichen.
das weiss ich alles und so mache ich es auch. nur die lizenzdatei muss ja auch verschlüsselt sein und mein prog muss diese entschlüsseln . dazu brauch ich einen key und die eingebundene ressource ist der key.
„Viel zu lernen du noch hast.“
(Yoda zu Dooku)

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2822
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: wie binäre datei einbinden und dann darauf zugreifen?

Beitrag von m.fuchs »

Leberecht hat geschrieben:die betreffende zeile lautet:

Code: Alles auswählen

+#249'fux'#165#154#24#217'FA.FO&'#158#243#221#223#219#201#20#151'A]X'#194#152
Hm,
mit dieser Zeile kommt mein Lazarus (gleiche Version wie deins) klar.
Abgesehen davon wäre das dritte Zeichen in der .lrs-Datei immer das + zum Beginn der neuen Zeile. Endet die vorherige Zeile vielleicht etwas seltsam?
Hast du es mal mit anderen Dateien versucht, an Stelle dieser die den Fehler produziert? Ich vermute mal die komplette .lrs und die Original-Datei kannst du aus Geheimhaltungsgründen nirgendwo zum Download zu stellen.

mfg
Micha
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

Leberecht
Beiträge: 73
Registriert: Fr 28. Mai 2010, 08:39
OS, Lazarus, FPC: Win7 64bit, Lazarus 1.6.0 32bit (FPC 3.0.0)
CPU-Target: 32Bit
Wohnort: Heidelberg

Re: wie binäre datei einbinden und dann darauf zugreifen?

Beitrag von Leberecht »

oh mann, ich hatte "LResources" in der uses-aufzählung vergessen -jetzt kompiliert er anstandslos durch.
sorry für die aufregung, daran hatte ich nicht gedacht.
„Viel zu lernen du noch hast.“
(Yoda zu Dooku)

Leberecht
Beiträge: 73
Registriert: Fr 28. Mai 2010, 08:39
OS, Lazarus, FPC: Win7 64bit, Lazarus 1.6.0 32bit (FPC 3.0.0)
CPU-Target: 32Bit
Wohnort: Heidelberg

Re: wie binäre datei einbinden und dann darauf zugreifen?

Beitrag von Leberecht »

ich sehe gerade, das die notwendige verwendung von "LResources" beim EINBINDEN von ressourcen-dateien in der anleitung
(http://wiki.freepascal.org/Lazarus_Resources" onclick="window.open(this.href);return false;) nicht erwähnt wird.
nur beim abfragen/zugriff auf die ressourcendaten(welche ja aus einer anderen unit heraus erfolgen kann) wird es als nötig erwähnt.
sollte man villeicht ein bisschen klarer schreiben.
„Viel zu lernen du noch hast.“
(Yoda zu Dooku)

Antworten