如何让自己的DLL(VB编写)能被svchost.exe调用 VB编写的ActiveX DLL文件,怎样才能让系统文件Svchost.exe调用? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不懂你在说什么……svchost.exe是只Windows NT(含win2k及之后的系统)中一个提供若干系统服务的程序。 注入就可以.前几天API区还有人在公布远线注入和卸载的代码 不过有个问题....VB写的DLL要不要MSVBVM60.DLL支持呢.........直接注进去会怎么样还没试过.. 前几天看过几个病毒的代码,用vbs写的,好像不用vb运行时文件的支持 http://support.microsoft.com/kb/170883 楼上兄弟给的是怎样用VB写服务我要的是用Svchost调用DLL文件比如Win2000下在C:\winnt\system32\NtmsSvc.DLL通过C:\winnt\system32\svchost.exe -k netsvcs的方法调用 To:zcsor前几天API区还有人在公布远线注入和卸载的代码=============================================能否提供一下连接,让俺也看看?To:fankun前几天看过几个病毒的代码,用vbs写的,好像不用vb运行时文件的支持能否也给俺瞧瞧? '楼上兄弟给的是怎样用VB写服务''我要的是用Svchost调用DLL文件'比如Win2000下'在C:\winnt\system32\NtmsSvc.DLL通过C:\winnt\system32\svchost.exe -k netsvcs的方法调用很好理解,因为ntmssvc.dll本身就是svchost.exe的一个组件,所以可以通过svchost.exe调用。但是(据我所知)并没有任何资料公布svchost.exe与它的组件之间的接口关系。 去--IT试验室--下几本电子书看,我就是下的电子书。http://download.chinaitlab.com/program.html http://download.chinaitlab.com/security.html这个里面有许多关于系统安全的书,里面有很多著名病毒的代码段,大部分蠕虫都是用vb脚本写的 ActiveX DLL不行,要写成标准的API DLL才行,要导出一个函数ServiceMain;以下为一段DELPHI的代码{ 文件名: ServiceDll.dpr 概述: 替换由svchost.exe启动的某个系统服务,具体服务由全局变量 ServiceName 决定. 经测试,生成的DLL文件运行完全正常. 测试环境: Windows 2003 Server + Delphi 7.0}library ServiceDll;uses SysUtils, Classes, winsvc, System, Windows;{ 定义全局变量 }var SvcStatsHandle: SERVICE_STATUS_HANDLE; // 服务控制信息句柄 dwCurrState: DWORD; // 存储服务状态 ServiceName: PChar = 'BITS'; // 服务名称{ 调试函数,用于输出调试文本 }procedure OutPutText(CH: PChar);var FileHandle: TextFile; FF: Integer;begin try if not FileExists('zztestdll.txt') then FF := FileCreate('zztestdll.txt'); finally if FF > 0 then FileClose(FF); end; AssignFile(FileHandle, 'zztestdll.txt'); Append(FileHandle); Writeln(FileHandle, CH); Flush(FileHandle); CloseFile(FileHandle);end;{ dll入口和出口处理函数 }procedure DLLEntryPoint(dwReason: DWORD);begin case dwReason of DLL_PROCESS_ATTACH: ; DLL_PROCESS_DETACH: ; DLL_THREAD_ATTACH: ; DLL_THREAD_DETACH: ; end;end;{ 与SCM管理器通话 }function TellSCM(dwState: DWORD; dwExitCode: DWORD; dwProgress: DWORD): LongBool;var SrvStatus: service_status;begin SrvStatus.dwServiceType := SERVICE_WIN32_SHARE_PROCESS; dwCurrState := dwState; SrvStatus.dwCurrentState := dwState; SrvStatus.dwControlsAccepted := SERVICE_ACCEPT_STOP or SERVICE_ACCEPT_PAUSE_CONTINUE or SERVICE_ACCEPT_SHUTDOWN; SrvStatus.dwWin32ExitCode := dwExitCode; SrvStatus.dwServiceSpecificExitCode := 0; SrvStatus.dwCheckPoint := dwProgress; SrvStatus.dwWaitHint := 3000; Result := SetServiceStatus(SvcStatsHandle, SrvStatus);end;{ Service 控制函数 }procedure servicehandler(fdwcontrol: Integer); stdcall;begin case fdwcontrol of SERVICE_CONTROL_STOP: begin TellSCM(SERVICE_STOP_PENDING, 0, 1); Sleep(10); TellSCM(SERVICE_STOPPED, 0, 0); end; SERVICE_CONTROL_PAUSE: begin TellSCM(SERVICE_PAUSE_PENDING, 0, 1); TellSCM(SERVICE_PAUSED, 0, 0); end; SERVICE_CONTROL_CONTINUE: begin TellSCM(SERVICE_CONTINUE_PENDING, 0, 1); TellSCM(SERVICE_RUNNING, 0, 0); end; SERVICE_CONTROL_INTERROGATE: TellSCM(dwCurrState, 0, 0); SERVICE_CONTROL_SHUTDOWN: TellSCM(SERVICE_STOPPED, 0, 0); end;end;{ service main }procedure ServiceMain(argc: Integer; var argv: PChar); stdcall;begin // 注册控制函数 SvcStatsHandle := RegisterServiceCtrlHandler(ServiceName, @servicehandler); if (SvcStatsHandle = 0) then begin OutPutText('Error in RegisterServiceCtrlHandler'); Exit; end else FreeConsole(); // 启动服务 TellSCM(SERVICE_START_PENDING, 0, 1); TellSCM(SERVICE_RUNNING, 0, 0); OutPutText('Service is Running'); // 这里可以执行我们真正要作的代码 while ((dwCurrState <> SERVICE_STOP_PENDING) and (dwCurrState <> SERVICE_STOPPED)) do begin Sleep(1000); end; OutPutText('Service Exit');end;// 导出函数列表exports ServiceMain;{ dll入口点 }begin DllProc := @DLLEntryPoint;end. 谢谢几位我先去fankun(虾虾《农夫三拳——哼哼哈嘿》) 提供的网站看看 参考小溶的bits得实现 写注册表 http://bbs.cfan.com.cn/thread-480931-1-1.html向其他线程注入代码并在这个线程的上下文中执行,c++方法分析与源码实现。 http://www.yesky.com/SoftChannel/72342371928637440/20040223/1770523.shtmlvb中钩子的编程实现 数组排序,高手帮忙!!!!! 即用VB来编一个可回显能执行DOS语句的程序,谢谢各位大牛们了! print k;x 结果为什么不是-1 插入数据的问题! 如何让文件安装于当前系统环境变量设置的value值下(setup factory打包问题) 二维数组组合问题 急,窗体上的picturebox内画的图如何打印?只要解决了,散分! 急!!!!!菜鸟一个打印的问题 编写一段VB的程序 为什么老是报错误:“109号资源未找到呢”? zyl910的DIB模块中有这个使一个数组指向数据的函数,那位朋友解释下! vb里能用vbscript吗
svchost.exe是只Windows NT(含win2k及之后的系统)中一个提供若干系统服务的程序。
前几天API区还有人在公布远线注入和卸载的代码
比如Win2000下
在C:\winnt\system32\NtmsSvc.DLL通过C:\winnt\system32\svchost.exe -k netsvcs的方法调用
前几天API区还有人在公布远线注入和卸载的代码
=============================================
能否提供一下连接,让俺也看看?To:fankun
前几天看过几个病毒的代码,用vbs写的,好像不用vb运行时文件的支持
能否也给俺瞧瞧?
'
'我要的是用Svchost调用DLL文件
'比如Win2000下
'在C:\winnt\system32\NtmsSvc.DLL通过C:\winnt\system32\svchost.exe -k netsvcs的方法调用很好理解,因为ntmssvc.dll本身就是svchost.exe的一个组件,所以可以通过svchost.exe调用。
但是(据我所知)并没有任何资料公布svchost.exe与它的组件之间的接口关系。
http://download.chinaitlab.com/program.html
这个里面有许多关于系统安全的书,里面有很多著名病毒的代码段,大部分蠕虫都是用vb脚本写的
{ 文件名: ServiceDll.dpr
概述: 替换由svchost.exe启动的某个系统服务,具体服务由全局变量 ServiceName 决定. 经测试,生成的DLL文件运行完全正常.
测试环境: Windows 2003 Server + Delphi 7.0}library ServiceDll;uses
SysUtils,
Classes,
winsvc,
System,
Windows;{ 定义全局变量 }
var
SvcStatsHandle: SERVICE_STATUS_HANDLE; // 服务控制信息句柄
dwCurrState: DWORD; // 存储服务状态
ServiceName: PChar = 'BITS'; // 服务名称{ 调试函数,用于输出调试文本 }
procedure OutPutText(CH: PChar);
var
FileHandle: TextFile;
FF: Integer;
begin
try
if not FileExists('zztestdll.txt') then
FF := FileCreate('zztestdll.txt');
finally
if FF > 0 then FileClose(FF);
end; AssignFile(FileHandle, 'zztestdll.txt');
Append(FileHandle);
Writeln(FileHandle, CH);
Flush(FileHandle);
CloseFile(FileHandle);
end;
{ dll入口和出口处理函数 }
procedure DLLEntryPoint(dwReason: DWORD);
begin
case dwReason of
DLL_PROCESS_ATTACH:
;
DLL_PROCESS_DETACH:
;
DLL_THREAD_ATTACH:
;
DLL_THREAD_DETACH:
;
end;
end;{ 与SCM管理器通话 }
function TellSCM(dwState: DWORD; dwExitCode: DWORD; dwProgress: DWORD): LongBool;
var SrvStatus: service_status;
begin
SrvStatus.dwServiceType := SERVICE_WIN32_SHARE_PROCESS;
dwCurrState := dwState;
SrvStatus.dwCurrentState := dwState;
SrvStatus.dwControlsAccepted := SERVICE_ACCEPT_STOP or SERVICE_ACCEPT_PAUSE_CONTINUE or SERVICE_ACCEPT_SHUTDOWN;
SrvStatus.dwWin32ExitCode := dwExitCode;
SrvStatus.dwServiceSpecificExitCode := 0;
SrvStatus.dwCheckPoint := dwProgress;
SrvStatus.dwWaitHint := 3000;
Result := SetServiceStatus(SvcStatsHandle, SrvStatus);
end;{ Service 控制函数 }
procedure servicehandler(fdwcontrol: Integer); stdcall;
begin
case fdwcontrol of SERVICE_CONTROL_STOP:
begin
TellSCM(SERVICE_STOP_PENDING, 0, 1);
Sleep(10);
TellSCM(SERVICE_STOPPED, 0, 0);
end; SERVICE_CONTROL_PAUSE:
begin
TellSCM(SERVICE_PAUSE_PENDING, 0, 1);
TellSCM(SERVICE_PAUSED, 0, 0);
end; SERVICE_CONTROL_CONTINUE:
begin
TellSCM(SERVICE_CONTINUE_PENDING, 0, 1);
TellSCM(SERVICE_RUNNING, 0, 0);
end; SERVICE_CONTROL_INTERROGATE:
TellSCM(dwCurrState, 0, 0); SERVICE_CONTROL_SHUTDOWN:
TellSCM(SERVICE_STOPPED, 0, 0); end;end;{ service main }
procedure ServiceMain(argc: Integer; var argv: PChar); stdcall;
begin
// 注册控制函数
SvcStatsHandle := RegisterServiceCtrlHandler(ServiceName, @servicehandler);
if (SvcStatsHandle = 0) then
begin
OutPutText('Error in RegisterServiceCtrlHandler');
Exit;
end else FreeConsole(); // 启动服务
TellSCM(SERVICE_START_PENDING, 0, 1);
TellSCM(SERVICE_RUNNING, 0, 0);
OutPutText('Service is Running'); // 这里可以执行我们真正要作的代码
while ((dwCurrState <> SERVICE_STOP_PENDING) and (dwCurrState <> SERVICE_STOPPED)) do
begin
Sleep(1000);
end; OutPutText('Service Exit');end;
// 导出函数列表
exports
ServiceMain;{ dll入口点 }
begin
DllProc := @DLLEntryPoint;
end.
我先去fankun(虾虾《农夫三拳——哼哼哈嘿》) 提供的网站看看
向其他线程注入代码并在这个线程的上下文中执行,c++方法分析与源码实现。
vb中钩子的编程实现