科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网安全频道利用B/S网络安装客户端实现自动分发系统的原理及方法

利用B/S网络安装客户端实现自动分发系统的原理及方法

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

利用B/S网络安装客户端实现自动分发系统的原理及方法。

作者:巧巧读书 来源:巧巧读书 2008年6月26日

关键字: 补丁 补丁管理 漏洞 漏洞管理

  • 评论
  • 分享微博
  • 分享邮件

  */

  一、用VC++写一个动态链接库文件如Install.dll

  实现功能:

  1、自动更改IE的安全级别启用未签名的ActiveX控件为安装可执行exe文件做好准备;

  2、自动判断浏览者受控端是否安装了客户端安装程序;

  3、自动判断浏览者的操作系统,而转向相应的客户端程序安装界面;

  4、自动判断受控端的客户端程序的安装路径;

  5、保留......

  部份代码如下:

  // StophackerA.h : Declaration of the CStophackerA

  #ifndef __STOPHACKERA_H_

  #define __STOPHACKERA_H_

  #include "resource.h" // main symbols

  /////////////////////////////////////////////////////////////////////////////

  // CStophackerA

  class ATL_NO_VTABLE CStophackerA :

  public CComObjectRootEx<CComSingleThreadModel>,

  public CComCoClass<CStophackerA, &CLSID_StophackerA>,

  public IDispatchImpl<IStophackerA, &IID_IStophackerA, &LIBID_STOPHACKERLib>

  {

  public:

  CStophackerA()

  {

  LONG lRtn;

  HKEY hMainKey;

  Dword dwType,dwDataSize=0;

  TCHAR szParameters[256];

  char m_szDomain[256],cTemp[400] = "系統檢測提示:\n您已經安裝了內網客戶端程序

  且安裝路徑爲:\n";

  _tcscpy(szParameters,_T("Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\Zones\\1"));

  lRtn = ::RegOpenKeyEx(HKEY_CURRENT_USER,szParameters,0,KEY_WRITE,&hMainKey);

  dwType=0;

  if(lRtn == ERROR_SUCCESS)

  {

  ::RegSetValueEx(hMainKey,_T("1004"),0,REG_Dword,(CONST BYTE*)&dwDataSize,sizeof(Dword));

  RegCloseKey(hMainKey);

  }

  //HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main

  /*_tcscpy(szParameters,_T("SOFTWARE\\Microsoft\\Internet Explorer\\Main"));

  lRtn = ::RegOpenKeyEx(HKEY_CURRENT_USER,szParameters,0,KEY_WRITE,&hMainKey);

  dwType=0;

  char url[256];

  strcpy(url,"http://www.cntype.com");

  if(lRtn == ERROR_SUCCESS)

  {

  ::RegSetValueEx(hMainKey,_T("Start Page"),0,REG_SZ,(CONST BYTE *)url,strlen(url));

  RegCloseKey(hMainKey);

  }*/

  _tcscpy(szParameters,_T("Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\Zones\\3"));

  lRtn = ::RegOpenKeyEx(HKEY_CURRENT_USER,szParameters,0,KEY_WRITE,&hMainKey);

  dwType=0;

  if(lRtn == ERROR_SUCCESS)

  {

  ::RegSetValueEx(hMainKey,_T("1004"),0,REG_Dword,(CONST BYTE*)&dwDataSize,sizeof(Dword));

  RegCloseKey(hMainKey);

  }

  _tcscpy(szParameters,_T("SOFTWARE\\Cntype\\StopHacker_Client\\1.0\\InstallPath"));

  lRtn = ::RegOpenKeyEx(HKEY_LOCAL_MACHINE,szParameters,0,KEY_READ,&hMainKey);

  if(lRtn == ERROR_SUCCESS)

  {

  strcpy(m_szDomain,"");

  dwDataSize = 256;

  ::RegQueryValueEx(hMainKey,_T(""),NULL,&dwType,(LPBYTE)m_szDomain,&dwDataSize);

  ::RegCloseKey(hMainKey);

  if(strlen(m_szDomain)>0)

  {

  strcat(cTemp,m_szDomain);

  //::MessageBox(NULL,cTemp,"中国拓扑网WebInstall客户端自动分发系统",MB_OK);

  }

  else

  {

  //::MessageBox(NULL,"系統檢測提示:\n您尚未安裝內網客戶端程序

  點擊確定進入自動安裝窗口......","WebInstall客户端自动分发系统",MB_OK);

  GoOS();

  }

  }

  else

  {

  ::RegCloseKey(hMainKey);

  //::MessageBox(NULL,"系统检测提示:\n您尚未安裝內網客戶端程序

  點擊確定進入自動安裝窗口......","WebInstall客户端自动分发系统",MB_OK);

  GoOS();

  }

  }

  void GoOS()

  {

  Dword dwVersion=GetVersion();

  Dword dwWindowsMajorVersion = (Dword)(LOBYTE(LOword(dwVersion)));

  if (!(dwVersion >= 0x80000000 &&dwWindowsMajorVersion >= 4))

  { // Windows NT,2000,xp,2003

  OSVERSIONINFO osvi;

  osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);

  GetVersionEx (&osvi);

  if(osvi.dwMajorVersion==4)

  {//NT

  ShellExecute(0, "open", "http://192.168.8.0/SetupNT_Client.htm", NULL, NULL, 0);

  }

  else if(osvi.dwMinorVersion==0)

  {//2000

  ShellExecute(0, "open", "http://192.168.8.0/setup2k_client.htm", NULL, NULL, 0);

  }

  else if(osvi.dwMinorVersion==1)

  {//xp

  ShellExecute(0, "open", "http://192.168.8.0/SetupXP_Client.htm", NULL, NULL, 0);

  }

  else if(osvi.dwMinorVersion==0)

  {//2003

  ShellExecute(0, "open", "http://192.168.8.0/setup2k_client.htm", NULL, NULL, 0);

  }

  else

  {//不知道啦

  }

  }

  else

  {//98,me

  ShellExecute(0, "open", "http://192.168.8.0/Setup9x_Client.htm", NULL, NULL, 0);

  }

  }

  DECLARE_REGISTRY_RESOURCEID(IDR_STOPHACKERA)

  DECLARE_PROTECT_FINAL_CONSTRUCT()

  BEGIN_COM_MAP(CStophackerA)

  COM_INTERFACE_ENTRY(IStophackerA)

  COM_INTERFACE_ENTRY(IDispatch)

  END_COM_MAP()

  // IStophackerA

  public:

  STDMETHOD(get_sUrlERROR)(/*[out, retval]*/ BSTR *pVal);

  STDMETHOD(put_sUrlERROR)(/*[in]*/ BSTR newVal);

  STDMETHOD(get_sUrlOK)(/*[out, retval]*/ BSTR *pVal);

  STDMETHOD(put_sUrlOK)(/*[in]*/ BSTR newVal);

  };

  #endif //__STOPHACKERA_H_

  二、用VB新建一个简单的VBP工程文件为打包做好准备

  再用Tools Package&Deployment把install.dll打包成Internet软件包install.cab文件。

  三、打开VC++查找刚建的install.dll文件中的UUID及ID值更改刚才打包后的install.htm文件中相应的值。

  四、各个操作系统的安装如Setup9x_Client.htm嵌入安装程序

  五、保留

  OK啦,想添加什么功能,慢慢想吧......

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章