swift
驱动中牛
驱动中牛
  • 注册日期2001-07-26
  • 最后登录2007-05-09
  • 粉丝0
  • 关注0
  • 积分70分
  • 威望7点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
阅读:4620回复:27

想得到ndis.sys的基址,方法有哪些,大侠请指点!

楼主#
更多 发布于:2002-05-15 11:22
想用hook的方法做包过虑,
一种方法是注册dummy protocol,来得到protocol chain,从而得到各protocol的信息
另一种方法是直接hook ndis.sys,改export table,但却不知道ndis.sys的加载地址

哪位大侠知道方法或者方向,或者有什么建议,都欢迎!

最新喜欢:

linwnlinwn zhang79zhang7... John_tJohn_t znsoftznsoft
monkeyy
驱动中牛
驱动中牛
  • 注册日期2001-12-06
  • 最后登录2010-10-10
  • 粉丝0
  • 关注0
  • 积分315分
  • 威望84点
  • 贡献值0点
  • 好评度32点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-05-15 12:26
关注,在Sys中是否有什么办法可以得到*.sys的基址。
请大侠赐教!!我再加50分!!!!!!
听说老虎会吃人,所以从没想过去摸老虎的屁股。:( :(
fracker
驱动太牛
驱动太牛
  • 注册日期2001-06-28
  • 最后登录2021-03-30
  • 粉丝0
  • 关注0
  • 积分219分
  • 威望81点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分1分
  • 社区居民
板凳#
发布于:2002-05-15 12:47
我也凑个热闹,加20!!
怎么好像打扑克 - 吹牛皮一样?
swift
驱动中牛
驱动中牛
  • 注册日期2001-07-26
  • 最后登录2007-05-09
  • 粉丝0
  • 关注0
  • 积分70分
  • 威望7点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-05-15 13:07
我想这是大家遇到的一个共同的问题,肯请哪位高手出来指点指点!
或者咱哥几个研究也成,集思广益,我想也成!

不过如果有高手,还是指点为好,等待且学习中...
fracker
驱动太牛
驱动太牛
  • 注册日期2001-06-28
  • 最后登录2021-03-30
  • 粉丝0
  • 关注0
  • 积分219分
  • 威望81点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分1分
  • 社区居民
地下室#
发布于:2002-05-15 15:06
在SoftICE中,用MOD命令可以看到 NDIS.SYS 加载的影像地址 XXXXXXXX。用D XXXXXXXX 可以看到
MZ........PE........,看来东西在这里耶。
fracker
驱动太牛
驱动太牛
  • 注册日期2001-06-28
  • 最后登录2021-03-30
  • 粉丝0
  • 关注0
  • 积分219分
  • 威望81点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分1分
  • 社区居民
5楼#
发布于:2002-05-15 15:08
咱写了一段程序,没有什么理论依据,好像也跟文档不符,不过似乎能找出这个地址,看我的源程序:
fracker
驱动太牛
驱动太牛
  • 注册日期2001-06-28
  • 最后登录2021-03-30
  • 粉丝0
  • 关注0
  • 积分219分
  • 威望81点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分1分
  • 社区居民
6楼#
发布于:2002-05-15 15:12
要增加的定义:
typedef enum _SYSTEM_INFORMATION_CLASS {
SystemBasicInformation,
SystemProcessorInformation,
SystemPerformanceInformation,
SystemTimeOfDayInformation,
SystemNotImplemented1,
SystemProcessesAndThreadsInformation,
SystemCallCounts,
SystemConfigurationInformation,
SystemProcessorTimes,
SystemGlobalFlag,
SystemNotImplemented2,
SystemModuleInformation,
SystemLockInformation,
SystemNotImplemented3,
SystemNotImplemented4,
SystemNotImplemented5,
SystemHandleInformation,
SystemObjectInformation,
SystemPagefileInformation,
SystemInstructionEmulationCounts,
SystemInvalidInfoClass1,
SystemCacheInformation,
SystemPoolTagInformation,
SystemProcessorStatistics,
SystemDpcInformation,
SystemNotImplemented6,
SystemLoadImage,
SystemUnloadImage,
SystemTimeAdjustment,
SystemNotImplemented7,
SystemNotImplemented8,
SystemNotImplemented9,
SystemCrashDumpInformation,
SystemExceptionInformation,
SystemCrashDumpStateInformation,
SystemKernelDebuggerInformation,
SystemContextSwitchInformation,
SystemRegistryQuotaInformation,
SystemLoadAndCallImage,
SystemPrioritySeparation,
SystemNotImplemented10,
SystemNotImplemented11,
SystemInvalidInfoClass2,
SystemInvalidInfoClass3,
SystemTimeZoneInformation,
SystemLookasideInformation,
SystemSetTimeSlipEvent,
SystemCreateSession,
SystemDeleteSession,
SystemInvalidInfoClass4,
SystemRangeStartInformation,
SystemVerifierInformation,
SystemAddVerifier,
SystemSessionProcessesInformation
} SYSTEM_INFORMATION_CLASS;

typedef struct _SYSTEM_MODULE_INFORMATION {
ULONG Reserved[2];
PVOID Base;
ULONG Size;
ULONG Flags;
USHORT Index;
USHORT Unknown;
USHORT LoadCount;
USHORT ModuleNameOffset;
CHAR ImageName[256];
} SYSTEM_MODULE_INFORMATION, *PSYSTEM_MODULE_INFORMATION;

NTSYSAPI
NTSTATUS
NTAPI
ZwQuerySystemInformation(
IN SYSTEM_INFORMATION_CLASS SystemInformationClass,
IN OUT PVOID SystemInformation,
IN ULONG SystemInformationLength,
OUT PULONG ReturnLength OPTIONAL
);
实现的代码:
BOOLEAN
SetWP(
ULONG * pOldVal,
BOOLEAN bSet
)
{
ULONG Val;

DbgPrint( \"Set Write protect !\\n\" );
if( bSet ) {
__asm {
push eax;
mov eax, cr0;
mov  Val, eax;
and eax, 0FFFEFFFFh;
mov  cr0, eax;
pop  eax;
}
*pOldVal = Val;
} else {
Val = *pOldVal;
__asm {
push eax;
mov eax, Val;
mov  cr0, eax;
pop  eax;
}
}
return TRUE;
}
VOID
GetKernelModule() {
ULONG iReturn;
ULONG iSize;
ULONG i;
PCHAR pSysInf;
PCHAR pImageName;
PCHAR pImage;
ANSI_STRING AnsiName;
PSYSTEM_MODULE_INFORMATION pModule;

iSize = 4000;
pSysInf = ExAllocatePool( NonPagedPool, iSize );
if( pSysInf ) {
ZwQuerySystemInformation( 11, pSysInf, iSize, &iReturn );
if( iReturn > 4000 ) {
ExFreePool( pSysInf );
iSize = iReturn/4*4+4;
pSysInf = ExAllocatePool( NonPagedPool, iSize );
if( pSysInf ) {
ZwQuerySystemInformation( 11, pSysInf, iSize, &iReturn );
}
}
if( pSysInf ) {
pModule = pSysInf;
while( (PCHAR)pModule-pSysInf < iSize ) {
pImageName = ( PCHAR )pModule + 32;
pImage = ( PCHAR )pModule->Base + pModule->Size;
DbgPrint( \"HookNDIS: %s --> Flag:%s\\n\", pImageName, pImage );
pModule++;
}
ExFreePool( pSysInf );
}
}
}
调用代码:
ULONG OldVal;

SetWP( &OldVal, TRUE );
GetKernelModule();
SetWP( &OldVal, FALSE );

fracker
驱动太牛
驱动太牛
  • 注册日期2001-06-28
  • 最后登录2021-03-30
  • 粉丝0
  • 关注0
  • 积分219分
  • 威望81点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分1分
  • 社区居民
7楼#
发布于:2002-05-15 15:18
然后用SoftICE调试,就会看到每个pImage指向的地方跟用MOD看到的地址一样,用dbgview可以看到打出来的MZ.....字样,用D命令看到确实是文件的映像。不知道这个是否可用,大家也都试试,关注这个话题,等高手来指正。
pjf
pjf
驱动中牛
驱动中牛
  • 注册日期2001-07-08
  • 最后登录2006-10-23
  • 粉丝0
  • 关注0
  • 积分42分
  • 威望4点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2002-05-15 15:20
http://www.driverdevelop.com/forum/viewthread.php?tid=12387&PHPSESSID=a3e9aa6664df603ad6db2b79f93991a9
fracker
驱动太牛
驱动太牛
  • 注册日期2001-06-28
  • 最后登录2021-03-30
  • 粉丝0
  • 关注0
  • 积分219分
  • 威望81点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分1分
  • 社区居民
9楼#
发布于:2002-05-15 15:22
pImage = ( PCHAR )pModule->Base + pModule->Size;
NT Native API说,Size是The size of the module,可是从程序里看来也许不对,那排在后面的模块岂不是太大了?看起来倒象是个Offset!
swift
驱动中牛
驱动中牛
  • 注册日期2001-07-26
  • 最后登录2007-05-09
  • 粉丝0
  • 关注0
  • 积分70分
  • 威望7点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2002-05-15 15:24
fracker,你的代码是用ddk编译吗?
怎样安装和运行?现在你是大侠了,呵呵!
fracker
驱动太牛
驱动太牛
  • 注册日期2001-06-28
  • 最后登录2021-03-30
  • 粉丝0
  • 关注0
  • 积分219分
  • 威望81点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分1分
  • 社区居民
11楼#
发布于:2002-05-15 15:30
这个我在NT,2000下都试过能行,XP重起来试。
fracker
驱动太牛
驱动太牛
  • 注册日期2001-06-28
  • 最后登录2021-03-30
  • 粉丝0
  • 关注0
  • 积分219分
  • 威望81点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分1分
  • 社区居民
12楼#
发布于:2002-05-15 15:37
是用DDK搞的,有一个工具可以安装和加载叫INSTDRV.EXE,NT 4.0 DDK有源程序,也可以到网上找,为了加快大家速度,我把工程放上来,不过大家要能容忍这里面的好多垃圾哦。
附件名称/大小 下载次数 最后更新
2002-05-15_hookndis.zip (6KB)  9
fracker
驱动太牛
驱动太牛
  • 注册日期2001-06-28
  • 最后登录2021-03-30
  • 粉丝0
  • 关注0
  • 积分219分
  • 威望81点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分1分
  • 社区居民
13楼#
发布于:2002-05-15 15:59
XP下不成,原因还没找。
pjf
pjf
驱动中牛
驱动中牛
  • 注册日期2001-07-08
  • 最后登录2006-10-23
  • 粉丝0
  • 关注0
  • 积分42分
  • 威望4点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2002-05-15 16:11
知道ndis.sys的加载地址
--------------------------------------------------------
找ndis.sys等内核模块的加载地址及在导出表中find函数 Gary Nebbett的书讲得很清楚,看看就得了.
monkeyy
驱动中牛
驱动中牛
  • 注册日期2001-12-06
  • 最后登录2010-10-10
  • 粉丝0
  • 关注0
  • 积分315分
  • 威望84点
  • 贡献值0点
  • 好评度32点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2002-05-15 16:14
大侠,什么名字,具体的描述!在线等待!!
听说老虎会吃人,所以从没想过去摸老虎的屁股。:( :(
swift
驱动中牛
驱动中牛
  • 注册日期2001-07-26
  • 最后登录2007-05-09
  • 粉丝0
  • 关注0
  • 积分70分
  • 威望7点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2002-05-15 16:17
他的什么书,能否说的详细些,在哪能找到?
又一个大侠哦!呵呵!
swift
驱动中牛
驱动中牛
  • 注册日期2001-07-26
  • 最后登录2007-05-09
  • 粉丝0
  • 关注0
  • 积分70分
  • 威望7点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
17楼#
发布于:2002-05-15 16:27
fracker你给的工程文件好象不全,在source里的文件好多都没有,why?编译通不过!指点!!
pjf
pjf
驱动中牛
驱动中牛
  • 注册日期2001-07-08
  • 最后登录2006-10-23
  • 粉丝0
  • 关注0
  • 积分42分
  • 威望4点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
18楼#
发布于:2002-05-15 16:29
faint,中译本就是《windows NT/2000本机API参考手册》
兄弟,不要随便叫“大虾”哟

开始贴的链接里已有了相关的代码
用的时候:
func=(PULONG)FindFunc(FindNtoskrnl(),\"KeGetCurrentThread\");
这个例子是找ntoskrnl.exe导出函数的,你把里面ntoskrnl.exe换为ndis.sys,写上你找的函数名即可
monkeyy
驱动中牛
驱动中牛
  • 注册日期2001-12-06
  • 最后登录2010-10-10
  • 粉丝0
  • 关注0
  • 积分315分
  • 威望84点
  • 贡献值0点
  • 好评度32点
  • 原创分0分
  • 专家分0分
19楼#
发布于:2002-05-15 16:35
pjf兄,太感谢了!可是怎么能买着呀,不好意思了 ;) ;) ;)
听说老虎会吃人,所以从没想过去摸老虎的屁股。:( :(
上一页
游客

返回顶部