【杏彩平台注册网址】知己知彼 了解VB编写病毒

来源:http://www.youlihuishou.com 作者:杏彩平台注册网址-操作系统 人气:115 发布时间:2020-01-06
摘要:来源: 网易博客 相信电脑界的每个人都痛恨计算机病毒,她给我们带来了很多麻烦和损失,可你知道编写病毒的方法和过程吗?在此我仅以VB编写为例,揭开她的面纱。 因为手机短消息

来源: 网易博客

  相信电脑界的每个人都痛恨计算机病毒,她给我们带来了很多麻烦和损失,可你知道编写病毒的方法和过程吗?在此我仅以VB编写为例,揭开她的面纱。

因为手机短消息的发送是以PDU串的形式发送出去的,中文字符以Unicode码来表示,所以在发送中文短消息之前必须首先将中文字符转换为Unicode码,下面的函数将实现这个功能。这个函数主要应用到VB自带的一个格式转换函数:ChrW()将中文转换为Unicode码。 

    这是一个API函数应用的实例程序,在vb6中新建一个工程,在Form1中建立两个command button,然后将下面的代码复制到Form1中,然后就请大家运行测试一下吧!

用VB编写病毒需要考虑到如下几点:

  Public Function chg(rmsg As String) As String
  Dim tep As String
  Dim temp As String
  Dim i As Integer
  Dim b As Integer
  tep = rmsg
  i = Len(tep)
  b = i / 4
  If i = b * 4 Then
   b = b - 1
   tep = Left(tep, b * 4)
  Else
   tep = Left(tep, b * 4)
  End If
  chg = ""
  For i = 1 To b
杏彩平台注册网址,   temp = "&H" & Mid(tep, (i - 1) * 4 + 1, 4)
   chg = chg & ChrW(CInt(Val(temp)))
  Next i
  End Function 

 

感染主机

...

Option Explicit

首先染毒文件运行后先要判断主机是否以感染病毒,也就是判断病毒主体文件是否存在,如果不存在则将病毒主体拷贝到指定位置(如:

 

将病毒文件拷贝到c:windowssystem),可用filecopy语句实现;如果病毒已感染主机则结束判断。

'读内存进程
Private Declare Function ReadProcessMemory Lib "kernel32" (ByVal hProcess As Long, lpBaseAddress As Any, lpBuffer As Any, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Long
'打开进程
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long

例如,判断C:windowssystemKiller.exe是否存在,如果有则退出判断,如果没有则证明本机未感染病毒,立即拷入病毒文件。

'获得窗体句柄
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
'取得进程标识符
Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwProcessId As Long) As Long
'写入进程内存
Private Declare Function WriteProcessMemory Lib "kernel32" (ByVal hProcess As Long, ByVal lpBaseAddress As Any, ByVal lpBuffer As Any, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Long

病毒源文件名为game.exe。

'得到窗体Rect
Private Declare Function GetClientRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As Long
'刷新窗体Rect
Private Declare Function InvalidateRect& Lib "user32" (ByVal hwnd As Long, lpRect As RECT, ByVal bErase As Long)
' 关闭进程句柄
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long

声明部分:

Private Const PROCESS_ALL_ACCESS = &H1F0FFF  '最高权限

""定义 FileExists% 函数 public success% Function FileExists%(fname$) On Local Error Resume Next Dim ff% ff% = FreeFile Open fname$ For Input As ff% If Err Then FileExists% = False Else FileExists% = True End If Close ff% End Function

Private Const xAddr As Long = &H10056A8 '横坐标地址
Private Const yAddr As Long = &H10056AC '纵坐标地址
Private Const qiAddr As Long = &H8E '选中小棋标志
Private Const mapAddr As Long = &H1005361 '数据起始地址
'0x1005340+0x20+0x01

代码部分:

Private Type RECT
   Left As Long
   Top As Long
   Right As Long
   Bottom As Long
End Type

""判断文件是否存在 success% = FileExists%("C:windowssystemKiller.exe") If success% = False Then ""病毒不存在则拷贝病毒到计算机 FileCopy "game.exe", "C:windowssystemKiller.exe" ... ""修改注册表,将其加入RUN中。(省略若干代码) End If

Private Sub Command1_Click()
     Call Shell("winmine.exe", vbNormalFocus)
End Sub

开机启动病毒

Private Sub Command2_Click()
    Dim hProcess As Long
    Dim wHwnd As Long
    Dim pid As Long
    wHwnd = FindWindow(vbNullString, "扫雷")  '获得窗体句柄
    Call GetWindowThreadProcessId(wHwnd, pid)       '取得进程标识符
    hProcess = OpenProcess(PROCESS_ALL_ACCESS, False, pid)  ' 取得进程句柄 'PROCESS_ALL_ACCESS最高权限
    If hProcess = 0 Then
       MsgBox "未找到游戏!", vbOKOnly + vbInformation
       Exit Sub
    End If
    Dim mx As Long
    Dim my As Long
    Dim mn As Long
    Dim bytMap() As Byte
    Call ReadProcessMemory(hProcess, ByVal xAddr, my, 4, 0&)
    Call ReadProcessMemory(hProcess, ByVal yAddr, mx, 4, 0&)
    If my = 0 Or mx = 0 Then Exit Sub

在病毒感染主机的同时,将自身加入注册表的开机运行中,这与向主机拷入病毒是同时进行的,主机感染后不再修改注册表。可通过编程

    ReDim bytMap(my * 32 - 1) As Byte
    Call ReadProcessMemory(hProcess, ByVal mapAddr, bytMap(0), my * 32, 0&)
    Dim I As Long, J As Long
   
    For I = 0 To my - 1
        For J = 0 To mx - 1
            If bytMap(I * 32 + J) = &H8F Then
                '标出雷区
                Call WriteProcessMemory(hProcess, ByVal (mapAddr + I * 32 + J), ByVal VarPtr(CLng(qiAddr)), 1, 0&)
            Else
'                Print "0";
            End If
        Next
        Print
    Next
   
    Dim tR As RECT
    Call GetClientRect(wHwnd, tR)          '得到扫雷窗口
    Call InvalidateRect(wHwnd, tR, True)   '刷新扫雷窗口
    Call CloseHandle(hProcess)          ' 关闭进程句柄
End Sub

和调用API函数对WIN注册表进行操作来实现,这样在每次启动计算机时病毒自动启动。

任务管理器

在任务管理器列表中禁止病毒本身被列出,可以通过编程来实现。

用代码 App.TaskVisible = false 就可以实现;再有就是通过调用Win API函数来实现,这里就不作介绍了。

病毒发作条件

可用Day(Date)来判断今天是几号,再与确定好的日期作比较,相同则表现出病毒主体的破坏性,否则不发作。也可用Time、Date或其它方

法作为病毒发作条件的判断。

例:

if day(date)=16 then ""16是发作日期,取值为1-31的整数 ... ... ""kill ******* 当日期相符时运行的破坏性代码(格式化、删除指定的文件类型、发送数据包 杜塞网路等,省略若干代码) end if

病毒的破坏性

编写的此部分代码决定了病毒威力的强弱。轻的可以使系统资源迅速减少直至死机(需要你懂得一点蠕虫的原理),也就是实现开机即死的

效果;也可以加入硬盘炸弹代码、系统后台删文件等。重的可以使计算机彻底瘫痪。

病毒的繁殖

原理很简单,就是将其自身与其它可执行文件合并,也就是两个文件并成一个文件。也可通过E-Mail传播,方法是病毒读取被感染主机的

邮件列表,将带有病毒附件的E-Mail发给列表中的每一个人(这需要你懂得VB网络编程)。

读完本文章相信您已对病毒的编写思路有了初步的了解,如果你是个VB爱好者,你已经可以编写一个很简单的病毒了,但你要是精通VB的话,请不要有编写后传播她的想法,因为传播她造成很大的影响将改变你的命运。

本文由杏彩彩票app发布于杏彩平台注册网址-操作系统,转载请注明出处:【杏彩平台注册网址】知己知彼 了解VB编写病毒

关键词:

上一篇:没有了

下一篇:【转】C++ map的基本操作和使用

最火资讯