cheat-engine/DBKKernel/amd64/noexceptionsa.asm
2017-01-05 12:04:15 +01:00

61 lines
No EOL
1.2 KiB
NASM

_TEXT SEGMENT 'CODE'
PUBLIC NoException14
NoException14:
;Security cookies sucks, so getjmp/longjmp are not usable
;So, just falling back to an exceptionless Copy command instead
;or disassemble the instruction RIP points at
;rsp=errorcode
;rsp+8=rip
;rsp+10=cs ;20
;rsp+18=eflags
;rsp+20=rsp
;rsp+28=ss
add rsp,8 ;skip the errorcode
push rax ;push rax -state as above again
mov rax,ExceptionlessCopy_Exception
mov [rsp+8],rax
pop rax
iretq ;go to the designated return address
PUBLIC ExceptionlessCopy_Internal
;rcx=destination
;rdx=source
;r8=size in bytes
ExceptionlessCopy_Internal:
push rbp
mov rbp,rsp
;[rbp] = old rbp value
;[rbp+8] = return address
;[rbp+10h] - [rbp+30h] = scratchspace
mov [rbp+10h],rsi
mov [rbp+18h],rdi
mov rsi,rdx
mov rdi,rcx
mov rcx,r8
rep movsb ;todo: split this up into movsq, movsd, movsw, movsd, or some of those other string routines
;on exception just exit
ExceptionlessCopy_Exception:
mov rsi,[rbp+10h]
mov rdi,[rbp+18h]
sub r8,rcx ;decrease the number of bytes left from the total amount of bytes to get the total bytes written
mov rax,r8
pop rbp
ret
_TEXT ENDS
END