MASM ExitWindowsEx auf Win9x



  • Hi ...

    Welche Befehle muss ich aufrufen ohne
    die DLL-Funktion zu nutzen (ExitWindowsEx) ?
    Sprich: Was muss ich pushen und popen 🙂 ?
    Bisher mache ich es wie folgt:

    ....
    ;par von ExitWindowsEx von rechts nach links übergeben
    push offset 0       ;0
    push 1              ;shutdown
    call ExitWindowsEx  ;funktionsaufruf (ExitWindowsEx)
    ....
    

    Hoffe Ihr könnt mir helfen ...
    bis denne
    Assembler-Newbie



  • Irgendwie versteh ich deine Frage nicht. Du willst ExitWindowsEx aufrufen ohne die Funktion aufzurufen?!? Oder suchst du jetzt eine Möglichkeit den Code für ExitWindowsEx selbst zu schreiben?



  • Ich glaube er will das Gleiche erreichen (PC herunterfahren) nur ohne die Funktion ExitWindowsEx.
    Glaube ich zumindest 😃



  • Hi ...

    Was Ihr beide sagt ist genau was ich machen möchte. 🙂

    Bis jetzt kann ich nur die Funktion von der
    WinApi nutzen, mittels des Aufrufes von
    call ExitWindowsEx,aber ich möchte ohne diese
    Funktion auskommen, also soll die Funktion
    durch die normalen Assemblerbefehle für das
    Herunterfahren ersetzt werden.

    bis denne
    Assembler-Newbie



  • Windows ist ein Betriebssystem, das den Prozessor im Protected-Mode betreibt. Das bedeutet für dich, dass du mit Assembler nicht mehr erreichen kannst als mit C++.
    Den Rechner herunterzufahren ist unmöglich, da Windows alle Versuche auf die ACPI-Hardware zuzugreifen blockt.

    Was spricht denn gegen ExitWindowsEx?



  • Hi ...

    cd9000:
    Ich programmiere gern mit C/C++ und möchte jetzt
    hinter die einzelnen Befehle
    (wie ExitWindowsEx und readdir() und ....)
    die ich aufrufe schauen und das mit ASM.
    An dem Befehl an sich (nur dem
    Funktionsaufruf mit call Funktionsname und vorher
    dem pushen :))
    ist nichts auszusetzen.
    Ich möchte aber gern Wissen was hinter diesem Befehl
    abläuft und nicht immer einen Funktionsaufruf nutzen
    den ich im Grunde gar nicht kenne.
    Danke für den Tipp mit dem
    "Advanced Configuration and Power Interface".

    bis denne
    Assembler-Newbie



  • *gg* Wenn du wirklich einige Funktionen selbst schreiben willst, bist du aber bei der Windows-Programmierung mit Assembler falsch.
    Da musst du dann schon auf DOS umsatteln, da kannst du alles bis ins Kleinste zerbasteln.
    In Windows gibt es, wie cd9000 bereits sagte, keine Alternative zu den WinAPI-/Treiber-Funktionen, wenn du auf Systemfunktionen (also zB. auch Windows beenden)/Hardware zugreifen willst - von daher ist Windows-Programmierung mit Asm IMHO auch weitgehend witzlos. 👎

    "Hinter die Funktionen schauen" kannst du in Windows zB. mit Soft-Ice. Das ist ein Debugger, mit dem du sogar Treiber und den Kernelcode disassemblieren kannst.
    Aber wie gesagt: Den Code, den du da liest, kannst du nicht einfach abschreiben und in deine Windows-Programmen einbauen.



  • Hi ...

    Nobuo T:("Hinter die Funktionen schauen" kannst du in Windows
    zB. mit Soft-Ice. Das ist ein Debugger, mit dem du sogar
    Treiber und den Kernelcode disassemblieren kannst.)

    -->Danke für den Tip, aber ein wenig teuer ist das schon, wenn Du
    das meinst was ich gefunden habe. 😕
    http://www.compuware.com/products/buyit/buyit.asp

    Oder meinst Du ein anderes Programm ? 🙄

    bis denne
    Assembler-Newbie



  • Jupp
    Hier die offizielle Site:
    http://www.microway.com.au/compuware/softice.stm

    Tja, vielleicht findeste ja im Netz eine *GRATIS-TEST-VERSION*
    muhahaha
    *scnr* 😃



  • Hi ...

    Danke..... für Eure Antworten, aber ich werde
    erstmal ASM mit Win9x und Linux lernen,
    und dann mit DOS weiter machen, da Win9x
    ja einen DOS-Kern hat.
    Wenn ich damit fertig bin habe ich eventuell
    selbst die Möglichkeit solch ein Prog zu tipseln,
    wie SOFTIce es ist.
    Zumindest werde ich daran arbeiten.

    Gratistestversion in DOS z.B. DEBUG.
    Egal.... danke...für Eure Antworten...

    bis denne
    Assembler-Newbie



  • Ich hab noch ne Idee:
    Da du ja unter Win9x programmierst kannst du mal versuchen auf Ring0 Ebene zu kommen int dann einfach ein int19h auslösen, damit rebootest du den PC.
    Tutorials dazu solltest du in Virii-Magazinen finden, Stichworte sind: Codebreakerz, *a21*, ...
    *Link zensiert*

    [edit]Bitte keine Links/Hinweise zu derart fragwuerdigen Seiten posten, danke.
    [/edit]



  • Hi...

    Danke HAR für den Tip.
    Werde ich ausprobieren.

    bis denne
    Assembler-Newbie


Anmelden zum Antworten