奇趣技术网 收藏本站
设为主页
商务合作
首页 新闻中心 行业动态 软件新闻 安全资讯 病毒预警 漏洞发布 操作系统 Dos Win9x Win2000 WinXP Win2003 WinVista Linux Unix
数据库 DB2 Access MSSQL MySQL Oracle Sybase 编程技术 ASP PHP JSP CGI/Perl XML .Net C/C++/C# VB VC Delphi Java 汇编
安全技术 安全教学 工具介绍 漏洞利用 病毒防范 入侵检测 防火墙 安全防范 汉化破解 攻击实例 加密解密 技术论坛
中华网络安全联盟 >> 程序开发 >> VB >> VB将OCX植入执行文件内
程序开发
Asp
PHP
JSP
CGI/Perl
XML
.Net
C/C++/C#
Visual Basic
Visual C++
Delphi
Java
汇编语言
  • VB中使用WinSock控件传

  • VB API函数介绍——控

  • VB从零开始编外挂(完整

  • VB.Net实现Web Servic

  • 老树新芽 体验Visual 

  • vb中利用xmlhttp来下载

  • vb中使用正则表达式

  • ASP.NET中Cookie编程的

  • VB将OCX植入执行文件内
    字体:

    中华网络安全联盟    作者:佚名    来源:网络转载    时间:2006-3-22

    在用VB编程中合理的使用第三方控件,往往能够事半功倍。但是使用第三方控件也有不好的地方,那就是为了保证程序正常运行,必须使程序能够在系统目录或程序目录下找到所用的第三方控件。要做到这一点通常有两种办法:一是把控件和程序制成一个压缩包发行,这样的缺点是有可能导致在程序传播过程中丢失控件文件。二是制作安装程序,缺点是制作过程烦琐。而且上面两种办法也不符合绿色软件的要求。所谓的绿色软件是指软件只有单个可执行文件且无须安装,目前很受用户欢迎。那么有没有办法在使用了第三方控件的情况下实现绿色软件梦呢?答案是有。

      做法是,将第三方控件以自定义资源文件方式保存在程序中,程序运行之后使用控件之前将所用到的控件生成到该程序目录下,完成控件从可执行文件中的金蝉脱壳。

      具体做法如下:

      第一步:将要用到的控件拷贝到当前工程目录下,右键单击该控件,选择属性,记下文件大小。注意,应记下以字节为单位的具体数字,而不是多少K,以备编程使用。

      第二步:引用并正常使用该控件。

      第三步:新建资源文件加入工程,在资源文件编辑器中添加所使用的第三方控件为自定义资源(CUSTOM),资源号使用默认的101。如果使用了多个控件则分别添加到资源文件的101、102......资源项中,脱壳代码也要作相应的修改。

      第四步:编写控件脱壳代码,使其读取资源文件的数据,在程序当前目录下生成控件。

      代码如下:

    Private Const OCXSIZE = 57344 '欲生成的控件大小是57344Byte,名字为CoolToolBar.ocx

    Sub Main()
     Dim Ocx() As Byte 'OCX是个Btye类型的数组
     Dim Counter As Long
     Ocx = LoadResData(101, "CUSTOM") '将自定义资源中101号资源读入数组OCX
     '注意,微软的帮助中对加载自定义资源的说明有错误,自定义资源标识为"CUSTOM"而不是帮助所说的数字10

     If Right(App.Path, 1) = "($%$43%^#ASD#2@$#f$%^) Then '读取程序所在路径,判断是否为根目录并分别处理
      '程序在根目录下
      If Dir(App.Path & "CoolToolBar.ocx") = "" Then '程序路径下有无控件,无则生成控件
       '以二进制方式写(生成)控件(CoolToolBar.ocx)到主程序所在的目录
       Open App.Path & "CoolToolBar.ocx" For Binary As #1
       For Counter = 0 To OCXSIZE - 1 '注意因为从0 Byte开始因此以文件大小 - 1Byte 为终值
        Put #1, , Ocx(Counter)
       Next Counter
       Close #1
      End if
     Else
      '程序不在根目录下
      If Dir(App.Path & "\CoolToolBar.ocx") = "" Then '程序路径下有无控件,无则生成控件
       '以二进制方式写(生成)控件(CoolToolBar.ocx)到主程序所在的目录
       Open App.Path & "\CoolToolBar.ocx" For Binary As #1
       For Counter = 0 To OCXSIZE - 1 '注意因为从0 Byte开始因此以文件大小 - 1Byte 为终值
        Put #1, , Ocx(Counter)
       Next Counter
       Close #1
      End if
     End if
     Form1.Visible = True '主程序所用控件已经生成,显示主窗体,进入主程序。
    End Sub  

      注意:将以上代码作为一个模块添加到工程中,并在工程-工程属性设置中将启动对象选为Sub Main,即上面的脱壳代码。然后编译生成EXE文件,将该EXE文件拷贝到其他没有安装所用控件的计算机上运行一下看看是否实现了控件携带之金蝉脱壳。如果是那么OK!以上为使用一个控件的情况,使用多个控件方法基本相同,不在赘述。

    字体:
     
    设为主页 收藏本站 联系我们 友情连接 商务合作 网友留言
    Copyright©2006-2008 中华网络安全联盟 All rights reserved.