| 看了这个标题你是否会觉得很怪异!其实一点也不要感到惊讶,为什么呢?因为我有切身感受。
前几天我到朋友家品茶,听见朋友在抱怨,他说:"我保存在电脑中的图片全部被改了,图片中的红色全部都被其他的颜色所替换,而且还在图片上加上了很多英文字,我最近并没有使用过图片修改软件,真是倒霉!"。听了朋友的抱怨后,我感到这肯定是一种新的病毒,但朋友说他用了很多杀毒软件,都没有查到这种病毒。到了这种地步我只好一边安慰他一边帮他重装系统。
回去后我仔细的思考这种病毒的运行原理,最后用vb.net模拟出了这种病毒。
其实这种病毒的原理很简单;就是以时间为条件,在不同的时间用不同的颜色替换红色。并且用线条画出英文字母。将改动后的图片保存为另一个文件,把原来的图片删除,将新图片的名字改为原来的文件名字进行保存。
下面是用vb.net模拟出来的代码:
(在调试此程序是请先准备一幅用红色的图片)
图片1
Private Sub Button1_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles Button1.Click
Dim filename As String
filename = "F:\Documents and Settings\Administrator\My Documents\red.bmp"
'这是我的图片文件地址,你可以改为其它地址或文件。
Dim bmp As New Bitmap("F:\Documents and Settings\Administrator\My Documents\red.bmp")
'用一个图片实例化bitmap对象
Dim bmpheght As Integer
Dim bmpw As Integer
Dim i, k As Integer
Dim cloAs
bmpheght = CType(bmp.Height, Integer)'获得图片的高
bmpw = CType(bmp.Width, Integer)'获得图片的宽
Label1.Text = bmpheght'显示图片的高
Button1.Text = bmpw'显示图片的宽
For i = 0 To bmpw - 1
For k = 0 To bmpheght - 1
cloAs = bmp.GetPixel(i, k).Name.ToString
'获得象素点的颜色,返回颜色的16制代码
If cloAs = "ffff0000" Then'ffff0000
'是红色的16制代码,对于其他的颜色代码请见msdn。
bmp.SetPixel(i, k, System.Drawing.Color.Blue)
'用蓝色替换红色
End If
Next
Next
Dim nfilename As String
nfilename = "F:\Documents and Settings\Administrator\My Documents\red1.bmp"
bmp.Save(nfilename) '将改变后的文件保存为一个新文件
bmp.Dispose()'释放bitmap对象
IO.File.Delete(filename)'删除原来的文件
Dim newbmp As New Bitmap(nfilename)
newbmp.Save(filename)'将新文件改名为原来的文件
newbmp.Dispose()
IO.File.Delete(nfilename)'删除新文件
Debug.WriteLine("end")
End Sub
|
图片2-处理后效果
这段代码的功能是用蓝色替换图片中的红色,因为这只是一篇技术探讨文章,所以对于在图片中加入英文字功能和以时间为条件用不同颜色替换红色的时间功能做了保留。如果读者有兴趣,可以自己研究,这两项功能并不复杂。 |