免费教程_免费网赚教程_破解版软件-寂涯网络学习基地

当前位置: 主页 > 系统综合 > 系统安全 > 由hook引发的同步安全之谈(3)

由hook引发的同步安全之谈(3)

时间:2012-02-19 17:28来源:未知 整理:寂涯网络 点击:


mov cr0, eax;
mov ebx, MyKeInsertQueueApc; sub ebx, 0x804fd47a; sub ebx, 5; mov eax, 0x804fd47a;
mov byte ptr [eax], 0xe9;
INC eax;
mov dword ptr [eax], ebx;
popfd;
popad;
}
KeReleaseSpinLock(&spinlock, oldirql); break;
[/code]
我们将其他所有逻辑cpu的dpc中的执行例程设置为MyRoutine,当MyRoutine的执行时候, 将threadnumber加以,表示该逻辑cpu已经进入空转且不会切换线程。然后一直检测 hookstar是否为TRME,当为true时候,表示MyHook线程已经获取spinlock^这个自旋锁了, 且开始了patch工作,此时myroutine再获取自旋锁,由hookstart在patch完内存前,不会释放该锁,所有脚心的丨阳会一直在获取自旋锁这步检测循环,当可以获得该自旋锁时,表patch已经结束,myroutine退出。而MyHook线程,先通过threadnumber来检测是否所有其他的逻辑CPU都进入了指定的MyRoutine线程。然后获得自旋锁,并设置hookstart为TRUE, 告诉脚本线程hookstart开始。最后在hook完后,释放自旋锁。
当然,通过分发dpc的方法来实现即05也并非完全100%安全,因为可能有线程执行到110呢 的目标函数刚好被切换出去,而我们hook该函数,当线程切换回来,由于目标函数已经更改,所以依然出现问题,但是通过分发dpc是目前较安全的方法。所以一般的安全软件大都 是?&忱从^匕指令之后的4字节地址来实现安全的hook。
本文的代码在vs2010+wdk 7600编译通过,4VM+WIN XP SP3 4核通过测试,由于采用硬编码,所以不要再本机测试。
 

本页地址 http://www.jybase.net/xitonganquan/20120219778.html

百度搜索更多

谷歌搜索更多

顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------

评价:
昵称: 验证码:点击我更换图片
推荐内容
赞助商
赞助商


关于本站免责声明视频更新google百度地图视频地图RRS订阅

如有什么问题请在本站留言,或发邮件到 hxt167#foxmail.com