手写ARK笔记: 1.KiFastCallEntry
发表于:
2013-12-22 21:27
6323
手写ARK笔记: 1.KiFastCallEntry
手写ARK笔记: 1.KiFastCallEntry
求职:qq->1815349357[DeDf]
ARK - anti-rootkit
先知道rootkit喜欢做什么,才能想办法anti.
这里是combojiang的:Rootkit的学习与研究:
http://bbs.pediy.com/showthread.php?t=56817
可以看到:
1)object hook
2)ssdt hook
3)inline-hook
4)idt hook
5)IRP hook
6)SYSENTER hook
7)IAT HOOK
8)EAT HOOK
首先anti SYSENTER hook。
前置知识:
-内核重载:http://bbs.pediy.com/showthread.php?t=177555
-简易反汇编引擎 ldasm,可获取指令长度及粗估函数长度
KiFastCallEntry作为内核入口,本身可以被hook与InlineHook,
anti首先要找出真实的KiFastCallEntry的地址,
KiFastCallEntry没有被导出
IDA ntoskrnl(我的输入法(ntoskrnl)->女同事看热闹了),先查找KiFastCallEntry,查询调用(快捷键X),看
到有两处,其中一处KiTrap01眼熟,这不是IDT里的么。
来到KiTrap01,X,就找到了(原始的IDT表)_IDT。点选_IDT,按X,来到KiSystemStartup,这个其实是ntoskrnl的入
口点。点击后可见:
mov esi, offset _IDT
mov ecx, 800h
shr ecx, 2
目测在KiSystemStartup中,mov ecx, 800h是唯一的,以它为特征,结合ldasm可以准确定位_IDT。
在_IDT里进入_KiTrap01,cmp ecx, offset _KiFastCallEntry附近可见:
mov ecx, [ebp+68h]
cmp ecx, offset _KiFastCallEntry
jz loc_4075E1
同样经过目测,KiTrap01只有一处mov ecx, [ebp+68h],结合ldasm可以准确定位KiFastCallEntry。
这样就得到了一条完整的路径,只需要在重载内核后顺着进入点去查就能获得。粗测也支持ntkrnlpa.
完
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课