Deutsch
Quelltexte/ Codesnippets

Auslesen Ermitteln Exe Kompilat Version Xprofan

 
Mal als kleine Funktion chkXProfanVersionByExe die als Parameter einen Dateinamen erwartet und die Versionsnummer zurückliefert:
KompilierenMarkierenSeparieren
'{$cleq}
CLS
print chkXProfanVersionByExe(loadfile$("","*.exe"))
waitinput
end

proc chkXProfanVersionByExe

    parameters fle$
    var vers&=0
    var ofm&=SET("FileMode",0)
    var fh&=assign(fle$)

    if fh&

        openRW fh&

        ifnot %ioResult

            seek fh&,128
            seek fh&,getLong(fh&)+7
            case getlong(fh&) = $4E41464F : vers&=instr(chr$(getByte(fh&)),"0000000003456789ABCDEFGHIJKLMNOPQRSTUVWXYZ")*0.5
            close fh&

        endif

        assign fh&,""

    endif

    SET("FileMode",ofm&)
    return vers&

endproc


Umgesetzt basierend auf Informationen von einem Code von Roland
RGH

KompilierenMarkierenSeparieren
Declare Datei$, hDatei&, Version$, Adresse&
CLS
Datei$ = LoadFile$("Profn-Programm öffnen:", "*.exe")

If Datei$ > ""// Es wurde eine Datei ausgewählt

    hDatei& = Assign(Datei$)
    OpenRW hDatei&// Datei binär öffnen
    Seek hDatei&, $80// An dieser Position steht die Adresse des Compilates
    Adresse& = GetLong(hDatei&)
    Seek hDatei&, Adresse&// hier beginnt das Compilat
    Version$ = GetChar$(hDatei&, 18)
    // Die ersten 11 Zeichen sind immer " RGH-PROFAN"

    If Mid$(Version$, 1, 11) <> " RGH-PROFAN"

        MessageBox("Kein mit PROFAN² oder XProfan erzeugtes Programm!", "Hinweis:", 16)
        Close hDatei&
        End

    EndIf

    // Das 12. Zeichen ist die Version des Compilates und lässt Rückschlüsse auf die
    // XProfan-Version zu
    Version$ = Substr$(Version$, 12)

    Select Version$

        CaseOf "3" : Print "Profan² 5 (32 Bit)"

        CaseOf "4" : Print "Profan² 5 (32 Bit) mit $P* verschlüsselt"

        CaseOf "5" : Print "Profan² 6 (32 Bit)"

        CaseOf "6" : Print "Profan² 6 (32 Bit) mit $P* verschlüsselt"

        CaseOf "7" : Print "Profan² 7"

        CaseOf "8" : Print "Profan² 7 mit $P* verschlüsselt"

        CaseOf "9" : Print "XProfan 8"

        CaseOf "A" : Print "XProfan 8 mit $P* verschlüsselt"

        CaseOf "B" : Print "XProfan 9"

        CaseOf "C" : Print "XProfan 9 mit $P* verschlüsselt"

        CaseOf "D" : Print "XProfan 10"

        CaseOf "E" : Print "XProfan 10 mit $P* verschlüsselt"

        CaseOf "F" : Print "XProfan 11 oder X2"

        CaseOf "G" : Print "XProfan 11 oder X2 mit $P* verschlüsselt"

        Otherwise  : Print "Unbekannte Version " + Version$

    EndSelect

    Close hDatei&
    WaitInput

EndIf

End


Wegen eines Fehlers in XPSE bezüglich der Funktion GetLong per XPSE (momentan) nur mit GetWord-Workaround möglich:
KompilierenMarkierenSeparieren
 {$cleq}
CLS
print chkXProfanVersionByExe(loadfile$("","*.exe"))
waitinput
end

proc chkXProfanVersionByExe

    parameters fle$
    var vers&=0
    var ofm&=SET("FileMode",0)
    var fh&=assign(fle$)

    if fh&

        openRW fh&

        ifnot %ioResult

            seek fh&,128
            seek fh&,getWord(fh&)+getWord(fh&)*65536+7
            case getWord(fh&)+getWord(fh&)*65536 = $4E41464F : vers&=instr(chr$(getByte(fh&)),"0000000003456789ABCDEFGHIJKLMNOPQRSTUVWXYZ")*0.5
            close fh&

        endif

        assign fh&,""

    endif

    SET("FileMode",ofm&)
    return vers&

endproc


311 kB
Hochgeladen:14.12.2010
Ladeanzahl108
Herunterladen
 
14.12.2010  
 



Zum Quelltext


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

3.222 Betrachtungen

Unbenanntvor 0 min.
Member 862464113.05.2024
Sven Bader09.03.2021
Matzbub29.12.2018
AndreasS27.11.2018
Mehr...

Themeninformationen

Dieses Thema hat 1 Teilnehmer:

iF (1x)


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