试一试DLL的调用方法
Function IFSMgr_InstallFileSystemApiHook(Paramstr...):...;stdcall,external 'DDK的Lib'
Function IFSMgr_InstallFileSystemApiHook(Paramstr...):...;stdcall,external 'DDK的Lib'
解决方案 »
- 散分13(鄙视wintergoes坐我板凳)
- 一个简单的问题
- 大家帮我解释一下这段汉字转化为拼音简码的程序。顺便帮我改一下使我在edit1中输入字母和数字时能在edit2中显示。
- 有点荒唐的问题:
- Delphi 一个小问题!!
- 看来delphi是要被java干歇火了,妈的,我觉得windows下开发应用程序不比java差呀,到底java比delphi好在哪儿?除了jsp算他nb,其他又怎么
- 源代码放送,解决MDI的DLL子窗体中的tab健下移控件问题
- 拨入VPN后,如何获得VPN内部的IP地址呢?
- word 文档的提示-100分
- python
- 高分求解!!!(关于Delphi报表)分数可以再加???
- 我显示的扑克牌怎么不像人家的?
2 GoodHope:
就以上面的函数为例,给我上一课好吗?该如何做?
如果真的要用RING0的函数,必须使用非法进入RING0在调用RING0的函数,但是由于是非法进入的很多函数不能用。
建议用汇编或者VC写个VXD,然后在DELPHI中就可以调用VXD了。:)
procedure Ring0Proc(var msg: TDDMsg); stdcall; // 假设这个函数需要参数在 C++Builder 中:
void __declspec(naked) Ring0Proc(TDDmsg &msg); // 假设这个函数需要参数说明:以上的参数类型是我假设的。具体请参见 DDK 文档。
要编译生成 VxD 文件,只能使用微软的 MS Link 连接程序,这一点是肯定的,涉及到授权问题。但是二进制目标文件却可以由其他的编译器产生,我的意思是说,你可以用 Delphi 编译一个单元文件,这个单元文件中用 Object Pascal 实现了 VxD 的核心函数(当然是 Ring0 级别),你可以使用 Delphi 的 DCC32.EXE 编译程序编译产生 OBJ 文件(使用 -J 编译开关),然后用微软的 MASM 6.x 版本编译一个由汇编语言写成的 VxD 启动模块,将它与 Delphi 生成的 VxD 核心实现模块共同由 MS Link 连接组成 VxD。虽然过程看似麻烦,但是这是真正的 VxD DIY!用 VC++ 结合 VxDTools这类方式开发 VxD 仅仅是 VxDTools 已经为 VC++ 做好了这些我们自己做的工作,实际上是差不多的。其实仅用 C/C++ 是不能生成 VxD 的,必须借用汇编语言。但是像 VxD 启动模块这样的玩艺 VxDTools 已经为 VC++ 做好了。不要忘了,所有的 C/C++ 编译器在编译连接 C/C++ 源代码时都要先根据目标平台以及程序的内存模式选择连接一个叫 C0x.obj 的启动模块(x 为特定的字母),这个模块只可能使用汇编实现,一是因为效率,二是因为 C/C++ 编译器的实现过程。好了,扯得太远了,用 Delphi 开发 VxD 的问题网上有很多文章和源码,去找找吧。
但我认为不要在应用系统中随便编写Vxd。它的通用性不好,容易破坏整个win98,另外我也不希望在我安装你的应用系统时给我装上Vxd。
问题继续!
多谢!
麻烦看一下我的问题,看看有没有什么好的解决办法
我现在的解决办法会出现消息错判的问题
烦死我了
__imp__ZwEnumerateValueKey@24。__IMPORT_DESCRIPTOR_NTOSKRNL..NTOSKRNL.EXE就是说EnumerateValueKey在NTOSKRNL.exe中,id是24,真实名字是:__imp__ZwEnumerateValueKey。
__imp__ZwEnumerateValueKey@24。__IMPORT_DESCRIPTOR_NTOSKRNL..NTOSKRNL.EXE
能够找到这个函数的LIB,但是我还是搞不清楚IFSMgr_InstallFileSystemApiHook怎么来的。
只找到一个还有他的文件,但是即使这个文件,我也看不出有什么特别的地方。
//faint
太菜了.......
{
int iResult;
_asm mov eax [HookFunc]
VxDCall(IFSMgr_InstallFileSystemApiHook);
_asm mov [iResult], eax
return(iResult);
} 我只是大意示范一下,C++里面的内嵌汇编已经忘记该怎么写了。
刚才又看了一下VMM.Inc中VxD的声明。VxDCall是一个宏,我没全看明白。反正里面有句int Dyna_Link_Int,说明VxDCall就是一个软中断。IFSMgr_InstallFileSystemApiHook是一个中断功能。前面一段初始调用参数,后面一段取得返回值。
asm
mov eax [hookfunc]
mov ....
int 20
end;
我看了那个inc文件,好像是调用了20中断?
#define FSD_INIT_ORDER 0x00100 + IFSMgr_Init_Order#else
/* ASMifdef MASM
.errnz IFSMgr_Device_ID - 0040h
endif
*/
#endif
#define IFSMgr_Service Declare_Service
#define IFSMgr_StdCall_Service Declare_SCService
#define IFSMgr_FastCall_Service Declare_SCServiceBegin_Service_Table(IFSMGR, IFSMGR)
IFSMgr_Service (IFSMgr_Get_Version)
IFSMgr_Service (IFSMgr_RegisterMount)
IFSMgr_Service (IFSMgr_RegisterNet)
IFSMgr_Service (IFSMgr_RegisterMailSlot)
IFSMgr_Service (IFSMgr_Attach)
IFSMgr_Service (IFSMgr_Detach)
IFSMgr_Service (IFSMgr_Get_NetTime)
IFSMgr_Service (IFSMgr_Get_DOSTime)
IFSMgr_Service (IFSMgr_SetupConnection)
IFSMgr_Service (IFSMgr_DerefConnection)
IFSMgr_Service (IFSMgr_ServerDOSCall)
IFSMgr_Service (IFSMgr_CompleteAsync)
IFSMgr_Service (IFSMgr_RegisterHeap)
IFSMgr_Service (IFSMgr_GetHeap)
IFSMgr_Service (IFSMgr_RetHeap)
IFSMgr_Service (IFSMgr_CheckHeap)
IFSMgr_Service (IFSMgr_CheckHeapItem)
IFSMgr_Service (IFSMgr_FillHeapSpare)
IFSMgr_Service (IFSMgr_Block)
IFSMgr_Service (IFSMgr_Wakeup)
IFSMgr_Service (IFSMgr_Yield)
IFSMgr_Service (IFSMgr_SchedEvent)
IFSMgr_Service (IFSMgr_QueueEvent)
IFSMgr_Service (IFSMgr_KillEvent)
IFSMgr_Service (IFSMgr_FreeIOReq)
IFSMgr_Service (IFSMgr_MakeMailSlot)
IFSMgr_Service (IFSMgr_DeleteMailSlot)
IFSMgr_Service (IFSMgr_WriteMailSlot)
IFSMgr_Service (IFSMgr_PopUp)
IFSMgr_Service (IFSMgr_printf)
IFSMgr_Service (IFSMgr_AssertFailed)
IFSMgr_Service (IFSMgr_LogEntry)
IFSMgr_Service (IFSMgr_DebugMenu)
IFSMgr_Service (IFSMgr_DebugVars)
IFSMgr_Service (IFSMgr_GetDebugString)
IFSMgr_Service (IFSMgr_GetDebugHexNum)
IFSMgr_Service (IFSMgr_NetFunction)
IFSMgr_Service (IFSMgr_DoDelAllUses)
IFSMgr_Service (IFSMgr_SetErrString)
IFSMgr_Service (IFSMgr_GetErrString)
IFSMgr_Service (IFSMgr_SetReqHook)
IFSMgr_Service (IFSMgr_SetPathHook)
IFSMgr_Service (IFSMgr_UseAdd)
IFSMgr_Service (IFSMgr_UseDel)
IFSMgr_Service (IFSMgr_InitUseAdd)
IFSMgr_Service (IFSMgr_ChangeDir)
IFSMgr_Service (IFSMgr_DelAllUses)
IFSMgr_Service (IFSMgr_CDROM_Attach)
IFSMgr_Service (IFSMgr_CDROM_Detach)
IFSMgr_Service (IFSMgr_Win32DupHandle)
IFSMgr_Service (IFSMgr_Ring0_FileIO)
IFSMgr_Service (IFSMgr_Win32_Get_Ring0_Handle)
IFSMgr_Service (IFSMgr_Get_Drive_Info)
IFSMgr_Service (IFSMgr_Ring0GetDriveInfo)
IFSMgr_Service (IFSMgr_BlockNoEvents)
IFSMgr_Service (IFSMgr_NetToDosTime)
IFSMgr_Service (IFSMgr_DosToNetTime)
IFSMgr_Service (IFSMgr_DosToWin32Time)
IFSMgr_Service (IFSMgr_Win32ToDosTime)
IFSMgr_Service (IFSMgr_NetToWin32Time)
IFSMgr_Service (IFSMgr_Win32ToNetTime)
IFSMgr_Service (IFSMgr_MetaMatch)
IFSMgr_Service (IFSMgr_TransMatch)
IFSMgr_Service (IFSMgr_CallProvider)
IFSMgr_Service (UniToBCS)
IFSMgr_Service (UniToBCSPath)
IFSMgr_Service (BCSToUni)
IFSMgr_Service (UniToUpper)
IFSMgr_Service (UniCharToOEM)
IFSMgr_Service (CreateBasis)
IFSMgr_Service (MatchBasisName)
IFSMgr_Service (AppendBasisTail)
IFSMgr_Service (FcbToShort)
IFSMgr_Service (ShortToFcb)
IFSMgr_Service (IFSMgr_ParsePath)
IFSMgr_Service (Query_PhysLock)
IFSMgr_Service (_VolFlush)
IFSMgr_Service (NotifyVolumeArrival)
IFSMgr_Service (NotifyVolumeRemoval)
IFSMgr_Service (QueryVolumeRemoval)
IFSMgr_Service (IFSMgr_FSDUnmountCFSD)
IFSMgr_Service (IFSMgr_GetConversionTablePtrs)
IFSMgr_Service (IFSMgr_CheckAccessConflict)
IFSMgr_Service (IFSMgr_LockFile)
IFSMgr_Service (IFSMgr_UnlockFile)
IFSMgr_Service (IFSMgr_RemoveLocks)
IFSMgr_Service (IFSMgr_CheckLocks)
IFSMgr_Service (IFSMgr_CountLocks)
IFSMgr_Service (IFSMgr_ReassignLockFileInst)
IFSMgr_Service (IFSMgr_UnassignLockList)
IFSMgr_Service (IFSMgr_MountChildVolume)
IFSMgr_Service (IFSMgr_UnmountChildVolume)
IFSMgr_Service (IFSMgr_SwapDrives)
IFSMgr_Service (IFSMgr_FSDMapFHtoIOREQ)
IFSMgr_Service (IFSMgr_FSDParsePath)
IFSMgr_Service (IFSMgr_FSDAttachSFT)
IFSMgr_Service (IFSMgr_GetTimeZoneBias)
IFSMgr_Service (IFSMgr_PNPEvent)
IFSMgr_Service (IFSMgr_RegisterCFSD)
IFSMgr_Service (IFSMgr_Win32MapExtendedHandleToSFT)
IFSMgr_Service (IFSMgr_DbgSetFileHandleLimit)
IFSMgr_Service (IFSMgr_Win32MapSFTToExtendedHandle)
IFSMgr_Service (IFSMgr_FSDGetCurrentDrive)
IFSMgr_Service (IFSMgr_InstallFileSystemApiHook)
IFSMgr_Service (IFSMgr_RemoveFileSystemApiHook)
IFSMgr_Service (IFSMgr_RunScheduledEvents)
IFSMgr_Service (IFSMgr_CheckDelResource)
IFSMgr_Service (IFSMgr_Win32GetVMCurdir)
IFSMgr_Service (IFSMgr_SetupFailedConnection)
IFSMgr_Service (_GetMappedErr)
IFSMgr_Service (ShortToLossyFcb)
IFSMgr_Service (IFSMgr_GetLockState)
IFSMgr_Service (BcsToBcs)
IFSMgr_Service (IFSMgr_SetLoopback)
IFSMgr_Service (IFSMgr_ClearLoopback)
IFSMgr_Service (IFSMgr_ParseOneElement)
IFSMgr_Service (BcsToBcsUpper)
IFSMgr_Service (IFSMgr_DeregisterFSD)
IFSMgr_Service (IFSMgr_RegisterFSDWithPriority)
IFSMgr_Service (IFSMgr_Get_DOSTimeRounded)
IFSMgr_Service (_LongToFcbOem)
IFSMgr_Service (IFSMgr_GetRing0FileHandle)
IFSMgr_Service (IFSMgr_UpdateTimezoneInfo)
IFSMgr_Service (IFSMgr_Ring0IsCPSingleByte)
End_Service_Table(IFSMGR, IFSMGR)// 这个函数是根据MSDN给出的IFSMgr_InstallFileSystemApiHook的入口和出口参数写的
// 除了那两句_asm语句,别的都应该没有什么问题。
int VXDINLINE
IFSMgr_InstallFileSystemApiHook(int HookFunc)
{
int iResult;
_asm mov eax, [HookFunc] // 也许应该是_asm mov edx, [HookFunc]
VxDCall (IFSMgr_InstallFileSystemApiHook)
_asm mov [iResult], eax
return(iResult);
}
#define FSD_INIT_ORDER 0x00100 + IFSMgr_Init_Order#else
/* ASMifdef MASM
.errnz IFSMgr_Device_ID - 0040h
endif
*/
#endif
#define IFSMgr_Service Declare_Service
#define IFSMgr_StdCall_Service Declare_SCService
#define IFSMgr_FastCall_Service Declare_SCServiceBegin_Service_Table(IFSMGR, IFSMGR)
IFSMgr_Service (IFSMgr_Get_Version)
IFSMgr_Service (IFSMgr_RegisterMount)
IFSMgr_Service (IFSMgr_RegisterNet)
IFSMgr_Service (IFSMgr_RegisterMailSlot)
IFSMgr_Service (IFSMgr_Attach)
IFSMgr_Service (IFSMgr_Detach)
IFSMgr_Service (IFSMgr_Get_NetTime)
IFSMgr_Service (IFSMgr_Get_DOSTime)
IFSMgr_Service (IFSMgr_SetupConnection)
IFSMgr_Service (IFSMgr_DerefConnection)
IFSMgr_Service (IFSMgr_ServerDOSCall)
IFSMgr_Service (IFSMgr_CompleteAsync)
IFSMgr_Service (IFSMgr_RegisterHeap)
IFSMgr_Service (IFSMgr_GetHeap)
IFSMgr_Service (IFSMgr_RetHeap)
IFSMgr_Service (IFSMgr_CheckHeap)
IFSMgr_Service (IFSMgr_CheckHeapItem)
IFSMgr_Service (IFSMgr_FillHeapSpare)
IFSMgr_Service (IFSMgr_Block)
IFSMgr_Service (IFSMgr_Wakeup)
IFSMgr_Service (IFSMgr_Yield)
IFSMgr_Service (IFSMgr_SchedEvent)
IFSMgr_Service (IFSMgr_QueueEvent)
IFSMgr_Service (IFSMgr_KillEvent)
IFSMgr_Service (IFSMgr_FreeIOReq)
IFSMgr_Service (IFSMgr_MakeMailSlot)
IFSMgr_Service (IFSMgr_DeleteMailSlot)
IFSMgr_Service (IFSMgr_WriteMailSlot)
IFSMgr_Service (IFSMgr_PopUp)
IFSMgr_Service (IFSMgr_printf)
IFSMgr_Service (IFSMgr_AssertFailed)
IFSMgr_Service (IFSMgr_LogEntry)
IFSMgr_Service (IFSMgr_DebugMenu)
IFSMgr_Service (IFSMgr_DebugVars)
IFSMgr_Service (IFSMgr_GetDebugString)
IFSMgr_Service (IFSMgr_GetDebugHexNum)
IFSMgr_Service (IFSMgr_NetFunction)
IFSMgr_Service (IFSMgr_DoDelAllUses)
IFSMgr_Service (IFSMgr_SetErrString)
IFSMgr_Service (IFSMgr_GetErrString)
IFSMgr_Service (IFSMgr_SetReqHook)
IFSMgr_Service (IFSMgr_SetPathHook)
IFSMgr_Service (IFSMgr_UseAdd)
IFSMgr_Service (IFSMgr_UseDel)
IFSMgr_Service (IFSMgr_InitUseAdd)
IFSMgr_Service (IFSMgr_ChangeDir)
IFSMgr_Service (IFSMgr_DelAllUses)
IFSMgr_Service (IFSMgr_CDROM_Attach)
IFSMgr_Service (IFSMgr_CDROM_Detach)
IFSMgr_Service (IFSMgr_Win32DupHandle)
IFSMgr_Service (IFSMgr_Ring0_FileIO)
IFSMgr_Service (IFSMgr_Win32_Get_Ring0_Handle)
IFSMgr_Service (IFSMgr_Get_Drive_Info)
IFSMgr_Service (IFSMgr_Ring0GetDriveInfo)
IFSMgr_Service (IFSMgr_BlockNoEvents)
IFSMgr_Service (IFSMgr_NetToDosTime)
IFSMgr_Service (IFSMgr_DosToNetTime)
IFSMgr_Service (IFSMgr_DosToWin32Time)
IFSMgr_Service (IFSMgr_Win32ToDosTime)
IFSMgr_Service (IFSMgr_NetToWin32Time)
IFSMgr_Service (IFSMgr_Win32ToNetTime)
IFSMgr_Service (IFSMgr_MetaMatch)
IFSMgr_Service (IFSMgr_TransMatch)
IFSMgr_Service (IFSMgr_CallProvider)
IFSMgr_Service (UniToBCS)
IFSMgr_Service (UniToBCSPath)
IFSMgr_Service (BCSToUni)
IFSMgr_Service (UniToUpper)
IFSMgr_Service (UniCharToOEM)
IFSMgr_Service (CreateBasis)
IFSMgr_Service (MatchBasisName)
IFSMgr_Service (AppendBasisTail)
IFSMgr_Service (FcbToShort)
IFSMgr_Service (ShortToFcb)
IFSMgr_Service (IFSMgr_ParsePath)
IFSMgr_Service (Query_PhysLock)
IFSMgr_Service (_VolFlush)
IFSMgr_Service (NotifyVolumeArrival)
IFSMgr_Service (NotifyVolumeRemoval)
IFSMgr_Service (QueryVolumeRemoval)
IFSMgr_Service (IFSMgr_FSDUnmountCFSD)
IFSMgr_Service (IFSMgr_GetConversionTablePtrs)
IFSMgr_Service (IFSMgr_CheckAccessConflict)
IFSMgr_Service (IFSMgr_LockFile)
IFSMgr_Service (IFSMgr_UnlockFile)
IFSMgr_Service (IFSMgr_RemoveLocks)
IFSMgr_Service (IFSMgr_CheckLocks)
IFSMgr_Service (IFSMgr_CountLocks)
IFSMgr_Service (IFSMgr_ReassignLockFileInst)
IFSMgr_Service (IFSMgr_UnassignLockList)
IFSMgr_Service (IFSMgr_MountChildVolume)
IFSMgr_Service (IFSMgr_UnmountChildVolume)
IFSMgr_Service (IFSMgr_SwapDrives)
IFSMgr_Service (IFSMgr_FSDMapFHtoIOREQ)
IFSMgr_Service (IFSMgr_FSDParsePath)
IFSMgr_Service (IFSMgr_FSDAttachSFT)
IFSMgr_Service (IFSMgr_GetTimeZoneBias)
IFSMgr_Service (IFSMgr_PNPEvent)
IFSMgr_Service (IFSMgr_RegisterCFSD)
IFSMgr_Service (IFSMgr_Win32MapExtendedHandleToSFT)
IFSMgr_Service (IFSMgr_DbgSetFileHandleLimit)
IFSMgr_Service (IFSMgr_Win32MapSFTToExtendedHandle)
IFSMgr_Service (IFSMgr_FSDGetCurrentDrive)
IFSMgr_Service (IFSMgr_InstallFileSystemApiHook)
IFSMgr_Service (IFSMgr_RemoveFileSystemApiHook)
IFSMgr_Service (IFSMgr_RunScheduledEvents)
IFSMgr_Service (IFSMgr_CheckDelResource)
IFSMgr_Service (IFSMgr_Win32GetVMCurdir)
IFSMgr_Service (IFSMgr_SetupFailedConnection)
IFSMgr_Service (_GetMappedErr)
IFSMgr_Service (ShortToLossyFcb)
IFSMgr_Service (IFSMgr_GetLockState)
IFSMgr_Service (BcsToBcs)
IFSMgr_Service (IFSMgr_SetLoopback)
IFSMgr_Service (IFSMgr_ClearLoopback)
IFSMgr_Service (IFSMgr_ParseOneElement)
IFSMgr_Service (BcsToBcsUpper)
IFSMgr_Service (IFSMgr_DeregisterFSD)
IFSMgr_Service (IFSMgr_RegisterFSDWithPriority)
IFSMgr_Service (IFSMgr_Get_DOSTimeRounded)
IFSMgr_Service (_LongToFcbOem)
IFSMgr_Service (IFSMgr_GetRing0FileHandle)
IFSMgr_Service (IFSMgr_UpdateTimezoneInfo)
IFSMgr_Service (IFSMgr_Ring0IsCPSingleByte)
End_Service_Table(IFSMGR, IFSMGR)// 这个函数是根据MSDN给出的IFSMgr_InstallFileSystemApiHook的入口和出口参数写的
// 除了那两句_asm语句,别的都应该没有什么问题。
int VXDINLINE
IFSMgr_InstallFileSystemApiHook(int HookFunc)
{
int iResult;
_asm mov eax, [HookFunc] // 也许应该是_asm mov edx, [HookFunc]
VxDCall (IFSMgr_InstallFileSystemApiHook)
_asm mov [iResult], eax
return(iResult);
}