BYTE* zu unsigned in HEX



  • Hallo ich habe eine Variable

    BYTE *ShowAddr;

    und möchte dessen Wert in einen unsigned int übergeben aber in Hexadezimal.



  • Werds wohl mit stringstream machen:

    int eingabe
    stringstream Str;

    Str << hex << eingabe; //umwandeln der Zahl in einen String im hex format



  • cout << hex << (unsigned)ShowAddr;

    Ergibt: 50370000

    Str << hex << (unsigned)ShowAddr;

    Ergibt: 0x28fc3c

    😕



  • Ich nehme an, Du bist im falschen Unterforum. Hier ist C++/CLI, eine .NET Sprache, nicht C++.

    Zeige hier ein komplettes Beispiel-Programm, welches kompilier-, link- und ausführbar ist. So kann dir am besten geholfen werden. Z.B. ist bei dem gezeigten Code nicht klar wie du mit dem std::stringstream zum Ergebnis 0x28fc3c kommst - wo und wie wird es ausgegeben?

    Ausserdem hast du keine Frage gestellt, sondern nur zwei Ergebnisse präsentiert - möchtest du wissen, warum sie unterschiedlich sind?



  • Bei Fenstertitel einfach "Module Leser" eingeben.
    Ätzenderweise ist auf "Str" nicht die Gleiche Zahl wie vorher ausgegeben.

    #include <iostream>
    #include <windows.h>
    #include <tlhelp32.h>
    #include <sstream>
    
    using namespace std;
    
    int main()
    {
        SetConsoleTitle("Module Leser");
    
        DWORD dwProcessId;
        string strTitel;
        MODULEENTRY32 lpModuleEntry;
        HWND hWnd;
        stringstream Str;
        unsigned int BASIS_HIER;
    
        while(1){
        do{
            cout << "Fenstertitel: ";
            getline(cin, strTitel);
            hWnd = FindWindow(0, strTitel.c_str());
    
        }while(!hWnd);
        cout << endl;
    
        GetWindowThreadProcessId(hWnd, &dwProcessId);
        HANDLE hproc        = OpenProcess(PROCESS_ALL_ACCESS, FALSE, dwProcessId);
        HANDLE hSnapShot    = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, dwProcessId);
        if(!hSnapShot||!hproc)
            return 0;
    
        lpModuleEntry.dwSize = sizeof(lpModuleEntry);
        BOOL bModule = Module32First(hSnapShot, &lpModuleEntry);
    
        while(bModule)
        {
                cout << lpModuleEntry.szModule << "\t\t" << hex << (DWORD)lpModuleEntry.modBaseAddr << endl;
    
                if(lpModuleEntry.szModule == "kernel32.dll")
                    Str << hex << (unsigned)lpModuleEntry.modBaseAddr;
    
                bModule = Module32Next(hSnapShot, &lpModuleEntry);
        }
        CloseHandle(hSnapShot);
        cout << endl << Str << endl << endl;
      }
    
    }
    


  • Ok, habs ins richtige Forum gepostet. Der Thread hier kann geschlossen werden.


Anmelden zum Antworten