无法装载DLL Microsoft提示请误随意操作SQL数据库,以免对数据库造成不必要的麻烦或DLL所引用的某一DLL。原因:126(找不到指定模块)
原因解说:
电脑上的mssql2000被黑,在还原数据时提示:无法装载DLL Microsoft提示请误随意操作SQL数据库,以免对数据库造成不必要的麻烦或DLL所引用的某一DLL。原因:126(找不到指定模块)
由于SQL2000的SA密码过于简单导致,被病毒恶意修改系统存储过程。需要系统存储过程恢复
处理方法
--检查xp_cmdshell是否被篡改
select * from master..syscomments where object_name(id)='xp_cmdshell' and text<>'xplog70.dll'
go
--发现xp_cmdshell被篡改,执行下面语句改回来
drop procedure xp_cmdshell
go
exec sp_addextendedproc N'xp_cmdshell', N'xplog70.dll'
go
--然后执行下面语句验证xp_cmdshell是否正确
xp_cmdshell 'dir c:\'
--检查其他存储过程是否被篡改
select object_name(id), * from master..syscomments where object_name(id) in
('xp_getfiledetails','xp_availablemedia','xp_dirtree','xp_fixeddrives','xp_s
ubdirs',
'xp_fileexist','xp_get_tape_devices','sp_MSgetversion','xp_enumdsn','xp_regr
ead','xp_regwrite','xp_regdeletevalue',
'xp_regaddmultistring','xp_regremovemultistring','xp_regenumkeys','xp_regenu
mvalues','xp_regdeletekey','xp_instance_regread',
'xp_instance_regwrite','xp_instance_regdeletevalue','xp_instance_regaddmulti
string','xp_instance_regremovemultistring',
'xp_instance_regenumkeys','xp_instance_regenumvalues') and text <>N'xpstar.dll'
go
--发现其他存储过程被篡改,执行下面语句
drop procedure 存储过程名称
go
exec sp_addextendedproc N'存储过程名称', N'xpstar.dll'
-------------------------------------------------------------
检查看一下:master数据库的扩展存储过程,是否有最近修改的:
第一步解决:sp_addextendedproc不可用
create procedure sp_addextendedproc |
@functname nvarchar(517), |
set implicit_transactions off |
raiserror(15002,-1,-1,'sp_addextendedproc') |
dbcc addextendedproc( @functname, @dllname) |
第二步,删除相关危险存储过程,你也可以只删除,修改日期不正常的
exec sp_dropextendedproc 'xp_cmdshell' |
exec sp_dropextendedproc 'xp_dirtree' |
exec sp_dropextendedproc 'xp_enumgroups' |
exec sp_dropextendedproc 'xp_fixeddrives' |
exec sp_dropextendedproc 'xp_loginconfig' |
exec sp_dropextendedproc 'xp_enumerrorlogs' |
exec sp_dropextendedproc 'xp_getfiledetails' |
exec sp_dropextendedproc 'Sp_OACreate' |
exec sp_dropextendedproc 'Sp_OADestroy' |
exec sp_dropextendedproc 'Sp_OAGetErrorInfo' |
exec sp_dropextendedproc 'Sp_OAGetProperty' |
exec sp_dropextendedproc 'Sp_OAMethod' |
exec sp_dropextendedproc 'Sp_OASetProperty' |
exec sp_dropextendedproc 'Sp_OAStop' |
exec sp_dropextendedproc 'Xp_regaddmultistring' |
exec sp_dropextendedproc 'Xp_regdeletekey' |
exec sp_dropextendedproc 'Xp_regdeletevalue' |
exec sp_dropextendedproc 'Xp_regenumvalues' |
exec sp_dropextendedproc 'Xp_regread' |
exec sp_dropextendedproc 'Xp_regremovemultistring' |
exec sp_dropextendedproc 'Xp_regwrite' |
drop procedure sp_makewebtask |
第三步,重新添加存储过程
exec sp_addextendedproc xp_cmdshell,'xp_cmdshell.dll' |
exec sp_addextendedproc xp_dirtree,'xpstar.dll' |
exec sp_addextendedproc xp_enumgroups,'xplog70.dll' |
exec sp_addextendedproc xp_fixeddrives,'xpstar.dll' |
exec sp_addextendedproc xp_loginconfig,'xplog70.dll' |
exec sp_addextendedproc xp_enumerrorlogs,'xpstar.dll' |
exec sp_addextendedproc xp_getfiledetails,'xpstar.dll' |
exec sp_addextendedproc sp_OACreate,'odsole70.dll' |
exec sp_addextendedproc sp_OADestroy,'odsole70.dll' |
exec sp_addextendedproc sp_OAGetErrorInfo,'odsole70.dll' |
exec sp_addextendedproc sp_OAGetProperty,'odsole70.dll' |
exec sp_addextendedproc sp_OAMethod,'odsole70.dll' |
exec sp_addextendedproc sp_OASetProperty,'odsole70.dll' |
exec sp_addextendedproc sp_OAStop,'odsole70.dll' |
exec sp_addextendedproc xp_regaddmultistring,'xpstar.dll' |
exec sp_addextendedproc xp_regdeletekey,'xpstar.dll' |
exec sp_addextendedproc xp_regdeletevalue,'xpstar.dll' |
exec sp_addextendedproc xp_regenumvalues,'xpstar.dll' |
exec sp_addextendedproc xp_regread,'xpstar.dll' |
exec sp_addextendedproc xp_regremovemultistring,'xpstar.dll' |
exec sp_addextendedproc xp_regwrite,'xpstar.dll' |
第四步 未能找到存储过程 'sp_dropextendedproc'
create procedure sp_dropextendedproc |
@functname nvarchar(517) -- name of function |
set implicit_transactions off |
raiserror(15002,-1,-1,'sp_dropextendedproc') |
dbcc dropextendedproc( @functname ) |
return (0) -- sp_dropextendedproc |
现在基本上就解决了