Deutsch
Bugs und vermeintliche

XProfan X3

XProfan X3 Runtime und UPX

 

Georg
Teles
Guten Abend,

als UPX-Poweruser wollte ich mein allererstes Programm in X3 erstellen und bin vielleicht auf einen möglichen BUG gestoßen.

Dazu habe ich eine Runtime wie üblich mit Ressourcen gefüttert und mit UPX komprimiert. Wenn ein Programmcode nun kompiliert & und zu einem Programm gelinkt wird, will dieses Programm eine PRC Datei haben obwohl diese ja bereits hineingelinkt ist !

Mit der originalen Runtime PrfRun32.exe (XProfan X3) passiert nach dem Komprimieren mit UPX das selbe. Allerdings funktionieren die Runtimes von XProfan 10.0 und X2 nach der UPX Komprimierung tadellos !

Ist es möglich, dass der Pointer in PrfRun32.exe der X3 auf die PRC darin etwas damit zutun hat ?

Denn... ich habe mit Kompiler & Linker der X2 eine Runtime der X3 (mit UPX komprimiert) kompiliert & gelinkt, selbes Phänomen.

Was aber funktioniert: Kompiler + Linker von X3 und Runtime von X2 (mit UPX komprimiert)

UPX Version: 3.91w
 
XProfan X3
TC-Programming [...] 
XProfan 8.0 - 10.0 - X2 - X3 - X4

02.01.2016  
 



Was genau passiert, wenn Du eine X3-PRC auf eine komprimierte X3-prfrun32.exe ziehst?
 
02.01.2016  
 




Georg
Teles
prfrun32.exe führt diese PRC aus, die PRC-Datei muss aber in der Runtime nach dem Linken verankert sein, sodass ich die EXE ohne PRC-Datei allein benutzen kann

sprich ich habe eine Datei.PRF, kompiliert + gelinkt kommt eine Datei.PRC und Datei.EXE nun starte ich die Datei.EXE welche 1 zu 1 wie eine PrfRun32.exe funktioniert und eine PRC-Datei haben möchte
 
XProfan X3
TC-Programming [...] 
XProfan 8.0 - 10.0 - X2 - X3 - X4

02.01.2016  
 



Ah, es erscheint der LoadFile-Dialog für eine PRC?
 
02.01.2016  
 




Georg
Teles
ganz genau

Edit: wenn ich die EXE im Notepad++ nachschaue, finde ich die PRC darin mit dem Anfang " RGH-PROFANG DATEI"
 
TC-Programming [...] 
XProfan 8.0 - 10.0 - X2 - X3 - X4

02.01.2016  
 



Oder die exe kann nicht aus sich selbst laden,
Benutzer-Zugriffproblem?

Hast Du mal den Exe-Header verglichen der gelinkten Exe, je nach dem ob Du die komprimierte oder unkomprimierte Runtime verwendest?
 
02.01.2016  
 




Georg
Teles
Ersteres eher nicht der Fall

bei dem Header weiss ich nicht, wonach ich suchen soll, schnell ein PE Explorer instaliert zeigt bei PrfRun32.exe und Programm.exe ziemlich das selbe, nur "Real Image CheckSum" und "CheckSum" unterscheiden sich
 
XProfan X3
TC-Programming [...] 
XProfan 8.0 - 10.0 - X2 - X3 - X4

02.01.2016  
 



Hab mal was unterstrichen, schau mal ob Runtime oder Linker nach dem falschen Schlüsselwort suchen:

RGH (21.05.04 12:46)
Hallo Pascal,

da es keinen Grund mehr gibt, es nicht zu tun, werde ich ein lange gehütetes Geheimnis lüften!

Zunächst einmal: Das Format der Header eines Compilates (gilt nicht für compilierte Unit) ist relativ einfach: Da steht eben nur am Anfang "RGH-PROFANx", wobei x derzeit ein Zeichen zwischen "2" und "A" ist und dem Runtime-Modul sagt, wie das Compilat zu interpretieren ist. (Dadurch ist es dem Runtime-Modul auch in Version 8.0a noch möglich, Compilate der Version 2.x zu verstehen.) Compilate der Version 8 haben hier entweder eine "9" oder ein "A" stehen, aus dem das Runtimemodul auf die Verschlüsselung "$P+" oder "$P*" schließen kann. Mehr Infos stehen nicht im Header und eine Checksumme gibt es auch nicht.

Das Runtime-Modul liest nun das komplette Compilat ein und geht (im Normalfall) davon aus, daß dieses bis zum Dateiende geht. Kommt nun - etwa durch angehängte Daten - etwas, das nicht als compilierter Code interpretiert werden kann, erfolgt die bekannte Fehlermeldung.

Und jetzt das bislang gehütete Geheimnis:

Wenn als physikalisch letzte Programmzeile der undokumentierte Befehl PROGEND steht, wird das Compilat nur bis zu diesem Befehl eingelesen. Das heißt: Dann können an die PRC-Datei (oder auch an die gelinkte EXE-Datei) angehängt sein, ohne das Runtimemodul zu irritieren. Passend dazu gibt es die Systemvariable %PROGEND, die die Position in der Datei angibt, wo das Compilat aufhört und die Daten beginnen. (Da diese Systemvariable natürlich nur im compilierten Zustand Sinn macht, liefert %PROGEND im Interpreter immer -1 zurück.)

Bei Units gibt es diese Möglichkeit allerdings nicht.

Warum ist das ganze bislang undokumentiert? Die Möglichkeit, Daten an das Compilat bzw. an die compilierte EXE anzuhängen, habe ich seinerzeit (bei Profan 6.5) für Sven Schmidts und sein Programm TME geschaffen, das diese Funktion benötigte. Mit ihm hatte ich Stillschweigen über diese Funktion bewahrt und ich pflege mich nun mal an mein Wort zu halten. Da aber TME seit einigen Jahren nicht mehr weiterentwickelt wurde und inzwischen auf Svens Seite schon lange nicht mehr gelistet ist, glaube ich dieses Schweigen nun brechen zu dürfen. (Sven, bitte nicht schlagen!)

Gruß
Roland
 
02.01.2016  
 




Georg
Teles
Das ist sehr interessant, das bringt mich aber nicht weiter.

Progend ans Ende des Codes in PRF eingefügt gibt %ProgEnd in der bereits gelinkten EXE die exakte Größe der PRC Datei bzw. deren Ende, ist ja auch logisch, ich übergebe ja die PRC-Datei an die EXE weil sie mich darum bittet die EXE der X2 gibt zB exakt die Position in der EXE wo der Programmcode endet

wie erwähnt, Alles mit XProfan 10.0 und X2 läuft einwandfrei egal ob ich die Runtimes mit UPX komprimiere oder nicht, nur die komprimierte X3 Runtime macht mich wahnsinnig

... ich teste mal eben einfach in einer Virtuellen Maschine ...

EDIT:
Beim Freund (Win 10 64 Bit) die PrfRun mit UPX komprimiert, kompiliert & gelinkt, selbes ergebnis, das selbe mit VM Win XP 32 Bit
 
TC-Programming [...] 
XProfan 8.0 - 10.0 - X2 - X3 - X4

02.01.2016  
 




Jörg
Sellmeyer
Ich habs noch nicht ganz kapiert. Hast du die fertige Exe komprimiert oder hast du die runtime komprimert und dann gelinkt?
Letzteres müsste eigentlich funktionieren.
 
XProfan X3
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
03.01.2016  
 




Georg
Teles
Runtime komprimiert (UPX) & dann kompiliert & gelinkt natürlich
 
XProfan X3
TC-Programming [...] 
XProfan 8.0 - 10.0 - X2 - X3 - X4

03.01.2016  
 




Jörg
Sellmeyer
Beim zweiten Lesen hab ichs dann auch gesehen

Da scheint dann wohl ein Fehler vorzuliegen und du musst warten, bis Roland zurück ist.
 
XProfan X3
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
03.01.2016  
 




Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

32.013 Betrachtungen

Unbenanntvor 0 min.
Georg Teles02.01.2023
Torsten Rümker10.05.2016
Sascha Haak12.04.2016
Rolf Koch09.04.2016
Mehr...

Themeninformationen



Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie