能力值:
( LV2,RANK:10 )
|
-
-
26 楼
[QUOTE=KiDebug;974984]mov byte ptr[eax],0xeb ; 短跳jmp
mov byte ptr[eax+1],0xf9 ; 0x00-偏移量-指令长度 = 0x00-5-2 = f9
;write the new function header:jmp short f...[/QUOTE]
有这风险?
2byte应该属于原子操作了吧?印象中是不会中断的
另外一点,确实要先写入远跳转再写hook短跳,如果碰到是in3的,就蓝了
|
能力值:
(RANK:400 )
|
-
-
27 楼
貌似符号文件中时int 3, 真正运行的时候是nop
|
能力值:
( LV12,RANK:210 )
|
-
-
28 楼
mov byte ptr[eax],0xeb ; 短跳jmp
mov byte ptr[eax+1],0xf9 ; 0x00-偏移量-指令长度 = 0x00-5-2 = f9
;write the new function header:jmp short funcaddr-5(0x00-0x07)
mov byte ptr[eax-5],0xe9 ;远跳jmp 此时当前线程暂停运行,然后有另外的一个线程调用这个函数,结果就成了 E9 0CCCCCCCCh
;write 1 byte :jmp xxxxx
mov ecx,[NewFuncAddress]
sub ecx,eax ;得到跳转的相对偏移
mov dword ptr[eax-4],ecx
jmp hookok
|
能力值:
(RANK:400 )
|
-
-
29 楼
[QUOTE=KiDebug;974996]mov byte ptr[eax],0xeb ; 短跳jmp
mov byte ptr[eax+1],0xf9 ; 0x00-偏移量-指令长度 = 0x00-5-2 = f9
;write the new function header:jmp short f...[/QUOTE]
好像是, 先去吃饭, 回来做个试验.
|
能力值:
( LV2,RANK:10 )
|
-
-
30 楼
Yin荡二段跳
|
能力值:
( LV12,RANK:210 )
|
-
-
31 楼
mov byte ptr[eax],0xeb ; 短跳jmp
mov byte ptr[eax+1],0xf9 ; 0x00-偏移量-指令长度 = 0x00-5-2 = f9
;write the new function header:jmp short funcaddr-5(0x00-0x07)
mov byte ptr[eax-5],0xe9 ;远跳jmp 此时当前线程暂停运行,然后有另外的一个线程调用这个函数,结果就成了 E9 90909090h
;write 1 byte :jmp xxxxx
mov ecx,[NewFuncAddress]
sub ecx,eax ;得到跳转的相对偏移
mov dword ptr[eax-4],ecx
jmp hookok
在windbg里面改下,看看E9 90909090h跳到哪儿去了。
|
能力值:
( LV2,RANK:10 )
|
-
-
32 楼
呵呵 前来支持一下
|
能力值:
(RANK:400 )
|
-
-
33 楼
[QUOTE=KiDebug;975017]mov byte ptr[eax],0xeb ; 短跳jmp
mov byte ptr[eax+1],0xf9 ; 0x00-偏移量-指令长度 = 0x00-5-2 = f9
;write the new function header:jmp short f...[/QUOTE]
确实有问题, 多谢KiDebug兄弟提醒. 以后要用的话在改进.
|
能力值:
( LV13,RANK:460 )
|
-
-
34 楼
版主很热情,支持~!
|
能力值:
( LV4,RANK:50 )
|
-
-
35 楼
先写个远跳 e9 XXXXX
再 mov word ptr写个短跳
|
能力值:
( LV15,RANK:520 )
|
-
-
36 楼
支持灰灰,虽然我不会驱动
|
能力值:
(RANK:400 )
|
-
-
37 楼
这样好像是可以的. 不过看了KiDebug兄弟提供的帖子, MJ大牛他们用的是DPC的方法, 在继续研究去. O(∩_∩)O哈哈~
|
|
|