slobby
驱动牛犊
驱动牛犊
  • 注册日期2003-12-07
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1265回复:3

请教在驱动中调用别的lib的问题

楼主#
更多 发布于:2004-05-05 18:36
例如我想在驱动中调用ntdll.lib(按原作者应该调用ntoskrnl.lib ,但好像编译不了)中的native函数ZwReadVirtualMemory,我的方法是在驱动头文件中加上该函数的原型
NTSYSAPI NTSTATUS NTAPI ZwReadVirtualMemory(IN HANDLE hProcess,IN PVOID BaseAddress,OUT PVOID Buffer,IN ULONG BytesToRead,OUT PULONG BytesRead);
然后在驱动的source文件中加上:
TARGETLIBS=$(DDK_LIB_PATH)\\ndis.lib \\
$(DDK_LIB_PATH)\\tdi.lib \\
$(DDK_LIB_PATH)\\ntoskrnl.lib \\
$(DDK_LIB_PATH)\\ntdll.lib
编译通过了,但在驱动加载的时候却说过程函数地址找不到,这到底是怎么回事,是不是我调用的方法不对?

xdjm
驱动中牛
驱动中牛
  • 注册日期2001-04-02
  • 最后登录2024-01-25
  • 粉丝0
  • 关注0
  • 积分34分
  • 威望25点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2004-05-05 18:51
内核驱动不可以调用ntdll.dll中的函数。
slobby
驱动牛犊
驱动牛犊
  • 注册日期2003-12-07
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-05-05 20:54
大家看看这篇文章:
http://www.driverdevelop.com/forum/viewthread.php?tid=11010
我就是按照它来写的,但按照它的方法好像找不到ZwReadVirtualMemory这个函数
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
地板#
发布于:2004-05-08 09:39
NTOSKRNL没有导出ZwReadVirtualMemory,而只在NTDLL里有,所以你可以在RING3来调用该函数,而不能直接在驱动中使用,当然我看了下在XP下该函数在SERVICETABLE中的序号为BAH,所以你也可以通过该序号直接定位到该函数,而在驱动中直接调用他。
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
游客

返回顶部