Hexadezimalwerte im Programmcode



  • Hey,

    ich stoße in letzter Zeit vermehrt auf Hexadezimalzahlen im Programmcode. Dies meisten in Zusammenhang mit File I/O. Manchmal sehe ich dies auch als normale Parameter übergabe als integer. Da ich in der Uni bisher noch nix über die Vorteile erfahren habe, würde ich es gerne von euch wissen. 🙂

    Was ich ebenfalls bisher noch nicht verstanden habe, betrifft die Adressierung innerhalb von Executables. Als Beispiel folgender Code:

    PIMAGE_SECTION_HEADER psh;
            psh = (PIMAGE_SECTION_HEADER)SECHDROFFSET (pImage);
    
            // Find the ".plugins" segment
            int i;
            for( i=0; i<nSectionCount; i++ ) {
                    if( (*((DWORD *)(psh->Name))==0x756C702E) &&
                            (*(((DWORD *)(psh->Name))+1)==0x736E6967) ) {
                            break;
                    }
                    psh++;
            }
    

    Was für eine Bedeutung haben zum Beispiel bei diesem Code die beiden Hex-Werte? Handelt es sich um Speicheradressen? Wenn dem so ist, woher weiß ich diese zur Erstellungszeit?

    Ich hoffe ihr könnt mir helfen... 😞

    Danke!



  • Hier handelt es sich um Tokens, das Programmstück sucht eine bestimmte Wertekombination in einem Segment und setzt einen Zeiger DAHINTER, damit man dort dann irgendwelche Schreib-/Lesevorgänge vornehmen kann.

    Aber wie der Kommentar zeigt wird die Festlegung welcher Wert gesucht wird und warum man das machen kann ausschließlich durch den Aufbau der Plugins bestimmt, d.h. irgendwann hat sich jemand den Aufbau ausgedacht und dies irgendwo (hoffentlich) kommentiert, dieses Programm nutzt nun diese Schnittstelle/Festlegung/Dokumentation aus.

    Mehr steckt nicht dahinter und es hat auch keinen zu verallgemeinenderen Nutzwert.


Anmelden zum Antworten