看流星社区

 找回密码
 注册账号
查看: 3116|回复: 9

认识与Hook SYSENTER 加源码

[复制链接]

该用户从未签到

发表于 2011-8-8 08:30:45 | 显示全部楼层 |阅读模式
其实所有的HOOK,都基本是一样道理。就是勾住你的目标函数,实现你自己的功能。只要你掌握了,HOOK的原理。剩下的就是寻找目标函数了。

     今天回忆一下 HOOK SYSENTER。

一:认识SYSENTER

   SYSENTER是一个东西?大家都知道调用门,陷阱门,任务门(这里没有照片!_!).。通过他们我们可以从R3到达R0。简单的说SYSENTER就是他们的替代品。SYSENTER是一个入的

过程,SYSEXIT是他的反过程。

我们以OpenProcess为例,看看他是怎么从R3-R0

kernel32!OpenProcess -> ntdll!ZwOpenProcess -> ntdll!KiFastSystemCall -> sysenter -> nt!KiFastCallEntry -> nt!NtOpenProcess -> nt!KiFastCallEntry> nt!

KiServiceExit -> sysexit -> ntdll!KiFastSystemCallRet -> kernel32!OpenProcess

现在来看看SYSENTER是怎么样处理的。

R3-R0需要把相关的工作交给R0层的。包括:设置CS,IP,SS,SP。SYSENTER有三个特殊的寄存器(MSR)来帮助我们完成。

SYSENTER_CS_MSR

SYSENTER_ESP_MSR

SYSENTER_EIP_MSR

他们的地址分别是:0x174,0x175,0x176。我们可以通过指令rdmsr/wrmsr。来读写这三个寄存器。相关代码如下:

_asm
{


mov ecx,0x176
    rdmsr
    mov OldKiFastCallEntry,eax

}

我们来看看SYSENTER的工作流程。
游客,如果您要查看本帖隐藏内容请回复

该用户从未签到

发表于 2011-8-8 13:47:30 | 显示全部楼层
不知道用处打不

该用户从未签到

发表于 2011-12-3 17:21:16 | 显示全部楼层
谢谢分享谢谢分享

该用户从未签到

发表于 2011-12-14 12:42:14 | 显示全部楼层
我是来学些的 谢谢楼主

该用户从未签到

发表于 2012-1-5 17:54:27 | 显示全部楼层
nt!_SEH_prolog

该用户从未签到

发表于 2014-1-10 16:50:12 | 显示全部楼层
111111111111111

该用户从未签到

发表于 2014-3-12 10:16:37 | 显示全部楼层
这个不错!!!!!

该用户从未签到

发表于 2019-3-28 16:25:27 | 显示全部楼层
支持楼主,支持看流星社区,以后我会经常来!

该用户从未签到

发表于 2019-3-28 17:04:39 | 显示全部楼层
支持楼主,支持看流星社区,以后我会经常来!
点击按钮快速添加回复内容: 支持 高兴 激动 给力 加油 苦寻 生气 回帖 路过 感恩
您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

小黑屋|手机版|Archiver|看流星社区 |网站地图

GMT+8, 2024-4-19 11:12

Powered by Kanliuxing X3.4

© 2010-2019 kanliuxing.com

快速回复 返回顶部 返回列表