能力值:
( LV2,RANK:10 )
|
-
-
2 楼
懒得你们抄函数了 不信的话可以自己试一下 这是win7的int3中断
diy_idt_KiBreakpointTrap PROC
KiBreakpointTrap:
sub rsp,8
push rbp
sub rsp,158h
lea rbp,[rsp+80h]
mov byte ptr [rbp-55h],1
mov qword ptr [rbp-50h],rax
mov qword ptr [rbp-48h],rcx
mov qword ptr [rbp-40h],rdx
mov qword ptr [rbp-38h],r8
mov qword ptr [rbp-30h],r9
mov qword ptr [rbp-28h],r10
mov qword ptr [rbp-20h],r11
test byte ptr [rbp+0F0h],1
je @KiBreakpointTrap_0xa1 ;;-------------------
swapgs
mov r10,qword ptr gs:[188h]
test byte ptr [r10+3],80h
je @KiBreakpointTrap_0x8c ;;-------------------
mov ecx,0C0000102h
rdmsr
shl rdx,20h
or rax,rdx
cmp qword ptr [r10+0B8h],rax
je @KiBreakpointTrap_0x8c ;;-------------------
cmp qword ptr [r10+1B0h],rax
je @KiBreakpointTrap_0x8c ;;-------------------
mov rdx,qword ptr [r10+1B8h]
bts dword ptr [r10+4Ch],0Bh
dec word ptr [r10+1C4h]
mov qword ptr [rdx+80h],rax
@KiBreakpointTrap_0x8c:
test byte ptr [r10+3],3
mov word ptr [rbp+80h],0
je @KiBreakpointTrap_0xa1 ;;-------------------
call of_nt_KiSaveDebugRegisterState ;;===================
@KiBreakpointTrap_0xa1:
cld
stmxcsr dword ptr [rbp-54h]
ldmxcsr dword ptr gs:[180h]
movaps xmmword ptr [rbp-10h],xmm0
movaps xmmword ptr [rbp],xmm1
movaps xmmword ptr [rbp+10h],xmm2
movaps xmmword ptr [rbp+20h],xmm3
movaps xmmword ptr [rbp+30h],xmm4
movaps xmmword ptr [rbp+40h],xmm5
test qword ptr [rbp+0F8h],200h
je @KiBreakpointTrap_0xd5 ;;-------------------
sti
@KiBreakpointTrap_0xd5:
mov ecx,80000003h
mov edx,1
mov r8,qword ptr [rbp+0E8h]
dec r8
mov r9d,0
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
push ovcallret_nt_KiBreakpointTrap_to_KiExceptionDispatch
jmp diy_idt_KiExceptionDispatch
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
nop
nop word ptr [rax+rax]
diy_idt_KiBreakpointTrap ENDP
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
中断调用堆栈跟原始不同一定死锁 但是不只中断 其它一些地方也会 但是为数并不多 总之莫名其妙 搞了几天都没个结果
|