AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Dateigröße ändern ohne Inhalt

Ein Thema von stho · begonnen am 18. Sep 2009 · letzter Beitrag vom 18. Sep 2009
Antwort Antwort
Seite 1 von 2  1 2      
stho

Registriert seit: 16. Sep 2009
Ort: 127.0.0.1
288 Beiträge
 
Delphi 2007 Professional
 
#1

Dateigröße ändern ohne Inhalt

  Alt 18. Sep 2009, 08:00
Seid mir nicht böse aber ich habe erst vor kurzer Zeit angefangen zu Programmieren.

1.
Besteht die Möglichkeit eine Datei "künstlich" zu strecken?
Beispiel: Ich habe eine .exe mit 300 KB, möchte sie aber auf 1 MB, 5 MB oder 20 MB vergrößern ohne ihren Inhalt (sachlichen Inhalt, Funktionsumfang oder sinnlose Units einzubinden) zu ändern?
Lässt sich diese Datei nachher auch wieder ausführen?


2.
Kann ich eine (beispielsweise) textdatei erstellen die leer ist, aber eine gewisse größe hat?
(ja, die Frage währe eigentlich die selbe wie bei 1, doch ich habe keine ahnung was es da für Möglichkeiten gibt)

P.S.
Zu meinem Wissensstand: Etwas Erfahrung mit Delphi (7 Wochen)
Keine Ahnung vom Aufbau von Dateien




Vielen Dank schonmal
Liebe Grüße
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: Dateigröße ändern ohne Inhalt

  Alt 18. Sep 2009, 08:08
a) genau sowas hatten wir schonmal (versteckt sich z.B. irgendwo da Hier im Forum suchendatei erstellen)
> http://www.delphipraxis.net/internal...t.php?t=157806

b) auch hier nochmal: Wozu das Ganze?


1: worallem hier seh ich keinen Sinn dahinter
aber ja, die läßt sich dann noch ausführen

2: genau das Selbe ... eine Datei ohne Inhalt ist irgendwie sinnlos und Platzverschwendung
Lösung: einfach z.B. viele Leerzeichen drin abspeichern?



OK, Speicher wird immer billiger und wir haben "Unmassen" davon zur Verfügung, aber warum wollen alle ständig Diesen mit Nichts verschwenden?
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
stho

Registriert seit: 16. Sep 2009
Ort: 127.0.0.1
288 Beiträge
 
Delphi 2007 Professional
 
#3

Re: Dateigröße ändern ohne Inhalt

  Alt 18. Sep 2009, 08:16
also ich bedanke mich schonmal eine Antwort auf Frage 2 habe ich ja jetzt bekommen.
Ich habe mir daurch diese Frage eigentlich einen EInblick in Frage 1 erhofft.

Nun, es gibt ein schönes kleines Programm das sich Exe-Pump nennt.
Zu lernzwecken möchte ich es nachbauen. Es soll eine beliebige Dateigröße erhöhen ohne den Inhalt zu verändern...

Auch wenn es in den Augen mancher vielleicht kindisch erscheinen mag,
zu lernzwecken sollte es vielleicht genutzt werden...


EDIT:
Also sehe ich das richtig, dass, wenn ich eine Datei in einen Stream lade, die Größe angebe (größer als die Datei vorher) und die dann wieder abspeichere, dass er die selbe Datei speichert, nur das ganze dann größer?
Und diese soll dann noch funktionsfähig sein?
(sorry wenn ich so doof frage)
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#4

Re: Dateigröße ändern ohne Inhalt

  Alt 18. Sep 2009, 08:29
Naja ... so ganz richtig nicht, nein.

An viele Dateien kann man Nullen anhängen, ohne den logischen INhalt zu verändern. Also z.B. Text ist (per c++ Definition) beim ersten Nullbyte zu ende. Wenn du also eine Textdatei mit Nullen auffüllst, und in ein Memo lädst wirst du immer noch den gleichen Text sehen. Aber man kann natürlich festestellen, das da Nullbytes hinten dran hängen. Und wahrscheinlich wird die Datei beim nächsten Speichern auch wieder gekürzt.

Etwas anderes ist das mit exe-Dateien. Da bei denen am Anfang die Länge gespeichert ist, weiß das Programm, wo die Datei zu Ende ist. Da kannst du beniebige Sachen hinten dranhängen, ohne dass das Programm unbrauchbar wird.

Es dürfte aber auch Dateien geben, bei denen das nicht funktioniert. iso-Images wären so ein Kanidat (kann mich aber auch irren) wo durch ändern der Dateigröße auch der logische Inhalt verändert wird.
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#5

Re: Dateigröße ändern ohne Inhalt

  Alt 18. Sep 2009, 08:32
Hallo,

ja das geht, ich nutze diese Möglichkeit, um ans Ende meiner Exen (via Aftercompile-Experten) eine MD5-Checksumme zu schreiben, die beim Programmstart überprüft wird, stimmt sie nicht, ist das Programm defekt oder manipuliert worden.

Das Vorgehen ist relativ einfach mit den vorhandenen Dateioperationen umzusetzen.

Datei zum Schreiben Öffnen.
Ans Ende der Datei gehen.
Gewünschten Inhalt schreiben.
Datei schließen.

Aber Vorsicht: Du kannst damit (und ein paar weiteren Änderungen am Programm) auch destruktive Fehlfunktionalitäten in das Programm einbauen. Nennt man wohl auch Virus oder Trojaner...
Ach, ich möchte das Programm einfach nur größer machen, halte ich so erstmal nicht unbedingt für sinnvoll.

Wenn man sich aber z. B. selbstentpackende ZIP's anschaut, so scheinen die genau auf diese Art und Weise zu funktionieren. Es gibt da z. B. SFXHEAD.SFX und dort wird dann das "normale" ZIP drangehangen und schon hat man ein selbstentpackendes Archiv.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: Dateigröße ändern ohne Inhalt

  Alt 18. Sep 2009, 08:33
Zitat von stho:
EDIT:
Also sehe ich das richtig, dass, wenn ich eine Datei in einen Stream lade, die Größe angebe (größer als die Datei vorher) und die dann wieder abspeichere, dass er die selbe Datei speichert, nur das ganze dann größer?
Und diese soll dann noch funktionsfähig sein?
(sorry wenn ich so doof frage)
Ja, da das was in der EXE drinsteckt sozusagen in einer Tabelle in der EXE drinsteht und somit Windows weiß, was wirklich benötigt wird.

Aber was soll man da lernen?

PS: EXE-Pump ist och ganz schön aufgepumpt (selbst mit Delphi bekommt man soein Programm hin, welches selber vielleicht nur 20 KB groß ist und als Batch-Datei reichen wenige Byte dafür aus)

Was willst du denn lernen?
Gibt da bestimmt andere/sinvollere Beispiele.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
stho

Registriert seit: 16. Sep 2009
Ort: 127.0.0.1
288 Beiträge
 
Delphi 2007 Professional
 
#7

Re: Dateigröße ändern ohne Inhalt

  Alt 18. Sep 2009, 08:37
natürlich gibt es sinnvollere bereiche.
Aber über sowas kann man fast überall streiten (Währe das Geld vom Staat nicht bei XYZ besser aufgehoben?, ...)


also eine 20KB exe in delphi schreiben, da das hab ich noch net hin bekommen. (VCL-Nutzer ^^)

Wie schaffe ich es denn an eine .exe eine bestimmte Menge an Nullen an zu hängen?
Ich hab leider keine vorstellung wie das geht

Wie viele Nullen währen denn dann 1 byte? 8 Nullen müssten 1 byte sein, oder?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: Dateigröße ändern ohne Inhalt

  Alt 18. Sep 2009, 08:44
Zitat von stho:
also eine 20KB exe in delphi schreiben, da das hab ich noch net hin bekommen. (VCL-Nutzer ^^)
man muß nichtmal zu NonVCL wechseln ... eine Konsolenapllication genügt da schon


Zitat von stho:
Wie schaffe ich es denn an eine .exe eine bestimmte Menge an Nullen an zu hängen?
Ich hab leider keine vorstellung wie das geht
öffne die Datei in einen FileStreem, setze .Position ans Dateiende und dann hat der Stream so Funktionen, welche mit "Write" anfangen und die da was hinten dranschreiben

Zitat von stho:
Wie viele Nullen währen denn dann 1 byte? 8 Nullen müssten 1 byte sein, oder?
da du eh nur in Byte schreiben kannst:
z.B. eine #0 = ein Byte
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#9

Re: Dateigröße ändern ohne Inhalt

  Alt 18. Sep 2009, 08:47
8-Nullen kann man mit einem Byte darstellen, da 1Byte 8Bit hat.

Da du aber einen MD5 anhängen willst brauchst du da ein paar Byte oder ein Cardinal.


Irgend wo hab ich hier ein Demo gehabt. Ich geh mal suchen...
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#10

Re: Dateigröße ändern ohne Inhalt

  Alt 18. Sep 2009, 08:49
Hallo,
Zitat von stho:
natürlich gibt es sinnvollere bereiche.
Aber über sowas kann man fast überall streiten (Währe das Geld vom Staat nicht bei XYZ besser aufgehoben?, ...)


also eine 20KB exe in delphi schreiben, da das hab ich noch net hin bekommen. (VCL-Nutzer ^^)

Wie schaffe ich es denn an eine .exe eine bestimmte Menge an Nullen an zu hängen?
Ich hab leider keine vorstellung wie das geht

Wie viele Nullen währen denn dann 1 byte? 8 Nullen müssten 1 byte sein, oder?
Eine 0 wäre ein Byte mit dem Hexadezimalwert 30 Du meinst aber vermutlich die hexadezimalen Nullen.

Sorry, beschäfige Dich erstmal noch nicht damit. Such' Dir mal aus der Hilfe die Dateioprationen heraus, mit denen Du das machen kannst, was ich weiter oben beschrieben habe. Wenn Du das hast, bist Du schon viel weiter und kannst dann anfangen Dich um den Inhalt zu kümmern. Erstmal Datei öffnen, Größe bestimmen, das Ende der Datei finden, berechnen, wieviele Byte zur gewünschten Größe fehlen und irgendwas in der berechneten Menge hintendranschreiben, Datei schließen und schauen, ob das überhaupt geht. Dann erledigt sich die Frage nach Nullen und ob 1 oder 8 Byte oder 1 Null = 1 Byte oder 8 Nullen = 1 Byte (fast) von selbst.

Da auch noch andere Vorschläge kamen, hast Du jetzt mindestens zwei Wege, um Dein Problem zu lösen.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 03:53 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