Kompressionsalgorithmus (x86 = x64)

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
Mok
BotHunter
Beiträge: 1484
Registriert: 26.12.2005 14:14
Computerausstattung: MSI GX780R
Intel Core i5-2410M
Nvidia GT 555M
Windows 7 Home Premium 64 bit
Wohnort:   

Kompressionsalgorithmus (x86 = x64)

Beitrag von Mok »

Hallo.
Da laut diesem Thread das Ergebnis eines CreatePack() unter x64 ein anderes ist als in x86, ich aber ein universelles Programm schreiben möchte, wollte ich euch Fragen, ob ihr einen anderen - möglichst effizienten - Packer-Algorithmus kennt.
Eigentlich könnte ich ja PureZIP von gnozal verwenden, aber ZIP kann so gut wie jeder öffnen, der will (das Archiv sollte nur vom Programm selbst geöffnet werden können), außerdem ist ZIP nicht gerade bekannt für seine extreme Kompressionsleistung.

Grüße, Mok


PS: Ist es eigentlich eine an Unmöglichkeit grenzende Schwierigkeit, einen eigenen Packer-Algorithmus zu schreiben?
Win 7 Home Premium 64 bit | PureBasic 5.20 - x86 und x86-64 | Firefox [aktuelle stable-Version hier einfügen]
"Jeder macht irgendwann mal Fehler, darum gibt's auch Bleistifte mit Radiergummi." --Carl
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Kompressionsalgorithmus (x86 = x64)

Beitrag von ts-soft »

PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Mok
BotHunter
Beiträge: 1484
Registriert: 26.12.2005 14:14
Computerausstattung: MSI GX780R
Intel Core i5-2410M
Nvidia GT 555M
Windows 7 Home Premium 64 bit
Wohnort:   

Re: Kompressionsalgorithmus (x86 = x64)

Beitrag von Mok »

Ah, interessanter Link, Danke :allright:
Bringt mich auch auf die Idee LZO und UCL in PB zu übersetzen :)

Edit:
luis hat geschrieben:I briefly tested UCL/LZO but the compression ratio seem quite low.
Na dann eben nicht...
Win 7 Home Premium 64 bit | PureBasic 5.20 - x86 und x86-64 | Firefox [aktuelle stable-Version hier einfügen]
"Jeder macht irgendwann mal Fehler, darum gibt's auch Bleistifte mit Radiergummi." --Carl
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Kompressionsalgorithmus (x86 = x64)

Beitrag von ts-soft »

ZLIB magste ja nicht, ansonsten könntest Du dies hier nehmen. Ist Crossplattform!
Entpacken tut das auch keiner, fehlt ja der typische ZIP-Header, ansonsten verschlüsseln.

Code: Alles auswählen

; Autor: Thomas (ts-soft) Schulz
; PB-Version: 4.xx
; OS: windows/linux/MacOS

CompilerSelect #PB_Compiler_OS
  CompilerCase #PB_OS_Linux
    ImportC #PB_Compiler_Home + "purelibraries/linux/libraries/zlib.a"
CompilerCase #PB_OS_MacOS
  ImportC "/usr/lib/libz.dylib"
  CompilerCase #PB_OS_Windows
    ImportC "zlib.lib"
CompilerEndSelect
  compress2(*dest, *destLen, *source, sourceLen, level)
  uncompress(*dest, *destLen, *source, sourceLen)
EndImport

Procedure zipPackMemory(*source, sourceLen = #PB_Default, level = #PB_Default)
  Protected *dest, destLen
  
  If level < #PB_Default Or level > 9 : level = #PB_Default : EndIf
  If *source
    If sourceLen = #PB_Default : sourceLen = MemorySize(*source) : EndIf
    destLen = sourceLen + 13 + (Int(sourceLen / 100))
    *dest = AllocateMemory(destLen)
    If *dest
      If Not compress2(*dest, @destLen, *source, sourceLen, level)
        *dest = ReAllocateMemory(*dest, destLen)
        ProcedureReturn *dest
      EndIf
    EndIf
  EndIf
EndProcedure

Procedure zipUnpackMemory(*source, *dest)
  Protected sourceLen = MemorySize(*source)
  Protected destLen = MemorySize(*dest)

  If Not uncompress(*dest, @destLen, *source, sourceLen)
    ProcedureReturn destLen
  EndIf
EndProcedure
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Mok
BotHunter
Beiträge: 1484
Registriert: 26.12.2005 14:14
Computerausstattung: MSI GX780R
Intel Core i5-2410M
Nvidia GT 555M
Windows 7 Home Premium 64 bit
Wohnort:   

Re: Kompressionsalgorithmus (x86 = x64)

Beitrag von Mok »

ts-soft hat geschrieben:ZLIB magste ja nicht
Wer hat das gesagt? Wer ist dieser verdammte Hobby*** der gerade sein Todesurteil unterschrieben hat? Keiner, was? Ist wohl der ver*** Weihnachtsmann gewesen
Nein, ernsthaft jetzt: Ist zum 1. Mal, dass ich was von ZLIB höre, obwohl ich mich eher für aPLIB entschieden hätte (wegen der kleinen Ausgabegröße). Aber wenn ZLIB am unwahrscheinlichsten (wegen fehlendem Header ist), nehm ich ZLIB. Oder gibt's was, was ihr mir noch eher empfehlt?
Win 7 Home Premium 64 bit | PureBasic 5.20 - x86 und x86-64 | Firefox [aktuelle stable-Version hier einfügen]
"Jeder macht irgendwann mal Fehler, darum gibt's auch Bleistifte mit Radiergummi." --Carl
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Kompressionsalgorithmus (x86 = x64)

Beitrag von ts-soft »

> Wer hat das gesagt?
Du, weil ZLIB = ZIP - Algoryhtmus!
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Mok
BotHunter
Beiträge: 1484
Registriert: 26.12.2005 14:14
Computerausstattung: MSI GX780R
Intel Core i5-2410M
Nvidia GT 555M
Windows 7 Home Premium 64 bit
Wohnort:   

Re: Kompressionsalgorithmus (x86 = x64)

Beitrag von Mok »

ts-soft hat geschrieben:> Wer hat das gesagt?
Du, weil ZLIB = ZIP - Algoryhtmus!
:oops:
Wie wahrscheinlich ist es, dass es Programme gibt, die LZMA und aPLib visualisieren und/oder entpacken können?
Win 7 Home Premium 64 bit | PureBasic 5.20 - x86 und x86-64 | Firefox [aktuelle stable-Version hier einfügen]
"Jeder macht irgendwann mal Fehler, darum gibt's auch Bleistifte mit Radiergummi." --Carl
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Kompressionsalgorithmus (x86 = x64)

Beitrag von ts-soft »

Mok hat geschrieben::oops:
Wie wahrscheinlich ist es, dass es Programme gibt, die LZMA und aPLib visualisieren und/oder entpacken können?
Wenn kein Header vorhanden, dann recht unwahrscheinlich, aber bei ZLIP auch (ist ja kein Header vorhanden).
Aber Du kannst das ganze doch verschlüsseln!
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Thorium
Beiträge: 1722
Registriert: 12.06.2005 11:15
Wohnort: Germany
Kontaktdaten:

Re: Kompressionsalgorithmus (x86 = x64)

Beitrag von Thorium »

Immer diese Geheimnisskrämerei. ^^
Nimm die Kompression, die am besten passt. LZMA dürfte die besten Ergebnisse liefern. Ein Schutz in welcher Weise auch imme ist eine Kompression sowieso nicht. Das zu entpacken ist leicht auch ohne header. Esseiden du schmeißt jede Menge Mülldaten mit rein. Willst du Scherheit _musst_ du verschlüsseln und den Schlüssel vom Benutzer eingeben lassen, nicht im Programm hinterlegen.
Zu mir kommen behinderte Delphine um mit mir zu schwimmen.

Wir fordern mehr Aufmerksamkeit für umfallende Reissäcke! Bild
Benutzeravatar
Mok
BotHunter
Beiträge: 1484
Registriert: 26.12.2005 14:14
Computerausstattung: MSI GX780R
Intel Core i5-2410M
Nvidia GT 555M
Windows 7 Home Premium 64 bit
Wohnort:   

Re: Kompressionsalgorithmus (x86 = x64)

Beitrag von Mok »

Thorium hat geschrieben:Willst du Scherheit _musst_ du verschlüsseln und den Schlüssel vom Benutzer eingeben lassen, nicht im Programm hinterlegen.
@Thorium:
Gibt's dafür auch Sourecodes? Mit den FileFingerprints von PB kannman nur Dateichecksummen erstellen.
Win 7 Home Premium 64 bit | PureBasic 5.20 - x86 und x86-64 | Firefox [aktuelle stable-Version hier einfügen]
"Jeder macht irgendwann mal Fehler, darum gibt's auch Bleistifte mit Radiergummi." --Carl
Antworten