鱼C论坛

 找回密码
 立即注册
查看: 3063|回复: 6

有没有学驱动的朋友?求解释

[复制链接]
发表于 2012-7-13 00:17:35 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
以下内容来自郁金香NT驱动,SSDT结构,获取当前函数地址


typedef struct _ServiceDescriptorTable {
PVOID ServiceTableBase; //SSDT的基地址
PVOID ServiceCounterTable;//包含着SSDT 中每个服务被调用次数的计数器。这个计数器一般由sysenter 更新。
unsigned int NumberOfServices;//由ServiceTableBase 描述的服务的数目。
PVOID ParamTableBase; //包含每个系统服务参数字节数表的基地址-系统服务参数表
}*PServiceDescriptorTable;
然后
extern PServiceDescriptorTable KeServiceDescriptorTable; 、
LONG *SSDT_Adr;  
LONG SSDT_NtOpenProcess_Cur_Addr; //最终结果
LONG t_addr;//基地址
t_addr=(LONG)KeServiceDescriptorTable->ServiceTableBase; 这里大家有没有共同的疑问?既然说指针是存放地址的变量,那为什么不用指针来接收基地址?为什么用long类型接收?求解释。。。。
SSDT_Adr=(PLONG)(t_addr+0x7A*4);//得到存放NTOpenProcess的地址的地址、、
SSDT_NtOpenProcess_Cur_Addr = *SSDT_Adr;//得到NTOpenProcess的地址
KdPrint(("SSDT_NtOpenProcess_Cur_Addr =%x\n",SSDT_NtOpenProcess_Cur_Addr));
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-7-13 08:57:40 | 显示全部楼层
都没看过 郁金香 那教程
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-7-13 14:08:20 | 显示全部楼层
谁跟你说过指针是用来存放地址的??????????     那这个人不是扯淡扯到家了就是你听错了。。。。

是编译器会把指针变量里面的内容解释为一个地址。。。。不是说用来存放地址或者接受地址。   例如当你需要计算两个地址之间的距离,或者偏移的时候。。。
int a;
int * p =&a;
char Buffer[10] ;

如果你想计算这个 a的地址到这个字符串首地址的距离的时候(有时候就真的需要这样做,下钩子的时候经常要这样取计算)  ,你可以 (LONG) Buffer - (LONG) p         这样   当然也可以 (LONG) Buffer - (LONG)&a                 这只是叫LZ明白,不要把指针看的那么神奇,不要把地址看的那么神秘,若需要把他当做一个普通数据处理,他就是一个普通数据,若你要把他看做一个地址处理,那么他就是一个地址,只需类型强转就可以。。。。
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2012-7-13 15:36:33 | 显示全部楼层

感谢一下,但是,为什么要变为long型呢?而不是更大的类型?
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-7-13 18:40:10 | 显示全部楼层
persist 发表于 2012-7-13 15:36
感谢一下,但是,为什么要变为long型呢?而不是更大的类型?

因为你懂得   对于32为PC机  地址最大只能是 0xFFFFFFFF 意思就是最大是 32位,  所以用LONG  ,当然用DWORD也一样的。。。但是对于64位CPU  就不一样了。。。
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2012-7-13 22:20:44 | 显示全部楼层
Tzdner_C 发表于 2012-7-13 18:40
因为你懂得   对于32为PC机  地址最大只能是 0xFFFFFFFF 意思就是最大是 32位,  所以用LONG  ,当然用D ...

OK 懂了,用指针也可以的,只是偏移不用*4
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-7-25 17:16:41 | 显示全部楼层
怕做指针运算的时候 +1 变成+n个1
小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-11-14 03:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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