hawkforest
驱动牛犊
驱动牛犊
  • 注册日期2003-11-11
  • 最后登录2005-07-11
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2318回复:13

核态驱动程序中怎样调用dll?

楼主#
更多 发布于:2004-05-27 15:57
dll必须也是核态的吗?怎样编写核态dll?
静态连接库(*.lib)能用吗?
谢谢。
thinking...
AllenZh
驱动老牛
驱动老牛
  • 注册日期2001-08-19
  • 最后登录2015-11-27
  • 粉丝19
  • 关注10
  • 积分1316分
  • 威望2387点
  • 贡献值7点
  • 好评度321点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-05-30 15:51
9x还是2k,这应该不一样的。
lib一定不能使用(除非你的lib是核心态的)。
1,承接Windows下驱动/应用开发 2,本人原创虚拟鼠标/键盘,触摸屏,虚拟显卡,Mirror驱动,XP无盘的SCSI虚拟磁盘驱动等 3,windows下有尝技术服务(包括BUG调试,员工培训等) 欢迎深圳和海外企业联系.msn:mfczmh@sina.com
hawkforest
驱动牛犊
驱动牛犊
  • 注册日期2003-11-11
  • 最后登录2005-07-11
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-05-31 09:31
OS是2K。

看来原来的做法是没戏了,给有同样问题的人一个链接,希望能有所帮助。
http://www.wd-3.com/archive/KernelDlls.htm
thinking...
AllenZh
驱动老牛
驱动老牛
  • 注册日期2001-08-19
  • 最后登录2015-11-27
  • 粉丝19
  • 关注10
  • 积分1316分
  • 威望2387点
  • 贡献值7点
  • 好评度321点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-05-31 10:32
这种方法不一样。
因为dll本身不是ring3的,而是kernel的。
1,承接Windows下驱动/应用开发 2,本人原创虚拟鼠标/键盘,触摸屏,虚拟显卡,Mirror驱动,XP无盘的SCSI虚拟磁盘驱动等 3,windows下有尝技术服务(包括BUG调试,员工培训等) 欢迎深圳和海外企业联系.msn:mfczmh@sina.com
hawkforest
驱动牛犊
驱动牛犊
  • 注册日期2003-11-11
  • 最后登录2005-07-11
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-05-31 11:12
ring3的dll要想取到,调用其中的函数,可能就只有采用病毒的做法了吧,

最直接的方式不就是写成kernel dll?
thinking...
AllenZh
驱动老牛
驱动老牛
  • 注册日期2001-08-19
  • 最后登录2015-11-27
  • 粉丝19
  • 关注10
  • 积分1316分
  • 威望2387点
  • 贡献值7点
  • 好评度321点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-05-31 11:35
当然,这是很方便的方法,但有时使用ring3的dll会更好
1,承接Windows下驱动/应用开发 2,本人原创虚拟鼠标/键盘,触摸屏,虚拟显卡,Mirror驱动,XP无盘的SCSI虚拟磁盘驱动等 3,windows下有尝技术服务(包括BUG调试,员工培训等) 欢迎深圳和海外企业联系.msn:mfczmh@sina.com
hawkforest
驱动牛犊
驱动牛犊
  • 注册日期2003-11-11
  • 最后登录2005-07-11
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-05-31 12:25
那怎样使用ring3的dll呢?除了采用病毒的做法以外还有别的吗?
thinking...
AllenZh
驱动老牛
驱动老牛
  • 注册日期2001-08-19
  • 最后登录2015-11-27
  • 粉丝19
  • 关注10
  • 积分1316分
  • 威望2387点
  • 贡献值7点
  • 好评度321点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-05-31 23:00
哈哈,病毒,我到没有做过,怎么写病毒我也想知道(当然不是为了写病毒而学习它)
1,承接Windows下驱动/应用开发 2,本人原创虚拟鼠标/键盘,触摸屏,虚拟显卡,Mirror驱动,XP无盘的SCSI虚拟磁盘驱动等 3,windows下有尝技术服务(包括BUG调试,员工培训等) 欢迎深圳和海外企业联系.msn:mfczmh@sina.com
hawkforest
驱动牛犊
驱动牛犊
  • 注册日期2003-11-11
  • 最后登录2005-07-11
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2004-06-01 13:33
ft,原来如此。
lib或者dll中只要没有引用win32 dll或者其它kernel mode不支持的函数,就可以如普通lib和dll在driver中使用。唯一需要注意的是c/c++的函数calling conventions。也就是说,kernel mode driver和dll的实现语言若不一样,则要做一些相应的设置(extern \"c\", code generation中的calling convention).
thinking...
hawkforest
驱动牛犊
驱动牛犊
  • 注册日期2003-11-11
  • 最后登录2005-07-11
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2004-06-01 13:34
忘记结帖。


原来灌水感觉真的挺好,终于理解了。。。
thinking...
liuge
驱动牛犊
驱动牛犊
  • 注册日期2004-06-02
  • 最后登录2005-07-06
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望4点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2004-06-03 15:19
极端的办法是自己写一个PE Loader,然后用Zw函数装入你的Dll。PE格式并不难,可以在MSDN中查到。要注意的是,你的Dll的Entry要在连接的时候指定,这样可以bypass缺省的startup code。

这个办法我没完整的试过。不过我写了自己的PE Loader,然后装入了自己的Dll。

要装入symbol来调试这样的Dll,可能需要用到SoftIce的symloc命令。 :-(

[编辑 -  6/3/04 by  liuge]
AllenZh
驱动老牛
驱动老牛
  • 注册日期2001-08-19
  • 最后登录2015-11-27
  • 粉丝19
  • 关注10
  • 积分1316分
  • 威望2387点
  • 贡献值7点
  • 好评度321点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2004-06-13 18:34
回调函数不知能否满足你的要求
1,承接Windows下驱动/应用开发 2,本人原创虚拟鼠标/键盘,触摸屏,虚拟显卡,Mirror驱动,XP无盘的SCSI虚拟磁盘驱动等 3,windows下有尝技术服务(包括BUG调试,员工培训等) 欢迎深圳和海外企业联系.msn:mfczmh@sina.com
tigerL
驱动小牛
驱动小牛
  • 注册日期2003-12-24
  • 最后登录2008-10-28
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望23点
  • 贡献值0点
  • 好评度19点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2004-06-28 22:44
可否写一个PE Loader来加载一个驱动程序?因为sys也是PE格式的。
省元坊
force_eagle
驱动小牛
驱动小牛
  • 注册日期2002-05-06
  • 最后登录2009-02-26
  • 粉丝0
  • 关注0
  • 积分387分
  • 威望61点
  • 贡献值0点
  • 好评度33点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2004-06-30 18:14
我记得好像是利用病毒的方法!搜索系统地址空间的DLL直接调用! ;)
游客

返回顶部