Speicherzugriff



  • hallo,

    ich will gerne einen beliebigen speicherauszug mit assembler (in c) ausgeben lassen. ich scheitere leider daran, dass ich nicht weiss, wie ich speicheradressen ansprechen soll. das problem dabei ist, welche adressen kann ich gefahrenlos abrufen (wahrscheinlich alle.. solange ich nur lese.. aber wer sagt das ich nicht ausversehen was verändere...)? wie ist der speicher segmentiert?!? wie laufe ich durch den speicher?!?
    wenn jemand ein beispielprogramm hat, oder eine seite kennt die mir mit tutorials oder bspprogs weiterhilft, wäre ich dankbar, wenn er sie mir nennen könnte.

    vielen dank im voraus

    evil user



  • Auch lesen ist ab WinNT nicht erlaubt. Wenn du den Speicher auslesen willst, dann musst du Win9x oder DOS verwenden, oder einen Treiber schreiben.

    Im Protected Mode(32bit) der x86 Prozessoren kannst du, wenn du die entsprechenden Rechte hast, den gesamten Arbeitsspeicher wie eine globale Variable ansprechen. Das geht auch in C. Dazu weist du einem Pointer eine Bestimmte Adresse zu und liest dann den Wert aus, auf den der Pointer zeigt.



  • Wieso wollt ihr eigentlich immer alles mit Assembler machen? Warum einfach, wenn's auch kompliziert geht, oder wie?

    Da brauchst du wohl am ehesten die DbgHelp-Funktionen.



  • @Ringding:Das hier ist ein Assemblerforum!
    @Progchild:Wie schreibe ich einen Treiber? Zählt die Eingabeaufforderung auch als DOS(denke nicht,denn wenn ich mein Prog laufen lasse,kommt Direkter Speicherzugriff nicht erlaubt!).
    Läuft Windows XP im Protected mode oder wie komme ich da hin oder wie bekomme ich die entsprechenden Rechte?
    Gruß Evil user



  • evil user schrieb:

    @Ringding:Das hier ist ein Assemblerforum!

    Das stimmt, aber bei meiner Frage, warum du es in Assembler machen willst, geht es auch um Assembler.

    Ja, XP läuft im Protected Mode. Was willst du überhaupt auslesen? Zugriff auf den Speicher von anderen Prozesse bekommst du, wenn du Debugrechte dafür hast. Wenn die Prozesse als SYSTEM laufen, musst du AFAIK ein Service erstellen, damit das geht.

    Wenn du wirklich den kompletten Speicher von A-Z auslesen willst, brauchst du einen Treiber -> beschäftige dich mit Windows DDK, komm dann in ein paar Monaten bis Jahren wieder...



  • evil user schrieb:

    @Progchild:Wie schreibe ich einen Treiber?

    Für Windows Brauchst du das Driver Development Kit(Such mal bei der msdn nach DDK). Für Linux brauchst du nix weiter außer nem Compiler. Bei OS X sollte es ähnlich sein, aber ich kenne mich damit net aus.

    Zählt die Eingabeaufforderung auch als DOS(denke nicht,denn wenn ich mein Prog laufen lasse,kommt Direkter Speicherzugriff nicht erlaubt!).

    Gut erkannt.

    Läuft Windows XP im Protected mode oder wie komme ich da hin oder wie bekomme ich die entsprechenden Rechte?

    Alle Betriebssysteme die auf einem x86 Prozessor 32bitig sind, benutzen den P-Mode.

    In den Protected Mode kommst du so.

    mov eax, cr0
    	or eax, 1
    	mov cr0, eax
    

    Das klappt aber nur, wenn KEIN Betriebssystem geladen ist.



  • Habs zufällig so gelesen, und bin hierrauf gestoßen:

    ProgChild schrieb:

    In den Protected Mode kommst du so.

    mov eax, cr0
    	or eax, 1
    	mov cr0, eax
    

    und frag mich (oder eher Euch) jetzt:
    was ist "cr0"? Und wiso bringt das einem zum protected-mode? (bin Anfänger)



  • In Kuerze:
    Ist ein 32Bit-Register zur Steuerung spezieller CPU-Funktionen.
    Bit0 von CR0 steuert eben den Prozessormodus.
    Ist das Bit 1, laeuft die CPU im PM, bei 0 im RM.

    Ausfuehrlicher in den FAQ:
    C/C++ Forum :: FAQ - Assembler :: Protected Mode / MMX



  • Vielen Dank für Deine Antwort 🙂
    Leider verweist der link in dem faq auf eine ungültige seite 😞



  • 😮 Das ist echt nicht gut, da die Seite IMHO echt gut war. 😑
    Hoffentlich eine Voruebergehende Stoerung... Sonst muesste man den Typen mal anhauen, ob man die Seite nicht irgendwo anders hosten kann... 😕



  • Hab zwar jetzt noch nicht alle sachen im asm-faq gelesen...

    Ist eigentlich diser link schon bekannt?
    http://lowlevel.net.tc/
    Und dann auf der linken seite auf den link tutorials.
    Sehr viele interessante sachen auf deutsch zum Thema Betriebssystementwiklung
    Sehr empfehlenswert 🙂

    mfg


Anmelden zum Antworten