mirror of
https://github.com/vosen/ZLUDA.git
synced 2025-04-24 09:34:44 +00:00
520 lines
16 KiB
NASM
Vendored
520 lines
16 KiB
NASM
Vendored
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
;;
|
|
;; Detours Test Program (x64.asm/disas.exe)
|
|
;;
|
|
;; Microsoft Research Detours Package
|
|
;;
|
|
;; Copyright (c) Microsoft Corporation. All rights reserved.
|
|
;;
|
|
|
|
.xlist
|
|
.list
|
|
.code
|
|
|
|
PUBLIC TestCodes
|
|
|
|
_TEXT SEGMENT
|
|
|
|
TestCodes PROC
|
|
|
|
begin:
|
|
faraway:
|
|
int 3
|
|
nop
|
|
int 3
|
|
db 066h,090h ; // 2-byte NOP.
|
|
int 3
|
|
db 00fh, 01fh, 000h ; // 3-byte NOP.
|
|
int 3
|
|
db 00fh, 01fh, 040h, 000h ; // 4-byte NOP.
|
|
int 3
|
|
db 00fh, 01fh, 044h, 000h, 000h ; // 5-byte NOP.
|
|
int 3
|
|
db 066h, 00fh, 01fh, 044h, 000h, 000h ; // 6-byte NOP.
|
|
int 3
|
|
db 00fh, 01fh, 080h, 000h, 000h, 000h, 000h ; // 7-byte NOP.
|
|
int 3
|
|
db 00fh, 01fh, 084h, 000h, 000h, 000h, 000h, 000h ; // 8-byte NOP.
|
|
int 3
|
|
db 066h, 00fh, 01fh, 084h, 000h, 000h, 000h, 000h, 000h ; // 9-byte NOP.
|
|
int 3
|
|
mov rax, cr8
|
|
int 3
|
|
mov rcx, cr8
|
|
int 3
|
|
mov rdx, cr8
|
|
int 3
|
|
mov rbx, cr8
|
|
int 3
|
|
mov rsp, cr8
|
|
int 3
|
|
mov rbp, cr8
|
|
int 3
|
|
mov rsi, cr8
|
|
int 3
|
|
mov rdi, cr8
|
|
int 3
|
|
mov r8, cr8
|
|
int 3
|
|
mov r9, cr8
|
|
int 3
|
|
mov r10, cr8
|
|
int 3
|
|
mov r11, cr8
|
|
int 3
|
|
mov r12, cr8
|
|
int 3
|
|
mov r13, cr8
|
|
int 3
|
|
mov r14, cr8
|
|
int 3
|
|
mov r15, cr8
|
|
int 3
|
|
mov cr8, rax
|
|
int 3
|
|
mov cr8, rcx
|
|
int 3
|
|
mov cr8, rdx
|
|
int 3
|
|
mov cr8, rbx
|
|
int 3
|
|
mov cr8, rsp
|
|
int 3
|
|
mov cr8, rbp
|
|
int 3
|
|
mov cr8, rsi
|
|
int 3
|
|
mov cr8, rdi
|
|
int 3
|
|
mov cr8, r8
|
|
int 3
|
|
mov cr8, r9
|
|
int 3
|
|
mov cr8, r10
|
|
int 3
|
|
mov cr8, r11
|
|
int 3
|
|
mov cr8, r12
|
|
int 3
|
|
mov cr8, r13
|
|
int 3
|
|
mov cr8, r14
|
|
int 3
|
|
mov cr8, r15
|
|
int 3
|
|
xor rax, rax
|
|
int 3
|
|
xor rcx, rcx
|
|
int 3
|
|
xor rdx, rdx
|
|
int 3
|
|
xor rbx, rbx
|
|
int 3
|
|
xor rsp, rsp
|
|
int 3
|
|
xor rbp, rbp
|
|
int 3
|
|
xor rsi, rsi
|
|
int 3
|
|
xor rdi, rdi
|
|
int 3
|
|
xor r8, r8
|
|
int 3
|
|
xor r9, r9
|
|
int 3
|
|
xor r10, r10
|
|
int 3
|
|
xor r11, r11
|
|
int 3
|
|
xor r12, r12
|
|
int 3
|
|
xor r13, r13
|
|
int 3
|
|
xor r14, r14
|
|
int 3
|
|
xor r15, r15
|
|
int 3
|
|
jmp rax
|
|
int 3
|
|
jmp rbx
|
|
int 3
|
|
jmp rcx
|
|
int 3
|
|
jmp rdx
|
|
int 3
|
|
push rax
|
|
int 3
|
|
push rbx
|
|
int 3
|
|
push rcx
|
|
int 3
|
|
push rdx
|
|
int 3
|
|
push 0
|
|
int 3
|
|
pop rax
|
|
int 3
|
|
pop rbx
|
|
int 3
|
|
pop rcx
|
|
int 3
|
|
pop rdx
|
|
int 3
|
|
mov rax,[value]
|
|
int 3
|
|
sub rsp,0418h
|
|
int 3
|
|
mov [rsp+0410h],rbx
|
|
int 3
|
|
mov [rsp+0408h],rsi
|
|
int 3
|
|
mov [rsp+0400h],rdi
|
|
int 3
|
|
mov [rsp+03f8h],r12
|
|
int 3
|
|
mov [rsp+03f0h],r13
|
|
int 3
|
|
mov [rsp+03e8h],r14
|
|
int 3
|
|
mov [rsp+03e0h],r15
|
|
int 3
|
|
add [rax],al ; 0000
|
|
int 3
|
|
add [rcx],al ; 0001
|
|
int 3
|
|
add [rbx],al ; 0003
|
|
int 3
|
|
add [rax+rax],al ; 000400
|
|
int 3
|
|
add [rdi],al ; 0007
|
|
int 3
|
|
add [rax],cl ; 0008
|
|
int 3
|
|
add [rdi],cl ; 000f
|
|
int 3
|
|
add [rax],dl ; 0010
|
|
int 3
|
|
add [rdi],bl ; 001f
|
|
int 3
|
|
add [rax],ah ; 0020
|
|
int 3
|
|
add [rdi],bh ; 003f
|
|
int 3
|
|
add [rax+03bh],cl ; 00483b
|
|
int 3
|
|
add [rdi],bh ; 007f00
|
|
int 3
|
|
add [rax+040000000h],al ; 008000000040
|
|
int 3
|
|
add bh,bh ; 00ff
|
|
int 3
|
|
add [rax],eax ; 0100
|
|
int 3
|
|
add al,[rax] ; 0200
|
|
int 3
|
|
add eax,06603ebc3h ; 05c3eb0366
|
|
int 3
|
|
syscall ; 0f05
|
|
int 3
|
|
prefetchw byte ptr [rcx] ; 0f0d09
|
|
int 3
|
|
prefetchnta byte ptr [rcx] ; 0f1801
|
|
int 3
|
|
prefetchnta byte ptr [rax+rdx] ; 0f180410
|
|
int 3
|
|
jb again ; 0f8247070000
|
|
int 3
|
|
jnb again ; 0f8306050000
|
|
int 3
|
|
je again ; 0f8432010000
|
|
int 3
|
|
jne again ; 0f8508010000
|
|
int 3
|
|
jnbe again ; 0f878a000000
|
|
int 3
|
|
ldmxcsr dword ptr [rcx+034h] ; 0fae5134
|
|
int 3
|
|
stmxcsr dword ptr [rcx+034h] ; 0fae5934
|
|
int 3
|
|
and ecx,[rdx+rbx*4] ; 230c9a
|
|
int 3
|
|
xor eax,eax ; 33c0
|
|
int 3
|
|
xor ecx,ecx ; 33c9
|
|
int 3
|
|
xor edx,ecx ; 33d1
|
|
int 3
|
|
xor edx,edx ; 33d2
|
|
int 3
|
|
add r10d,010001h ; 4181c201000100
|
|
int 3
|
|
and r11d,0ffffh ; 4181e3ffff0000
|
|
int 3
|
|
mov eax,r8d ; 418bc0
|
|
int 3
|
|
mov byte ptr [r11],00h ; 41c60300
|
|
int 3
|
|
call qword ptr [r9+030h] ; 41ff5130
|
|
int 3
|
|
call qword ptr [r9+r8*8] ; 43ff14c1
|
|
int 3
|
|
mov [rcx+034h],r8d ; 44894134
|
|
int 3
|
|
mov [rsp+030h],r9d ; 44894c2430
|
|
int 3
|
|
mov r8d,[rcx] ; 448b01
|
|
int 3
|
|
mov r9d,[rcx] ; 448b09
|
|
int 3
|
|
mov r8d,[rax+058h] ; 448b4058
|
|
int 3
|
|
mov r8d,[rsp+02ch] ; 448b44242c
|
|
int 3
|
|
mov r8d,eax ; 448bc0
|
|
int 3
|
|
mov r8d,edx ; 448bc2
|
|
int 3
|
|
xor r8b,r8b ; 4532c0
|
|
int 3
|
|
mov r9d,r8d ; 458bc8
|
|
int 3
|
|
lea r11d,[r9+rax] ; 458d1c01
|
|
int 3
|
|
add rdx,rcx ; 4803d1
|
|
int 3
|
|
or rsi,rdx ; 480bf2
|
|
int 3
|
|
movnti [rcx],rax ; 480fc301
|
|
int 3
|
|
and rax,0fe000000h ; 4825000000fe
|
|
int 3
|
|
sub rax,rcx ; 482bc1
|
|
int 3
|
|
sub rdx,rcx ; 482bd1
|
|
int 3
|
|
cmp rdi,rbp ; 483bfd
|
|
int 3
|
|
push rbp ; 4855
|
|
int 3
|
|
add rcx,03d0h ; 4881c1d0030000
|
|
int 3
|
|
add rsp,0c8h ; 4881c4c8000000
|
|
int 3
|
|
and rdx,0fe000000h ; 4881e2000000fe
|
|
int 3
|
|
sub rsp,0c8h ; 4881ecc8000000
|
|
int 3
|
|
sub rsp,03d0h ; 4881ecd0030000
|
|
int 3
|
|
add rax,040h ; 4883c040
|
|
int 3
|
|
add rcx,08h ; 4883c108
|
|
int 3
|
|
add rcx,040h ; 4883c140
|
|
int 3
|
|
add rsp,08h ; 4883c408
|
|
int 3
|
|
add rsi,09h ; 4883c609
|
|
int 3
|
|
add rdi,01h ; 4883c701
|
|
int 3
|
|
and rcx,0f8h ; 4883e1f8
|
|
int 3
|
|
sub rax,040h ; 4883e840
|
|
int 3
|
|
sub rdx,08h ; 4883ea08
|
|
int 3
|
|
sub rdx,040h ; 4883ea40
|
|
int 3
|
|
sub rsp,08h ; 4883ec08
|
|
int 3
|
|
sub rsi,08h ; 4883ee08
|
|
int 3
|
|
sub rdi,01h ; 4883ef01
|
|
int 3
|
|
test rax,rax ; 4885c0
|
|
int 3
|
|
test rdx,rdx ; 4885d2
|
|
int 3
|
|
mov [rsp],rax ; 48890424
|
|
int 3
|
|
mov [rsp],rbp ; 48892c24
|
|
int 3
|
|
mov [rsp],rsi ; 48893424
|
|
int 3
|
|
mov [rsp],rdi ; 48893c24
|
|
int 3
|
|
mov [rcx+08h],rax ; 48894108
|
|
int 3
|
|
mov [rcx+078h],rax ; 48894178
|
|
int 3
|
|
mov [rcx-08h],rax ; 488941f8
|
|
int 3
|
|
mov [rsp+018h],rax ; 4889442418
|
|
int 3
|
|
mov [rcx+010h],rdx ; 48895110
|
|
int 3
|
|
mov [rsp+08h],rbx ; 48895c2408
|
|
int 3
|
|
mov [rsp+018h],rsi ; 4889742418
|
|
int 3
|
|
mov [rsp+08h],rdi ; 48897c2408
|
|
int 3
|
|
mov [rsp+010h],rdi ; 48897c2410
|
|
int 3
|
|
mov [rcx+098h],rax ; 48898198000000
|
|
int 3
|
|
mov [rcx+080h],rcx ; 48898980000000
|
|
int 3
|
|
mov [rcx+088h],rdx ; 48899188000000
|
|
int 3
|
|
mov [rcx+090h],rbx ; 48899990000000
|
|
int 3
|
|
mov [rcx+0a0h],rbp ; 4889a9a0000000
|
|
int 3
|
|
mov [rcx+0a8h],rsi ; 4889b1a8000000
|
|
int 3
|
|
mov [rcx+0b0h],rdi ; 4889b9b0000000
|
|
int 3
|
|
mov rax,[rcx] ; 488b01
|
|
int 3
|
|
mov rax,[rcx+rdx] ; 488b0411
|
|
int 3
|
|
mov rax,[value] ; 488b05318c0100
|
|
int 3
|
|
mov rcx,[rsp] ; 488b0c24
|
|
int 3
|
|
mov rsi,[rsp] ; 488b3424
|
|
int 3
|
|
mov rdi,[rsp] ; 488b3c24
|
|
int 3
|
|
mov rax,[rax+018h] ; 488b4018
|
|
int 3
|
|
mov rax,[rcx+078h] ; 488b4178
|
|
int 3
|
|
mov rax,[rdx+020h] ; 488b4220
|
|
int 3
|
|
mov rax,[rsp+08h] ; 488b442408
|
|
int 3
|
|
mov rcx,[rcx+08h] ; 488b4908
|
|
int 3
|
|
mov rcx,[rsp+020h] ; 488b4c2420
|
|
int 3
|
|
mov rdx,[rsp+08h] ; 488b542408
|
|
int 3
|
|
mov rdi,[rsp+08h] ; 488b7c2408
|
|
int 3
|
|
mov rax,[rcx+098h] ; 488b8198000000
|
|
int 3
|
|
mov rax,[rcx+0f8h] ; 488b81f8000000
|
|
int 3
|
|
cmp ebx,0 ;
|
|
int 3
|
|
cmp rbx,0 ;
|
|
int 3
|
|
cmp byte ptr [value],77h ; 803d........77
|
|
int 3
|
|
cmp dword ptr [value],77h ; 833d........77
|
|
int 3
|
|
cmp qword ptr [value],77h ; 48833d........77
|
|
int 3
|
|
cmp dword ptr [value],77777777h ; 813d........77777777
|
|
int 3
|
|
cmp qword ptr [value],77777777h ; 48813d........77777777
|
|
int 3
|
|
nearby:
|
|
jo nearby ; 70xx
|
|
int 3
|
|
jno nearby ; 71xx
|
|
int 3
|
|
jb nearby ; 72xx
|
|
int 3
|
|
jae nearby ; 73xx
|
|
int 3
|
|
je nearby ; 74xx
|
|
int 3
|
|
jne nearby ; 75xx
|
|
int 3
|
|
jbe nearby ; 76xx
|
|
int 3
|
|
ja nearby ; 77xx
|
|
int 3
|
|
js nearby ; 78xx
|
|
int 3
|
|
jns nearby ; 79xx
|
|
int 3
|
|
jp nearby ; 7axx
|
|
int 3
|
|
jnp nearby ; 7bxx
|
|
int 3
|
|
jl nearby ; 7cxx
|
|
int 3
|
|
jge nearby ; 7dxx
|
|
int 3
|
|
jle nearby ; 7exx
|
|
int 3
|
|
jg nearby ; 7fxx
|
|
int 3
|
|
jmp nearby ; ebxx
|
|
|
|
int 3
|
|
jo faraway ; 0f80xxxxxxxx
|
|
int 3
|
|
jno faraway ; 0f81xxxxxxxx
|
|
int 3
|
|
jb faraway ; 0f82xxxxxxxx
|
|
int 3
|
|
jae faraway ; 0f83xxxxxxxx
|
|
int 3
|
|
je faraway ; 0f84xxxxxxxx
|
|
int 3
|
|
jne faraway ; 0f85xxxxxxxx
|
|
int 3
|
|
jbe faraway ; 0f86xxxxxxxx
|
|
int 3
|
|
ja faraway ; 0f87xxxxxxxx
|
|
int 3
|
|
js faraway ; 0f88xxxxxxxx
|
|
int 3
|
|
jns faraway ; 0f89xxxxxxxx
|
|
int 3
|
|
jp faraway ; 0f8axxxxxxxx
|
|
int 3
|
|
jnp faraway ; 0f8bxxxxxxxx
|
|
int 3
|
|
jl faraway ; 0f8cxxxxxxxx
|
|
int 3
|
|
jge faraway ; 0f8dxxxxxxxx
|
|
int 3
|
|
jle faraway ; 0f8exxxxxxxx
|
|
int 3
|
|
jg faraway ; 0f8fxxxxxxxx
|
|
int 3
|
|
jmp faraway ; e9xxxxxxxx
|
|
|
|
int 3
|
|
lea rax,[rsp] ; 488d0424
|
|
int 3
|
|
mov rcx,0BADC0DEBA5Eh ; 48b95ebadec0ad0b0000
|
|
int 3
|
|
cmp rax,rcx ; 483bc1
|
|
|
|
int 3
|
|
sub rsp, 28h
|
|
int 3
|
|
add rsp,28h
|
|
int 3
|
|
ret
|
|
int 3
|
|
|
|
|
|
;; The list is terminated by two "int 3" in a row.
|
|
again:
|
|
int 3
|
|
int 3
|
|
TestCodes ENDP
|
|
|
|
value QWORD 0
|
|
|
|
_TEXT ENDS
|
|
END
|