能力值:
( LV2,RANK:10 )
|
-
-
26 楼
严重学习,完全不懂
|
能力值:
( LV2,RANK:10 )
|
-
-
27 楼
多谢,学习中
|
能力值:
( LV2,RANK:10 )
|
-
-
28 楼
大米的文档一向华丽,非常耐人寻味
|
能力值:
( LV2,RANK:10 )
|
-
-
29 楼
太強了
真高手!
|
能力值:
( LV2,RANK:10 )
|
-
-
30 楼
严重支持~~
|
能力值:
( LV2,RANK:10 )
|
-
-
31 楼
这个要支持一下
|
能力值:
( LV2,RANK:10 )
|
-
-
32 楼
三花什么什么~~~~~~顶!!!!!!!!!
|
能力值:
( LV2,RANK:10 )
|
-
-
33 楼
haha sudami 我刚在邪八看了这个文章 又跑这里来发啦 哈哈 被我逮住啦 写的不错 你说的那本书已经翻译了 在驱网卖呢 正~~~
|
能力值:
( LV12,RANK:360 )
|
-
-
34 楼
严重学习,完全不懂
|
能力值:
( LV2,RANK:10 )
|
-
-
35 楼
vista下测试无效
|
能力值:
( LV12,RANK:1010 )
|
-
-
36 楼
XP NTFS分区下有效.
我没有VISTA的环境,暂时没有跟过,不清楚了,呵呵
|
能力值:
( LV2,RANK:10 )
|
-
-
37 楼
搞不懂~只能收藏一下了~很想知道,这些东西楼主是从哪里知道的?~
|
能力值:
( LV2,RANK:10 )
|
-
-
38 楼
学习了
尽管好多内容都不太明白
|
能力值:
( LV2,RANK:10 )
|
-
-
39 楼
1初始化自定义的链表结构,每个节点是要hook用到的context,节点结构为:
typedef struct _funcContext{
PCHAR functionName;//函数名
PVOID originFunctionAddress;//原始地址
PVOID hookFunctionAddress;//hook函数地址,hook函数与原函数接受参数不一样,采用的call形式
PVOID callBeforeAddress;//上层函数调用本函数的call前地址
BOOL isHooked;//是否已经hook过
pfuncContext nextEntry;//单向链表指向下一个节点
PKSPIN_LOCK lock;//锁
}funcContext,*pfuncContext;
2ZwCreatFile打开要保护的文件,ObReferenceObjectByHandle得到文件对象,从而得到fscontext(scb)->fcb->mft号
3将函数ExAllocatePoolWithTag对应的插入链表结构中(MmGetSystemRoutineAddress得到ExAllocatePoolWithTag地址),然后对链表中节点对应的函数进行hook,再开启一个系统线程,并等待。
其中ExAllocatePoolWithTag对应的hook函数HookExAllocatePoolWithTag中
(1)判断参数1==10h&&参数2==20h&&参数3=7346744Eh即判断是否为NtfsCreateFcb所调用的,利用栈回溯分别得到NtfsCreateFcb和NtfsOpenFile的地址,将其放入全局变量中以备后来判断所用。
(2)得到NtfsCheckValidAttributeAccess的地址。方法是把NtfsOpenFile中call NtfsCreateFcb前的地址-70h,这样大概能保证该地址再调用NtfsCheckValidAttributeAccess之前,然后进行特征搜索得到NtfsCheckValidAttributeAccess地址,并建立相应节点,加入链表,hook函数为hookNtfsCheckValidAttributeAccess。
(3)将NtfsCreateFcb建立节点加入链表,hook函数为hookNtfsCreateFcb,设置事件激活系统线程。
4此时该线程结束等待,摘除ExAllocatePoolWithTag钩子,然后进行hook NtfsCheckValidAttributeAccess。
在hookNtfsCheckValidAttributeAccess中,因为几个函数都调用NtfsCheckValidAttributeAccess,所以利用栈回溯得到上一个函数的地址,并和开始保存在全局变量中的NtfsOpenFile的地址进行比较,如果是则与NtfsOpenFile参数中mft号比较,看是不是自己要保护的文件,若是将参数中的fcb的cleanupCount=1,将FcbState中的FCB_STATE_PAGING_FILE清0.若上一个函数不是NtfsOpenFile,同样判断mtf号是否为要保护的文件,是则进行重定位到\\Test\1.txt
相应的同步操作和参数判断都没有提到~ps:我是菜逼,如有错误请指教~~
|
能力值:
( LV2,RANK:10 )
|
-
-
40 楼
初看好象不懂啊
学习之
|
能力值:
( LV2,RANK:10 )
|
-
-
41 楼
佩服佩服,看完后真是惭愧啊,自己还懂得太少!
|
能力值:
( LV9,RANK:190 )
|
-
-
42 楼
打个标签。以备学习。
|
能力值:
( LV2,RANK:10 )
|
-
-
43 楼
必须学习。。。
|
能力值:
( LV2,RANK:10 )
|
-
-
44 楼
已收藏,谢谢
|
能力值:
( LV13,RANK:460 )
|
-
-
45 楼
人咋这么牛呢?
请问是什么环境什么条件练就的这样神功??
可否学习一下学习过程??
|
能力值:
( LV2,RANK:10 )
|
-
-
46 楼
标记下好东西,谢谢了。
|
能力值:
( LV2,RANK:10 )
|
-
-
47 楼
好东西啊,还有视频。 顶啊!
|
能力值:
( LV2,RANK:10 )
|
-
-
48 楼
楼主的探索精神值得学习~~~~~~~谢谢了
|
能力值:
( LV7,RANK:101 )
|
-
-
49 楼
大米师傅能分享一下win10的ntfs系统的FCB结构体吗,最近在做毕设遇到了这个问题。
|
|
|