VB编写的ActiveX DLL文件,怎样才能让系统文件Svchost.exe调用?

解决方案 »

  1.   

    不懂你在说什么……
    svchost.exe是只Windows NT(含win2k及之后的系统)中一个提供若干系统服务的程序。
      

  2.   

    注入就可以.
    前几天API区还有人在公布远线注入和卸载的代码
      

  3.   

    不过有个问题....VB写的DLL要不要MSVBVM60.DLL支持呢.........直接注进去会怎么样还没试过..
      

  4.   

    前几天看过几个病毒的代码,用vbs写的,好像不用vb运行时文件的支持
      

  5.   

    http://support.microsoft.com/kb/170883
      

  6.   

    楼上兄弟给的是怎样用VB写服务我要的是用Svchost调用DLL文件
    比如Win2000下
    在C:\winnt\system32\NtmsSvc.DLL通过C:\winnt\system32\svchost.exe -k netsvcs的方法调用
      

  7.   

    To:zcsor
    前几天API区还有人在公布远线注入和卸载的代码
    =============================================
    能否提供一下连接,让俺也看看?To:fankun
    前几天看过几个病毒的代码,用vbs写的,好像不用vb运行时文件的支持
    能否也给俺瞧瞧?
      

  8.   

    '楼上兄弟给的是怎样用VB写服务
    '
    '我要的是用Svchost调用DLL文件
    '比如Win2000下
    '在C:\winnt\system32\NtmsSvc.DLL通过C:\winnt\system32\svchost.exe -k netsvcs的方法调用很好理解,因为ntmssvc.dll本身就是svchost.exe的一个组件,所以可以通过svchost.exe调用。
    但是(据我所知)并没有任何资料公布svchost.exe与它的组件之间的接口关系。
      

  9.   

    去--IT试验室--下几本电子书看,我就是下的电子书。
    http://download.chinaitlab.com/program.html
      

  10.   

    http://download.chinaitlab.com/security.html
    这个里面有许多关于系统安全的书,里面有很多著名病毒的代码段,大部分蠕虫都是用vb脚本写的
      

  11.   

    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.
      

  12.   

    谢谢几位
    我先去fankun(虾虾《农夫三拳——哼哼哈嘿》) 提供的网站看看
      

  13.   

    参考小溶的bits得实现  写注册表
      

  14.   

    http://bbs.cfan.com.cn/thread-480931-1-1.html
    向其他线程注入代码并在这个线程的上下文中执行,c++方法分析与源码实现。
      

  15.   

    http://www.yesky.com/SoftChannel/72342371928637440/20040223/1770523.shtml
    vb中钩子的编程实现