网上文摘 小说 Flash游戏 最近更新 下载排行 资源分类 下载指南
经典编程资源 精彩不容错过
设为首页
加入收藏
联系我们
  当前位置:Delphi园地精彩源码开源项目 → 应用程序病毒免疫器 V0.88
  本周下载排行
  本月下载排行
资源名称:应用程序病毒免疫器 V0.88
文件类型: RAR
适用版本:
发 布 者: 与月共舞
资源类型: 免费
资源大小: 186 KB
资源等级:
整理时间: 2007-12-3 9:35:26
资源网址: http://www.cnpack.org
下载次数: 本 周:1 本月:39 总计:1012
下载链接:
小说 Flash游戏
资源简介: CnPack 开发组管理员 与月共舞 个人作品。
用于给可执行文件增加一个病毒免疫头,当文件被非法修改后,允许自动进行文件修复。
该软件为开放源码的自由软件!

这不是一个杀毒软件、也不是一个病毒防火墙,如果你用过ReadBook的防病毒校验功能,你会发现这就是可以实现这种功能的傻瓜式控件。
  这个控件是完全免费(非商业用途)、带完整源码的,如果你打算分析我的源码,下面的内容会对你有所帮助。
  对一般用户,你只需要下载一个控件,安装后往主窗体上一放就行了,不用编写一行代码。下面所有的功能都由控件自身实现了,对用户是完全透明的。
  注:下面的方法未必是最好、最安全的,但为了制作一个完全智能不需程序员干预的控件,我放弃了一些更保险的方法,目前只能做到这里。
  控件的功能分两部分:自身校验及自修复。
  一、自身校验。对软件自身做CRC校验是很容易的事,关键是校验码应该存放在哪?放在应用程序外面,虽然方便,却不安全。我将它放到了应用程序内部,其存放地址为动态地址。
  校验码在源代码中以常量的形式出现,编译后用专门的工具把它写进去,常量编译后的地址是很难找的,为了方便定位,我在校验码前加了16字节随机数做标志。为了提高运行速度,在校验码前我定义了一个整数用来存放校验码的地址。
  这样一来,编译后的程序在经过处理后,就可以通过计算CRC校验码的方法达到检查文件是否被修改的目的。当然,为了应付一般的破解,在控件中还有一些措施,后面会提到。
  在V1.1以上版本的控件中,向应用程序中写入校验码是由控件自动完成的,在编译后第一次运行时进行。
  二、自修复。控件在运行时自动产生一个有CRC校验保护的备份文件,用于程序被修改后自动修复。而最大的难题是程序在运行时无法直接修改自身,所以很多带有防病毒校验的软件都没有提供自修复功能。既然不能直接修改,就间接吧!我另外编写了一个小程序AVTool,它可以完成向应用程序中写入校验码和从备份文件中恢复应用程序的功能。
  AVTool用Aspack压缩后(18K)放在资源文件中,编译时连接到应用程序。应用程序在发现自身被修改后,将AVTool释放到临时目录,由它进行修复工作,修复结束再重新运行。而用户几乎是感觉不到这种切换的。
  三、对压缩软件的支持。很多软件开发者喜欢把他们写的软件用Aspack这样的工具压缩后再发布,V1.2版控件提供了对它们的支持。
  由于压缩后的应用程序和压缩前完全不一样,CRC值只有写到静态地址里。在可执行文件中,文件头、节尾都有许多为了对齐而保留的空间,你可以选择一处将CRC值写到里面去。由于压缩工具各不相同,控件默认的地址可能对你并不适用,或许你更喜欢把它放到别人找不到的地方,这样你需要自己找一个,并把它写到AVCRC32.pas的csCompressPos常量中。
  已通过测试的压缩软件有:Aspack V1.061b、Aspack V2.001、Upx V1.07w、PECompact V1.41 UnRegistered、PeX V0.99 by bart。(Windows98 SE+Delphi5.0)
  四、多语言支持。V1.2中增加了对多语言的支持,本来我只想支持繁体中文,后来顺便加上了对英文的支持。用户可以选择所需的语言,或自动检测,让控件自已去选择。这种支持是基于源代码、可自行扩充、完全开放的,有一定基础的用户就可以自己扩充(其实也没什么可扩充的了)。目前支持简体、繁体和英文。
  五、防常规破解。在V1.1中,只要看懂了源码,稍有点知识的人就可以写一个通用的程序把这种保护破解,V1.2新增了一些防护。
  1、用来标识校验码存放地址的数据不再固定,AVTool在给应用程序做标记时把那16字节标志用真正的随机数改写,存放地址的数据与另一个常量作异或处理,CRC校验时也采用了一个常量作初始校验值。而这些常量可由软件开发者随意更改,在对应用程序标记时作参数传给AVTool。经过处理的校验码没有任何一点与众不同之处。一般情况下,要获得校验码存放的地址和修改校验码是非常困难的。
  2、备份文件名可自定义,甚至可以放在子目录中,而且对备份文件作CRC校验时也用了一个初始值。如果不知道这个初始值,是无法在修改备份文件后重新写校验值的。
  3、甚至很难有一种方法直接从应用程序本身判断它是否受SelfAV保护。你可以写一个应用程序,用Aspack压缩(将CRC值写到一个不起眼的地方),然后,如果谁能写一段通用的代码出来检测类似这样的应用程序是否使用了SelfAV并将它破解,我拜他为师!
  4、当然这些雕虫小技只是用来防备一些低级的破解的,稍有经验的Cracker就可以把这种保护解除(再好的加密也逃不过被解密的命运,别说这个控件级的代码了),我的目的只是尽量使他们不能用一段通用的代码来解开所有使用这个控件的程序。
  5、这个控件几乎可以应付所有现有感染可执行文件的病毒,只要它们在感染后还允许程序代码正常执行,并且我用CreateFile打开应用程序读到的数据是真实的。如果有什么新病毒针对我这个控件作了处理,那绝不是我的责任。
  6、写这个控件不是用来防止软件被修改、破解的,尽管它可以有限地做到这一点。对一个公布源码的控件来说,谁都可以对它进行破解,所以我并不提倡你用它来保护你的作品。
  六、最后申明。
  我写这个控件,只是为了让更多的软件开发者增加防毒意识。对非商业用途完全免费,公布完整源码及开发文档,由于使用本控件所造成的任何后者我都不负责任。我希望更多的开发人员能多将自己的拿手绝活、编程心得拿出来让大家分享,支持中国的软件事业。
Google
 
Web www.delphifans.com
下载帮助() 下载链接错误报告或者意见反馈
下载说明:
关于我们 | 广告服务 | 发布资源 | 联系站长 Copyright © 2002-2006 Delphi园地 All Rights Reserved