mirror of
https://github.com/cheat-engine/cheat-engine
synced 2026-08-15 02:26:08 -04:00
61 lines
No EOL
1.2 KiB
NASM
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 |