首页
社区
课程
招聘
[分享]微软的Hot Patch代码
发表于: 2011-6-27 21:37 18265

[分享]微软的Hot Patch代码

2011-6-27 21:37
18265
收藏
免费 7
支持
分享
最新回复 (36)
雪    币: 102
活跃值: (10)
能力值: ( 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的,就蓝了
2011-6-29 11:02
0
雪    币: 2314
活跃值: (2205)
能力值: (RANK:400 )
在线值:
发帖
回帖
粉丝
27
貌似符号文件中时int 3, 真正运行的时候是nop
上传的附件:
2011-6-29 11:02
0
雪    币: 544
活跃值: (264)
能力值: ( 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
2011-6-29 11:07
0
雪    币: 2314
活跃值: (2205)
能力值: (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]

好像是, 先去吃饭, 回来做个试验.
2011-6-29 11:33
0
雪    币: 154
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
30
Yin荡二段跳
2011-6-29 11:41
0
雪    币: 544
活跃值: (264)
能力值: ( 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跳到哪儿去了。
2011-6-29 11:44
0
雪    币: 220
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
32
呵呵  前来支持一下
2011-6-29 12:14
0
雪    币: 2314
活跃值: (2205)
能力值: (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兄弟提醒. 以后要用的话在改进.
2011-6-29 12:48
0
雪    币: 768
活跃值: (530)
能力值: ( LV13,RANK:460 )
在线值:
发帖
回帖
粉丝
34
版主很热情,支持~!
2011-6-29 12:58
0
雪    币: 2105
活跃值: (424)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
35
先写个远跳 e9 XXXXX
再 mov word ptr写个短跳
2011-6-29 13:04
0
雪    币: 278
活跃值: (709)
能力值: ( LV15,RANK:520 )
在线值:
发帖
回帖
粉丝
36
支持灰灰,虽然我不会驱动
2011-6-29 13:33
0
雪    币: 2314
活跃值: (2205)
能力值: (RANK:400 )
在线值:
发帖
回帖
粉丝
37
这样好像是可以的. 不过看了KiDebug兄弟提供的帖子, MJ大牛他们用的是DPC的方法, 在继续研究去. O(∩_∩)O哈哈~
2011-6-29 13:41
0
游客
登录 | 注册 方可回帖
返回
//