linhao
驱动牛犊
驱动牛犊
  • 注册日期2001-04-11
  • 最后登录2011-06-09
  • 粉丝13
  • 关注0
  • 积分201分
  • 威望210点
  • 贡献值0点
  • 好评度15点
  • 原创分0分
  • 专家分0分
阅读:2719回复:5

如何在sys中调用dll(可以在核心运行的dll)?

楼主#
更多 发布于:2004-02-12 21:01
我想在2000的sys中调用一个可以在核心态运行的dll,请问用什么函数来加载?导出dll中的函数?
最好能给我一段代码作示范,多谢了

最新喜欢:

ljmmaryljmmar...
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
沙发#
发布于:2004-02-12 21:43
#include <wdm.h>

NTSTATUS
DriverEntry(
  IN PDRIVER_OBJECT DriverObject,
  IN PUNICODE_STRING RegistryPath
);

#ifdef ALLOC_PRAGMA
#pragma alloc_text(INIT, DriverEntry)
#endif

NTSTATUS
DllInitialize( IN PUNICODE_STRING pus )
{
    DbgPrint("SAMPLE: DllInitialize(%S)\n", pus->Buffer );
    return STATUS_SUCCESS;
}

NTSTATUS
DllUnload( )
{
    DbgPrint("SAMPLE: DllUnload\n");
    return STATUS_SUCCESS;
}

__declspec(dllexport) NTSTATUS
SampleDouble( int * pValue )
{
    DbgPrint("SampleDouble: %d\n", *pValue);
    *pValue *= 2;
    return STATUS_SUCCESS;
}


__declspec(dllexport) NTSTATUS
SampleReadRegistry( )
{
    DbgPrint("SampleReadRegistry\n");
    return STATUS_SUCCESS;
}


// The DLL must have an entry point, but it is never called.
//
NTSTATUS
DriverEntry(
  IN PDRIVER_OBJECT DriverObject,
  IN PUNICODE_STRING RegistryPath
)
{
    return STATUS_SUCCESS;
}

;
; DEF file for sample kernel-mode DLL.
;
;NAME SAMPLE.SYS
NAME SAMPLE.DLL

EXPORTS
    DllInitialize PRIVATE
    DllUnload     PRIVATE
    SampleReadRegistry
    SampleDouble
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
linhao
驱动牛犊
驱动牛犊
  • 注册日期2001-04-11
  • 最后登录2011-06-09
  • 粉丝13
  • 关注0
  • 积分201分
  • 威望210点
  • 贡献值0点
  • 好评度15点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-02-12 22:28
楼上的高手,
    我想问的是在sys代码中类似LoadLibrary()这个函数对应的函数,因为这个函数似乎在ddk环境下编译不能通过,是不是不能在ddk中使用啊?
您给我的好像是一个d生成ll的编译文件吧?
AllenZh
驱动老牛
驱动老牛
  • 注册日期2001-08-19
  • 最后登录2015-11-27
  • 粉丝19
  • 关注10
  • 积分1316分
  • 威望2387点
  • 贡献值7点
  • 好评度321点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-02-13 11:13
将你的dll输出的lib文件连接到sys中就可以了,
LoadLibrary当然不能在ring0中使用
1,承接Windows下驱动/应用开发 2,本人原创虚拟鼠标/键盘,触摸屏,虚拟显卡,Mirror驱动,XP无盘的SCSI虚拟磁盘驱动等 3,windows下有尝技术服务(包括BUG调试,员工培训等) 欢迎深圳和海外企业联系.msn:mfczmh@sina.com
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
地下室#
发布于:2004-02-13 11:46
ZwLoadDriver loads a driver into the system.

或者用ROOTKIT 的
SystemLoadAndCallImage直接加载 。。。
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
linhao
驱动牛犊
驱动牛犊
  • 注册日期2001-04-11
  • 最后登录2011-06-09
  • 粉丝13
  • 关注0
  • 积分201分
  • 威望210点
  • 贡献值0点
  • 好评度15点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-02-13 14:03
老大说话总是这么简单啊,我只找到了定义
NTSYSAPI
NTSTATUS
NTAPI
ZwLoadDriver(
IN PUNICODE_STRING DriverServiceName
);


您是否能给段程序加载dll,导出函数,卸载dll的完整的过程啊,无限感谢
游客

返回顶部