能力值:
( LV2,RANK:10 )
|
-
-
2 楼
谢谢楼主分享。睡觉~~~
|
能力值:
( LV8,RANK:120 )
|
-
-
3 楼
收藏,百分百用得到。楼主好活
|
能力值:
( LV7,RANK:110 )
|
-
-
4 楼
标记一下
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
mark一下啊 楼主好人
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
看源码,推敲学习。
|
能力值:
( LV12,RANK:760 )
|
-
-
7 楼
good job~
|
能力值:
( LV13,RANK:1760 )
|
-
-
8 楼
总结的不错...
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
mark
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
mark
|
能力值:
(RANK:290 )
|
-
-
11 楼
mark job
|
能力值:
(RANK:350 )
|
-
-
12 楼
将你所有系列当成一个“酷帖”来设置。
感谢你的分享!
|
能力值:
( LV3,RANK:20 )
|
-
-
13 楼
写得简洁易懂,赞一个!
|
能力值:
( LV2,RANK:10 )
|
-
-
14 楼
第一个参数PDRIVER_OBJECT的PDRIVER_EXTENSION成员其实就是一个LDR_DATA_TABLE_ENTRY指针(参考WRK),这个与PsLoadedModuleList的类型是一致的
楼主笔误了,DriverSection
|
能力值:
( LV4,RANK:50 )
|
-
-
15 楼
感谢分享!
|
能力值:
( LV4,RANK:45 )
|
-
-
16 楼
请问楼主 KeGetModuleHandle这个函数是你自己定义的还是ntddk的啊 为什么我这边显示找不到这个函数呢
|
能力值:
( LV7,RANK:100 )
|
-
-
17 楼
一二三六
请问楼主 KeGetModuleHandle这个函数是你自己定义的还是ntddk的啊 为什么我这边显示找不到这个函数呢
自己定义的, 就是遍历PsLoadedModuleList来确定模块的加载地址.
|
能力值:
( LV2,RANK:10 )
|
-
-
18 楼
mark
|
能力值:
( LV4,RANK:45 )
|
-
-
19 楼
sidyhe
自己定义的, 就是遍历PsLoadedModuleList来确定模块的加载地址.
你的代码是复制的原始内核的内存如果原内核有SSDT HOOK 你不就一并复制过来了吗
|
能力值:
( LV7,RANK:110 )
|
-
-
20 楼
一二三六
你的代码是复制的原始内核的内存如果原内核有SSDT HOOK 你不就一并复制过来了吗
不止SSDT HOOK,还有设备堆栈呢?还有IDT呢?还有错误处理函数呢?内核中驱动程序注册的东西,你全部都得复制过来!重载内核不只需要重载重定位表那么简单的!
|
能力值:
( LV7,RANK:110 )
|
-
-
21 楼
czcqq
不止SSDT HOOK,还有设备堆栈呢?还有IDT呢?还有错误处理函数呢?内核中驱动程序注册的东西,你全部都得复制过来!重载内核不只需要重载重定位表那么简单的!
我能记得的重要结构有:SSDT ,IDT,设备堆栈,各种回掉堆栈,还有线程分配的三个链表(我忘了名字了),还有内核申请的各种内存的指针,分页内存池,非分页内存池,DPC回掉链表,APC回掉链表,线程堆栈,进程句柄表,内存映射表等,你都要复制到你的新内核,你把复制内核想太简单了,内核的模块的重写加载,我时做过的!我举一个例子:比如ZwCreateFile函数,这个函数的调用流程是ZwCreateFile->NtCreateFile->IoCreateFile->ObCreateObject->取得设备堆栈顶部的设备->创建IRP,初始化IRP调用堆栈->调用IoCallDriver来查询设备堆栈,查找下一层设备然后调用->调用完成之后通知完成函数->完成函数中设置一个标志,然后正式返回->按调用流程依次返回,你可以看到这个过程调用了多少的指针(几乎全是动态申请的指针),你的新内核,得全部复制这些东西!你的这个实现有点简单了,仅仅修复IAT,和重定位而已!内核数据结构,你一个也没有复制啊
|
能力值:
( LV2,RANK:10 )
|
-
-
22 楼
标记一下
|
能力值:
( LV4,RANK:50 )
|
-
-
23 楼
感谢分享!
|
|
|