首页
社区
课程
招聘
[求助]最近学习驱动SSDT HOOK遇到的麻烦
发表于: 2009-2-6 21:47 5225

[求助]最近学习驱动SSDT HOOK遇到的麻烦

2009-2-6 21:47
5225
最近学习驱动 UNDOCUMENT2000 学习内核HOOK,用DDK编译驱动老是这个错误,好久都找不到怎么回事,只好来论坛求教各位DX了,错误信息如下

1>driver.obj : error LNK2001: unresolved external symbol "struct _ServiceDescriptorEntry KeServiceDescriptorTable" (?KeServiceDescriptorTable@@3U_ServiceDescriptorEntry@@A)
1>objchk\i386\HelloDDK.sys : fatal error LNK1120: 1 unresolved externals

代码如下

typedef struct _ServiceDescriptorEntry {
        unsigned int *ServiceTableBase;
        unsigned int *ServiceCounterTableBase; //Used only in checked build
        unsigned int NumberOfServices;
        unsigned char *ParamTableBase;
} ServiceDescriptorTableEntry, *PServiceDescriptorTableEntry;
extern  ServiceDescriptorTableEntry KeServiceDescriptorTable;

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 65
活跃值: (811)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
2
提示很明显了哦

unresolved externals symbol

应该是
extern  ServiceDescriptorTableEntry KeServiceDescriptorTable;
导致的错误,你再检查下(我菜菜,纯是自己猜的,不保证正确率)它的头文件是不是导入进来了~~~~
2009-2-6 22:46
0
雪    币: 114
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
谢谢楼上的朋友,这个错误我知道 不正确的外部符号,但是要怎么解决呢?,我在下面的代码中不用这个KeServiceDescriptorTable就可以正常生成驱动文件,只要在代码中一用到KeServiceDescriptorTable就编译不出来了.如果是缺少什么头文件那是哪个头文件呢,我已经INCLUDE <NTDDK.H>了,实在不知道哪里问题,百度谷歌也找不到.
2009-2-6 23:02
0
雪    币: 250
活跃值: (33)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
4
1、编译通过不代表能调试通过,用删除有效代码的方法来通过编译是不对的
2、KeServiceDescriptorTable是要从系统内核导入的常数。
所以要这样写

__declspec(dllimport) ServiceDescriptorTableEntry KeServiceDescriptorTable;
2009-2-7 10:11
0
雪    币: 44
活跃值: (133)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
如果是用的C++,要使用 C接口标准声明 extern "C"
2009-2-7 16:35
0
游客
登录 | 注册 方可回帖
返回
//