Assembler + C



  • hallo kann mir jemand sagen was ich falsch gemacht habe

    #include "stdafx.h"
    #include <windows.h>
    #include <stdio.h>
    WORD Get()
    {
    WORD value3 = 0;
    DWORD value4 = 0;
    __asm
    {
    mov ax,0ffffh
    mov ds,ax
    mov si,0eh
    mov ax,ds:si //aufgrund dieser zeile bekomme ich eine fehlermeldung
    mov value3,ax
    }
    double inhalt=value3;
    return (WORD)inhalt;
    }

    int main(int argc, char* argv[])
    {
    printf("%i",(int)Get());
    return 0;
    }



  • Wirst wohl eine eckige Klammer um si brauchen. Aber dass das unter Windows nicht funktionieren kann, ist dir hoffentlich schon klar, oder?



  • ne das war mir nicht klar

    mov ax,0ffffh
    mov ds,ax
    mov si,0eh
    mov eax,ds:[esi]
    mov value4,eax

    das gibt keine fehlermeldung beim kompilieren
    sag mir doch bitte wie ich es schaffe diese addresse unter windows unter der benutzung des msvc 6.0 auszulesen



  • weil windoof u.a. mit virtuellen adressen arbeitet. vielleicht hilft dir das hier weiter: http://www.phrack.org/phrack/59/p59-0x10.txt



  • hi,

    man kann unter windows nicht einfach ds ändern! ⚠
    Sollte einen GPF schmeißen, da protected-mode.


Log in to reply