Deutsch
Bugs und vermeintliche

FreeProfan Bugs und vermeintliche

FreeProfan32 und API UpdateResource

 
- Seite 1 -



Matthias
Arlt
Bei der Fehlersuche in einem meiner Programme ist mir aufgefallen, dass ein schreibender Zugriff mit "UpdateResource" auf die Runtime (bzw. Interpreter) regelmäßig die Datei unbrauchbar macht. Soweit ich herausgefunden habe, oder dies jedenfalls annehme, wird der Schreibvorgang zwar ausgeführt, aber die Änderung nicht im Header eingetragen... Dies führt dann beim Startversuch der Datei zu unterschiedlichen Fehlermeldungen. Meist "Nur ein Teil der ReadProcessMemory- oder WriteProcessMemory-Anforderung wurde abgeschlossen" oder "Falscher Parameter...".
Es betrifft auch ausschliesslich FreeProfan, die XProfan-Versionen sind von diesem Effekt nicht betroffen.

Gruß Matthias
 
WinXP SP2, Win7 - XProfan 10/11/FreeProfan32 - Xpia
10.04.2016  
 



 
- Seite 3 -


Büdde hierzu noch ein Wunsch, wo ihr grad an der Exe frickelt:

Das Console-Flag als Kompilerschalter!

Den Code hierzu  [...]  habe ich längst nicht mehr parat und weiß leider auch nicht mehr die Stelle im PE-Header. Mit dem Flag kann man ein XProfan-Konsolen-Programm in der cmd ausführen ohne das es für die eigenen Konsole-Ausgaben zwangsläufig eine neues Konsolenfenster öffnet.

Es brachte damals (wohl XProfan 9) scheinbar auch nichts durcheinander und die XProfan-Programme liefern ganz normal.

Hab hierzu grad noch einen alten Beitrag gefunden:  [...]  und Konsole-API  [...]  .
 
21.04.2016  
 




RGH
Sodele, jetzt habe ich (zunächst für FreeProfan32) auch den Compiler umgestrickt: Die PRC-datei wird nun als Ressource des Typs "XPRC" mit Namen "Programm" der Runtime hinzugefügt. Da sie nun nicht mehr zwingend am Ende des fertigen Programmes liegt, sondern in den Ressourcen, wird automatisch vor dem Kompilieren dem Programm die Zeile "ProgEnd" hinzugefügt, damit die Runtime auch das Ende des Kompilates erkennt.

Die Runtime habe ich zunächst nicht geändert ("Never change ...."), da die Suche ja nach dem Kompilat ja weiterhin so erfolgen kann, wie bisher. (Bei Gelegenheit werde ich das dann aber optimieren.)

Jetzt wird auch ein fertiges Programm nicht mehr durch Löschen einer Ressource unbrauchbar.

Gruß
Roland

@iF: Welches Byte des Headers genau muss auf welchen Wert gesetzt werden?
 
Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4
21.04.2016  
 




Matthias
Arlt
Das fragliche Flag liegt bei Offset (long(runtime#,60) + 92).
Für die Console sollte dort $3 stehen, für Window $2.

Alles weitere liegt in Rolands Hand...

Gruß Matthias
 
WinXP SP2, Win7 - XProfan 10/11/FreeProfan32 - Xpia
21.04.2016  
 




Matthias
Arlt
Das ist doch mal 'ne interessante Lösung...die PRC als Ressource

Gefällt mir gut!
 
WinXP SP2, Win7 - XProfan 10/11/FreeProfan32 - Xpia
21.04.2016  
 




RGH
Vorerst kann man sich das ja dann bei Bedarf mit jedem Hexeditor selber patchen.

Das FreeProfan32-Paket habe ich jetzt frisch hochgeladen. Es liegt an der bekannten Adresse bereit!

Am Wochenende hoffe ich dann, Zeit zu finden, die Änderungen auch für FreeProfan64 und später dann auch für XProfan durchzuführen.

Gruß
Roland
 
XProfan X3
Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4
21.04.2016  
 




Matthias
Arlt
Roland, was vielleicht noch zu prüfen wäre:
Ob bei jedem Compiler-Durchlauf wirklich exakt die gleiche Dateistruktur erzeugt wird. Wegen der Festwerte für die Sektionsgrößen. Wenn nämlich nicht, müsste man den nötigen Differenzbetrag dann dynamisch ermitteln, was kein Problem wäre, man muss es halt nur wissen.

Ich gehe mal davon aus, dass das nicht nötig sein wird, aber sicher ist sicher...

Gruß Matthias
 
WinXP SP2, Win7 - XProfan 10/11/FreeProfan32 - Xpia
21.04.2016  
 



RGH (21.04.2016)
@iF: Welches Byte des Headers genau muss auf welchen Wert gesetzt werden?


Sorry, ich schrieb ja sinngemäß, dass ich es leider nicht mehr weiß.
 
21.04.2016  
 




Matthias
Arlt
@iF: ich habs doch schon rausgesucht...


Das fragliche Flag liegt bei Offset (long(runtime#,60) + 92).
Für die Console sollte dort $3 stehen, für Window $2.
 
WinXP SP2, Win7 - XProfan 10/11/FreeProfan32 - Xpia
21.04.2016  
 



Genau, habs nicht überlesen und mir die 92 gemerkt.

[OFFTOPIC]Roland hatte nur überlesen, dass ich sinngemäß schrieb, es im Moment nicht "auf dem Schirm" zu haben. Wäre nicht meine Art, den Wert "92" nicht auch direkt zu zitieren, wenn ich ihn denn wüsste. Insofern hatte mich Rolands Frage nur irritiert und Dich wiederum meine Antwort auf seine Frage. ^^[/OFFTOPIC]
 
21.04.2016  
 




Michael
W.
RGH (21.04.2016)
Ressource des Typs "XPRC" mit Namen "Programm"




Ressource des Typs "XPRC" mit Namen "Programm1", "Programm2", "Programm3"

...und dann ChoiceBox oder Programmname über Parameterschalter...




Ich weiß, es ist schrecklich das jede Lösung zu neuen Wünschen (und Problemen) führt...
 
System: Windows 8/10, XProfan X4
Programmieren, das spannendste Detektivspiel der Welt.
21.04.2016  
 




Matthias
Arlt
Folgendes bitte ignorieren (Fehldiagnose, weil der Kopf vom vielen Code-Durchforsten rauchte...):
Hm...so interessant das zunächst schien mit der XPRC-Ressource...
Ein Packen der Runtime ist dadurch aber wohl unmöglich geworden.
 
 
WinXP SP2, Win7 - XProfan 10/11/FreeProfan32 - Xpia
22.04.2016  
 




funkheld
If kannst du bitte dein Clientprogramm als Source offenlegen ?

Danke.
Gruss
 
22.04.2016  
 




Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

67.402 Betrachtungen

Unbenanntvor 0 min.
Sven Bader16.09.2021
Rainer Hoefs12.07.2019
p.specht20.12.2018
Walter23.05.2018
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