Thema: [FASM] Heavens Gate Example

Ergebnis 1 bis 5 von 5

  1. #1
    Super Moderator
    Registriert seit Jun 2013
    Ort припять
    Beiträge 54

    [FASM] Heavens Gate Example

    Author: DeadlyVermilion

    Code:
    include 'win32ax.inc' ;We want to run as a x86 process
    .data
            szMessageCaption        DB "DeadlyVermilion", 0
            szMessageText32         DB "This seems to be running on a 32 bit operating system.", 0
    .code
    proc Our64Proc ;This proc is x64 code
         use64
            CALL @F
            DB "This was generated using 64 bit ASM code.", 0
    @@:
            POP RAX
            MOV RCX, RAX
         use32
            RETF
    endp
    start:
            ;invoke DebugBreak ;Used for debugging
            MOV AX, CS
            CMP AL, 1Bh ;1Bh for 32 bits native, 33h if 64 bits native, 23h for wow64
            JE Its32BitsNative
            CMP AL, 33h
            JE ExitCode
            XOR ECX, ECX
            CALL 33h:Our64Proc
            invoke MessageBox, 0, ECX, szMessageCaption, MB_OK
            JMP ExitCode
    Its32BitsNative:
            invoke MessageBox, 0, szMessageText32, szMessageCaption, MB_OK
    ExitCode:
            invoke ExitProcess, 0
    .end start
  2. #2
    Member
    Registriert seit Jul 2013
    Beiträge 75

    AW: [FASM] Heavens Gate Example

    Hmm da ich die Heavens Gate Methode nicht kenne, würde mich interessieren, ob ich den Code hier richtig verstanden habe:
    Das Codesegment entscheidet hier, ob der Code als x86 oder als x64 ausgeführt werden soll. Wenn das Codesegment 1Bh/23h ist, läuft der Code als x86,
    wenn es auf 33h gesetzt ist als x64. Um den Modus zu wechseln führt man einfach ein FarJump aus richtig? Dann würde mich noch interessieren, ob das Codesegment unter Windows den Prinzipien der
    32 bit Segmentierung folgen, wie man sie von low level Ebene her kennt.

    Vielen Dank im vorraus, 0xC3
  3. #3
    Johannes
    Guest

    AW: [FASM] Heavens Gate Example

    ja du hast ihn richtig verstanden. Ich verwende diesen Technik in meinem C Bot.

    Ich programmiere den x64 Code in NASM und füge den Code dann mit dem EMIT Befehl in den C Code ein. Zum Switchen in den 64-Bit Modus gibts entweder diese CALL Möglichkeit oder

    push cs
    call $+5
    add dword [esp], 5
    retf

    damit kann man direkt dahinter mit dem x64 Code beginnen.

    Du kannst alles mit x64 Code machen, es gibt keine Beschränkungen.
  4. The Following User Says Thank You to Johannes For This Useful Post:

    Polymorphin (7. July 2013)

  5. #4
    Member
    Registriert seit Jul 2013
    Beiträge 75

    AW: [FASM] Heavens Gate Example

    Ok vielen Dank Johannes :)
  6. #5
    Super Moderator
    Registriert seit Jun 2013
    Ort припять
    Beiträge 54

    AW: [FASM] Heavens Gate Example

    Hier ist ein schöner Artikel der die Thematik ausfürlich beschreibt =)
    [Nur Registrierte Mitglieder können diesen Inhalt sehen. ]

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein