Hallo,
ein Programm ist mit UPX gepackt... nun soll daran ein Text angehängt werden, welchen das Programm mit nutzen soll.
Text anhängen an sich kein Problem... aber geht das mit einer UPX-Exe überhaupt?
Oder muss das Programm sich selber dann erst nochmal einlesen um an den Text zu kommen?
Text an UPX-Exe anhängen?
Text an UPX-Exe anhängen?
PB 6.21 | Win 11
- 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
Nach dem upxen hängste den text + long mit länge ran, dann kannste
es nachher mit den fileoperationen wieder lesen. Gibts hier viele
Beispiele, einfach mal suchen
es nachher mit den fileoperationen wieder lesen. Gibts hier viele
Beispiele, einfach mal suchen

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.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Okay habe mal an eine .exe-Datei einen String sowie am Schluss den Long-Wert mit der Länge des Strings angehängt.
Wie liest man das jetzt wieder aus? Dateilänge minus 4?
Das liefert immer "0" zurück:
Wie liest man das jetzt wieder aus? Dateilänge minus 4?
Das liefert immer "0" zurück:
Code: Alles auswählen
programm$=ProgramFilename()
MessageRequester("",programm$,0)
OpenFile(0, programm$):FileSeek(0, Lof(0)-4):Zahl.l=ReadLong(0)
MessageRequester("",Str(Zahl.l),0)
CloseFile(0)
PB 6.21 | Win 11
-
- Beiträge: 6291
- Registriert: 29.08.2004 08:37
- Computerausstattung: Hoffentlich bald keine mehr
- Kontaktdaten:
ReadFile, weil OpenFile fehlschlägt (Ein If hätte doch nicht geschadet, oder?). Außerdem musst du wirklich darauf achten, dass du es nach dem UPXen anhängst.Delle hat geschrieben:Okay habe mal an eine .exe-Datei einen String sowie am Schluss den Long-Wert mit der Länge des Strings angehängt.
Wie liest man das jetzt wieder aus? Dateilänge minus 4?
Das liefert immer "0" zurück:
Code: Alles auswählen
programm$=ProgramFilename() MessageRequester("",programm$,0) OpenFile(0, programm$):FileSeek(0, Lof(0)-4):Zahl.l=ReadLong(0) MessageRequester("",Str(Zahl.l),0) CloseFile(0)
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
- Fluid Byte
- Beiträge: 3110
- Registriert: 27.09.2006 22:06
- Wohnort: Berlin, Mitte
Und was sollen wir machen? Raten? Exisitiert die Datei überhaupt? Wie schreibst in die .EXE rein?
Windows 10 Pro, 64-Bit / Outtakes | Derek
@Delle
1.) als c:\test.exe speichern
2.) upx verwenden
3.) test.exe modifizieren
ich hab noch nach dem string ein nullbyte drangehängt, um auf nummer sicher zu gehen. ReadString() hat ja leider kein len param und ich hatte keine lust jetzt extra deswegen ReadData() zu verwenden. 
ps: natürlich kannst du statt long, auch word oder byte verwenden, je nachdem wie lang der string sein soll.
c ya,
nco2k
1.) als c:\test.exe speichern
Code: Alles auswählen
If ReadFile(0, ProgramFilename())
FileSize = Lof(0) - SizeOf(Long)
FileSeek(0, FileSize)
FileSize - ReadLong(0) - SizeOf(Byte)
FileSeek(0, FileSize)
String$ = ReadString(0, #PB_Ascii)
CloseFile(0)
MessageRequester("", String$)
EndIf : End
3.) test.exe modifizieren
Code: Alles auswählen
If OpenFile(0, "c:\test.exe")
FileSeek(0, Lof(0))
WriteString(0, "Test", #PB_Ascii)
WriteByte(0, 0)
WriteLong(0, StringByteLength("Test", #PB_Ascii))
CloseFile(0)
EndIf : End

ps: natürlich kannst du statt long, auch word oder byte verwenden, je nachdem wie lang der string sein soll.
c ya,
nco2k
~|__/
..o.o.. <--- This is Einkaufswagen. Copy Einkaufswagen into your signature to help him on his way to world domination.
..o.o.. <--- This is Einkaufswagen. Copy Einkaufswagen into your signature to help him on his way to world domination.