GINA DLL奇怪的问题

KeSummer 2006-08-03 08:44:18
我写了个GINA DLL(myGina.dll),然后通过注册表加载.
在2000 sp4 , xp sp2 ,2003 sp1下都正常工作,实现了我要的密码截取功能.

后来我把myGina.dll改名为MSGINA.dll,原来的MSGINA.dll改为GINA.dll,我在我的GINA里也是直接调用了GINA.DLL的,覆盖系统文件后.
在2000下工作正常,但在xp下winlogon居然出现访问非法内存,2003根本不能启动,奇怪,问题到底出在那啊?

我也发现了三种操作系统MSGINA大小差别很大,2000 300多K,XP 900多K,2003 1M1.
请问系统加载默认的GINA有区别吗?或者说winlogon加载MSGina.dll有什么特殊的地方,为什么会有上诉问题?谢谢各位大侠了.

分不够可以再加的.只要问题解决的话.
...全文
317 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
KeSummer 2006-08-13
  • 打赏
  • 举报
回复
很早用过了呀.其中DLL可选导出函数在ms-help://MS.MSDNQTR.2003FEB.2052/security/security/winlogon_notification_events.htm
对自己感兴趣的事件进行处理.
键是:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Notify

这是我所收集的资料.
moloto2004 2006-08-13
  • 打赏
  • 举报
回复
楼主用过notifypackage的dll吗?
KeSummer 2006-08-04
  • 打赏
  • 举报
回复
问题解决了,现在的GINA能替换系统的MSGINA在2000,2003下正常工作了.
那些无名的是函数序号,但也不知道参数所以是无法直接调用的.
我的解决方法是:加载用MAKEINTRESOURCE加函数序号就可以用GetProcAddress去获得函数地址,但无法调用,只能用函数转发了.
方法大概如下:
// 保存返回地址
__asm POP m_dwReturn[0 * TYPE long];
//调用函数
// 转跳到返回地址
__asm JMP m_dwReturn[0 * TYPE long];

这是昨晚偶然搜索到的一偏关于病毒调用API的文章才想到的.希望各位有用.^-^
KeSummer 2006-08-04
  • 打赏
  • 举报
回复
= = 谁进来我给分他.
DentistryDoctor 2006-08-03
  • 打赏
  • 举报
回复
看下最新的MSDN文档中是否有更新?
KeSummer 2006-08-03
  • 打赏
  • 举报
回复
知道答案了,是我没导全函数导致的,可是问题又来了,MSGina.dll里面有些没有名字的导出函数,我怎么调用啊.

Import Ordinal Hint Function Entry Point
------ ----------- ----------- ------------------------------ -----------

Export Ordinal Hint Function Entry Point
------ ----------- ----------- ------------------------------ -----------
[O ] 1 (0x0001) N/A N/A 0x00002A33
[O ] 2 (0x0002) N/A N/A 0x00020750
[O ] 3 (0x0003) N/A N/A 0x000207AA
[O ] 4 (0x0004) N/A N/A 0x00020802
[O ] 5 (0x0005) N/A N/A 0x00020760
[O ] 6 (0x0006) N/A N/A 0x0002076A
[O ] 7 (0x0007) N/A N/A 0x0002077A
[O ] 8 (0x0008) N/A N/A 0x0002078A
[O ] 9 (0x0009) N/A N/A 0x0002079A
[O ] 10 (0x000A) N/A N/A 0x0000385E
[O ] 11 (0x000B) N/A N/A 0x0000D3C3
[O ] 12 (0x000C) N/A N/A 0x000207C4
[O ] 13 (0x000D) N/A N/A 0x00007447
[O ] 14 (0x000E) N/A N/A 0x000207BA
[O ] 15 (0x000F) N/A N/A 0x000038AE
[O ] 16 (0x0010) N/A N/A 0x000207E8
[O ] 17 (0x0011) N/A N/A 0x000207F8
[O ] 18 (0x0012) N/A N/A 0x000207D4
[O ] 19 (0x0013) N/A N/A 0x00001EDA
[O ] 20 (0x0014) N/A N/A 0x0000745C
[O ] 21 (0x0015) N/A N/A 0x00020812
[O ] 22 (0x0016) N/A N/A 0x000207DE
[O ] 23 (0x0017) N/A N/A 0x00020822
[O ] 24 (0x0018) N/A N/A 0x00020832
[O ] 25 (0x0019) N/A N/A 0x00008BDC
[O ] 26 (0x001A) N/A N/A 0x0002083C
[O ] 27 (0x001B) N/A N/A 0x00020846
[O ] 28 (0x001C) N/A N/A 0x00020850
[C ] 29 (0x001D) 0 (0x0000) ShellShutdownDialog 0x0001EED6
[C ] 30 (0x001E) 1 (0x0001) WlxActivateUserShell 0x00004855
[C ] 31 (0x001F) 2 (0x0002) WlxDisconnectNotify 0x00018C76
[C ] 32 (0x0020) 3 (0x0003) WlxDisplayLockedNotice 0x0001A099
[C ] 33 (0x0021) 4 (0x0004) WlxDisplaySASNotice 0x0000BFA7
[C ] 34 (0x0022) 5 (0x0005) WlxDisplayStatusMessage 0x000070DB
[C ] 35 (0x0023) 6 (0x0006) WlxGetConsoleSwitchCredentials 0x0001B72A
[C ] 36 (0x0024) 7 (0x0007) WlxGetStatusMessage 0x0001F105
[C ] 37 (0x0025) 8 (0x0008) WlxInitialize 0x0000C42C
[C ] 38 (0x0026) 9 (0x0009) WlxIsLockOk 0x00018A80
[C ] 39 (0x0027) 10 (0x000A) WlxIsLogoffOk 0x00018AA5
[C ] 40 (0x0028) 11 (0x000B) WlxLoggedOnSAS 0x00018926
[C ] 41 (0x0029) 12 (0x000C) WlxLoggedOutSAS 0x000076B7
[C ] 42 (0x002A) 13 (0x000D) WlxLogoff 0x00018AB0
[C ] 43 (0x002B) 14 (0x000E) WlxNegotiate 0x0000EB70
[C ] 44 (0x002C) 15 (0x000F) WlxNetworkProviderLoad 0x00018BD4
[C ] 45 (0x002D) 16 (0x0010) WlxReconnectNotify 0x00018C69
[C ] 46 (0x002E) 17 (0x0011) WlxRemoveStatusMessage 0x000037B0
[C ] 47 (0x002F) 18 (0x0012) WlxScreenSaverNotify 0x00018BAF
[C ] 48 (0x0030) 19 (0x0013) WlxShutdown 0x00018BA2
[C ] 49 (0x0031) 20 (0x0014) WlxStartApplication 0x0001D37F
[C ] 50 (0x0032) 21 (0x0015) WlxWkstaLockedSAS 0x0001ABCA

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧