阅读:2319回复:13
核态驱动程序中怎样调用dll?
dll必须也是核态的吗?怎样编写核态dll?
静态连接库(*.lib)能用吗? 谢谢。 |
|
|
沙发#
发布于:2004-05-30 15:51
9x还是2k,这应该不一样的。
lib一定不能使用(除非你的lib是核心态的)。 |
|
|
板凳#
发布于:2004-05-31 09:31
OS是2K。
看来原来的做法是没戏了,给有同样问题的人一个链接,希望能有所帮助。 http://www.wd-3.com/archive/KernelDlls.htm |
|
|
地板#
发布于:2004-05-31 10:32
这种方法不一样。
因为dll本身不是ring3的,而是kernel的。 |
|
|
地下室#
发布于:2004-05-31 11:12
ring3的dll要想取到,调用其中的函数,可能就只有采用病毒的做法了吧,
最直接的方式不就是写成kernel dll? |
|
|
5楼#
发布于:2004-05-31 11:35
当然,这是很方便的方法,但有时使用ring3的dll会更好
|
|
|
6楼#
发布于:2004-05-31 12:25
那怎样使用ring3的dll呢?除了采用病毒的做法以外还有别的吗?
|
|
|
7楼#
发布于:2004-05-31 23:00
哈哈,病毒,我到没有做过,怎么写病毒我也想知道(当然不是为了写病毒而学习它)
|
|
|
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). |
|
|
9楼#
发布于:2004-06-01 13:34
忘记结帖。
原来灌水感觉真的挺好,终于理解了。。。 |
|
|
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] |
|
11楼#
发布于:2004-06-13 18:34
回调函数不知能否满足你的要求
|
|
|
12楼#
发布于:2004-06-28 22:44
可否写一个PE Loader来加载一个驱动程序?因为sys也是PE格式的。
|
|
|
13楼#
发布于:2004-06-30 18:14
我记得好像是利用病毒的方法!搜索系统地址空间的DLL直接调用! ;)
|
|