HyperDbg/hyperdbg/hyperhv/code/assembly/AsmSegmentRegs.asm

189 lines
No EOL
2.9 KiB
NASM

PUBLIC AsmGetCs
PUBLIC AsmGetDs
PUBLIC AsmSetDs
PUBLIC AsmGetEs
PUBLIC AsmSetEs
PUBLIC AsmGetSs
PUBLIC AsmSetSs
PUBLIC AsmGetFs
PUBLIC AsmSetFs
PUBLIC AsmGetGs
PUBLIC AsmGetLdtr
PUBLIC AsmGetTr
PUBLIC AsmGetGdtBase
PUBLIC AsmGetIdtBase
PUBLIC AsmGetGdtLimit
PUBLIC AsmGetIdtLimit
.code _text
;------------------------------------------------------------------------
AsmGetGdtBase PROC
LOCAL gdtr[10]:BYTE
sgdt gdtr
mov rax, QWORD PTR gdtr[2]
ret
AsmGetGdtBase ENDP
;------------------------------------------------------------------------
AsmGetCs PROC
mov rax, cs
ret
AsmGetCs ENDP
;------------------------------------------------------------------------
AsmGetDs PROC
mov rax, ds
ret
AsmGetDs ENDP
;------------------------------------------------------------------------
AsmSetDs PROC
mov rax, rcx
mov ds, rax
ret
AsmSetDs ENDP
;------------------------------------------------------------------------
AsmGetEs PROC
mov rax, es
ret
AsmGetEs ENDP
;------------------------------------------------------------------------
AsmSetEs PROC
mov rax, rcx
mov es, rax
ret
AsmSetEs ENDP
;------------------------------------------------------------------------
AsmGetSs PROC
mov rax, ss
ret
AsmGetSs ENDP
;------------------------------------------------------------------------
AsmSetSs PROC
mov rax, rcx
mov ss, rax
ret
AsmSetSs ENDP
;------------------------------------------------------------------------
AsmGetFs PROC
mov rax, fs
ret
AsmGetFs ENDP
;------------------------------------------------------------------------
AsmSetFs PROC
mov rax, rcx
mov fs, rax
ret
AsmSetFs ENDP
;------------------------------------------------------------------------
AsmGetGs PROC
mov rax, gs
ret
AsmGetGs ENDP
;------------------------------------------------------------------------
AsmGetLdtr PROC
sldt rax
ret
AsmGetLdtr ENDP
;------------------------------------------------------------------------
AsmGetTr PROC
str rax
ret
AsmGetTr ENDP
;------------------------------------------------------------------------
AsmGetIdtBase PROC
LOCAL idtr[10]:BYTE
sidt idtr
mov rax, QWORD PTR idtr[2]
ret
AsmGetIdtBase ENDP
;------------------------------------------------------------------------
AsmGetGdtLimit PROC
LOCAL gdtr[10]:BYTE
sgdt gdtr
mov ax, WORD PTR gdtr[0]
ret
AsmGetGdtLimit ENDP
;------------------------------------------------------------------------
AsmGetIdtLimit PROC
LOCAL idtr[10]:BYTE
sidt idtr
mov ax, WORD PTR idtr[0]
ret
AsmGetIdtLimit ENDP
;------------------------------------------------------------------------
AsmGetAccessRights PROC
lar rax, rcx
jz no_error
xor rax, rax
no_error:
ret
AsmGetAccessRights ENDP
END