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

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

?? normalunpacker.asm

?? pe exe packer (must use vc2005 to compile)
?? ASM
字號:
; Author:   Brandon LaCombe
; Date:     February 3, 2006
; License:  Public Domain
.386
.model flat, stdcall
option casemap:none

include     windows.inc
include     LoaderStructs.inc

VIRTUALALLOC typedef proto lpAddress:dword, dwSize:dword, flAllocationType:dword, flProtect:dword
VIRTUALFREE  typedef proto lpAddress:dword, dwSize:dword, dwFreeType:dword
UNPACK       typedef proto pbDest:dword, pbSrc:dword, pbWorkMem:dword

.code
ExportNormalUnpacker proc pdwNormalUnpackerSize:dword
    mov eax, pdwNormalUnpackerSize
    .if eax
        mov dword ptr[eax], normal_unpacker_end - normal_unpacker_start
    .endif
    mov eax, normal_unpacker_start
    ret
ExportNormalUnpacker endp

ExportNormalDefilter proc pdwNormalDefilterSize:dword
    mov eax, pdwNormalDefilterSize
    .if eax
        mov dword ptr[eax], normal_defilter_end - normal_defilter_start
    .endif
    mov eax, normal_defilter_start
    ret
ExportNormalDefilter endp

; In normal packing mode, each section is compressed in place. To decompress
; the section we have to decompress to a buffer and then copy the uncompressed
; section back from that buffer.
normal_unpacker_start:

    invoke VIRTUALALLOC ptr[(KERNEL_IAT ptr[ebp]).pVirtualAlloc], ecx, (LOADER_STRUCT ptr[ebx]).dwTotalMemSize, MEM_COMMIT, PAGE_READWRITE
    mov esi, eax                                                       ; esi = decompression buffer
    add eax, (LOADER_STRUCT ptr[ebx]).dwUnpackMemSize                  ; eax = work memory
    mov edx, (LOADER_STRUCT ptr[ebx]).pSectionData                     ; edx = section data pointer
    jmp normal_unpacker_loop_enter                                     ; enter unpacking loop
@@: add edi, (LOADER_STRUCT ptr[ebx]).dwImageBase                      ; edi = compressed section pointer
    pushad                                                             ; Unpack doesn't preserve regs
    invoke UNPACK ptr[(LOADER_STRUCT ptr[ebx]).pUnpack], esi, edi, eax ; decompress section to unpack mem
    shr eax, 2                                                         ; convert decompressed size to size in dwords
    mov [esp + 18h], eax                                               ; ecx = uncompressed size (in dwords)
    popad                                                              ; restore registers
    push esi                                                           ; movs corrupts esi
    rep movsd                                                          ; copy uncompressed section back
    pop esi                                                            ; restore esi
    add edx, 4                                                         ; point to next compressed section rva
normal_unpacker_loop_enter:
    mov edi, [edx]                                                     ; load compressed section rva
    test edi, edi                                                      ; test for terminating entry
    jnz @B                                                             ; process section if needed
    invoke VIRTUALFREE ptr[(KERNEL_IAT ptr[ebp]).pVirtualFree], esi, edi, MEM_RELEASE

normal_unpacker_end:


normal_defilter_start:

    invoke VIRTUALALLOC ptr[(KERNEL_IAT ptr[ebp]).pVirtualAlloc], ecx, (LOADER_STRUCT ptr[ebx]).dwTotalMemSize, MEM_COMMIT, PAGE_READWRITE
    mov esi, eax                                                       ; esi = decompression buffer
    add eax, (LOADER_STRUCT ptr[ebx]).dwUnpackMemSize                  ; eax = work memory
    mov edx, (LOADER_STRUCT ptr[ebx]).pSectionData                     ; edx = section data pointer
    jmp normal_defilter_loop_enter                                     ; enter unpacking loop
@@: add edi, (LOADER_STRUCT ptr[ebx]).dwImageBase                      ; edi = compressed section pointer
    pushad                                                             ; Unpack doesn't preserve regs
    invoke UNPACK ptr[(LOADER_STRUCT ptr[ebx]).pUnpack], esi, edi, eax ; decompress section to unpack mem
    mov [esp + 18h], eax                                               ; ecx = uncompressed size (in dwords)
    popad                                                              ; restore registers

        ; defilter code
        pushad
        sub edi, (LOADER_STRUCT ptr[ebx]).dwImageBase ; compute section rva
        mov ebx, edi                                  ; ebx = section rva
        mov ebp, esi                                  ; ebp = section pointer
        lea edi, [ecx - 5]                            ; edi = section size - 5
        xor esi, esi                                  ; esi = index variable
        push -4                                       ; push -4 to load it into edx
        pop edx                                       ; edx = last suspected call index
        jmp defilter_loop_enter                       ; enter the defilter loop
    defilter_loop_start:
        mov al, [ebp+esi]                             ; al = current byte
        and al, 0FEh                                  ; and al so that E8 and E9 compute to E8
        cmp al, 0E8h                                  ; if al is E8 or E9
        je defilter_suspected_call                    ; examine the suspected call
        mov eax, [ebp+esi]                            ; ax = current word
        and ah, 0F0h                                  ; and out the low nibble of the first byte
        cmp ax, 0800Fh                                ; is this a jxx instruction?
        jne defilter_continue_loop                    ; if not, continue the defilter loop
        inc esi                                       ; jxx is a word sized opcode so point to the end of it
    defilter_suspected_call:
        mov eax, esi                                  ; eax = index variable
        sub eax, edx                                  ; eax = current index - last index
        xor al, 3                                     ; eax = (current index - last index) ^ 3
        mov edx, esi                                  ; last index = current index
        mov cl, [ebp+esi+4]                           ; cl = highest byte of absolute call data
        inc ecx                                       ; manipulate cl so that only values
        shr cl, 1                                     ; of 0xFF and 0x00 make cl zero
        jnz defilter_continue_loop                    ; if cl is not 0xFF or 0x00, continue the defilter loop
        push edi                                      ; backup edi (which is the maximum index allowed)
        inc esi                                       ; skip past call opcode and point to absolute call data
        mov edi, [ebp+esi]                            ; edi = relative call data
    defilter_recode_loop:
        sub edi, ebx                                  ; edi = absolute call data - (section rva + index + 1)
        sub edi, esi                                  ; or in other words, convert absolute data to relative data
        mov [ebp+esi], edi                            ; store relative call data
        cmp eax, 3                                    ; only continue if the delta between the last
        ja defilter_exit_recode_loop                  ; two suspected calls is less than or equal to 3
        mov ecx, eax                                  ; ecx = delta
        shl ecx, 3                                    ; ecx = delta * 8
        mov edi, 0FFh                                 ; edi = 0xFF
        shl edi, cl                                   ; edi = 0xFF << (delta * 8)
        xor edi, [ebp+esi]                            ; edi = relative call data ^ 0xFF << (delta * 8)
        lea ecx, [esi + eax]                          ; ecx = address of conflicting byte
        mov cl, byte ptr[ebp+ecx]                     ; cl = conflicting byte
        inc ecx                                       ; manipulate cl so that only values
        shr cl, 1                                     ; of 0xFF and 0x00 make cl zero
        jz defilter_recode_loop                       ; if the recode loop loops, it is because the
    defilter_exit_recode_loop:                        ; conflicting byte was 0xFF or 0x00
        add esi, 3                                    ; point to last byte of call data
        mov cl, [ebp+esi]                             ; load in the highest byte of the call data
        shr cl, 1                                     ; test the low bit of the highest byte
        setnc ch                                      ; if the low bit is set, then set cl to 0xFF
        dec ch                                        ; otherwise set cl to 0x00
        mov byte ptr[ebp+esi], ch                     ; store the 0xFF or 0x00 high byte
        pop edi                                       ; restore edi (maximum index allowed)
    defilter_continue_loop:
        inc esi                                       ; increase index by 1
    defilter_loop_enter:
        cmp esi, edi                                  ; is index variable in range?
        jl defilter_loop_start                        ; if so, process next byte
        popad

    push esi                                                           ; movs corrupts esi
    shr ecx, 2                                                         ; convert decompressed size to size in dwords
    rep movsd                                                          ; copy uncompressed section back
    pop esi                                                            ; restore esi
    add edx, 4                                                         ; point to next compressed section rva
normal_defilter_loop_enter:
    mov edi, [edx]                                                     ; load compressed section rva
    test edi, edi                                                      ; test for terminating entry
    jnz @B                                                             ; process section if needed
    invoke VIRTUALFREE ptr[(KERNEL_IAT ptr[ebp]).pVirtualFree], esi, edi, MEM_RELEASE

normal_defilter_end:

end

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲一二三区不卡| 国产精品欧美综合在线| 色成人在线视频| 成人短视频下载| 处破女av一区二区| www.成人在线| 波多野结衣91| 91极品视觉盛宴| 欧美精品三级日韩久久| 在线观看三级视频欧美| 色先锋aa成人| 欧美日韩免费在线视频| 欧美高清视频www夜色资源网| 欧美色综合网站| 欧美精品三级日韩久久| 欧美不卡一区二区| 欧美国产国产综合| 亚洲另类中文字| 日韩激情一二三区| 国产乱码精品一品二品| av一二三不卡影片| 欧美日韩中文字幕精品| 欧美精品一区二区精品网| 久久免费视频一区| 亚洲色图20p| 日本不卡123| 成人精品一区二区三区中文字幕| 99视频精品全部免费在线| 欧美另类一区二区三区| 久久久久久久久久久久久久久99| 国产精品色婷婷| 日韩国产在线观看一区| 国产精品一级片在线观看| 91美女片黄在线观看91美女| 欧美一区二区三区视频免费播放 | 日韩国产欧美在线播放| 韩国av一区二区三区四区| 91猫先生在线| 久久午夜国产精品| 亚洲成人高清在线| 成人免费看黄yyy456| 6080日韩午夜伦伦午夜伦| 久久精品人人做| 午夜精品一区二区三区三上悠亚| 国产精品18久久久久久久网站| 欧美自拍偷拍一区| 国产欧美一区二区精品忘忧草| 亚洲一区二区综合| 成人免费看片app下载| 欧美zozozo| 午夜影院在线观看欧美| 一本一道久久a久久精品| xvideos.蜜桃一区二区| 婷婷国产在线综合| 91丝袜美女网| 中文字幕av免费专区久久| 全国精品久久少妇| 欧美日韩一二三| 一区二区三区在线视频免费观看| 国产成人亚洲精品青草天美| 日韩午夜激情视频| 午夜精品成人在线| 欧美亚洲动漫精品| 中文字幕欧美一| 成人精品亚洲人成在线| 欧美激情在线看| 久久www免费人成看片高清| 欧美二区三区91| 亚洲.国产.中文慕字在线| 色婷婷久久综合| 自拍偷拍亚洲综合| 91丨porny丨国产入口| 国产精品网站在线| jlzzjlzz国产精品久久| 国产精品久久久久久久蜜臀| 福利91精品一区二区三区| 国产欧美一区二区精品性| 国产精品亚洲一区二区三区在线| 337p日本欧洲亚洲大胆色噜噜| 青娱乐精品视频| 日韩色在线观看| 精品在线免费观看| 精品粉嫩aⅴ一区二区三区四区| 麻豆成人免费电影| 精品久久久网站| 国产成人av一区| 中文字幕一区二区三区四区不卡 | 国产精品美女视频| 国产精品白丝av| 2021国产精品久久精品| 国产真实精品久久二三区| 欧美一区二区在线播放| 国产精一区二区三区| 日韩免费视频一区二区| 国产精品 欧美精品| 26uuu成人网一区二区三区| 久久se这里有精品| 国产视频视频一区| 色吧成人激情小说| 亚洲成人在线网站| 91精品国产综合久久久久久久| 日韩av在线播放中文字幕| 日韩一区二区三区视频在线| 老司机精品视频一区二区三区| 色综合天天综合色综合av| 亚洲三级小视频| 91福利精品视频| 亚洲mv在线观看| 欧美电影免费观看完整版| 国产99精品在线观看| 精品噜噜噜噜久久久久久久久试看 | 国产在线精品国自产拍免费| 久久久亚洲午夜电影| www.成人在线| 天天射综合影视| 国产午夜精品一区二区| 在线日韩国产精品| 亚洲大尺度视频在线观看| 欧美日韩欧美一区二区| 精品一区二区三区影院在线午夜| 精品久久人人做人人爰| 91丨porny丨国产| 七七婷婷婷婷精品国产| 国产精品私人影院| 欧美日韩免费不卡视频一区二区三区| 亚洲一区在线看| 精品成人在线观看| av在线不卡电影| 午夜精品久久久久久久蜜桃app| 欧美一区二区三区四区视频| 国产精品自拍在线| 亚洲电影你懂得| 欧美国产综合色视频| 欧美日韩黄色一区二区| 国产成人精品三级| 日韩精品免费专区| 亚洲另类春色国产| 久久久久成人黄色影片| 欧美午夜在线观看| 国产成人自拍在线| 免费观看在线色综合| 中文字幕日韩av资源站| 精品国产免费人成电影在线观看四季 | 男人的天堂久久精品| 国产精品久久久久久久久动漫| 欧美日韩一区高清| 99re热视频这里只精品| 亚洲电影激情视频网站| 一区二区三区日韩精品| 国产欧美日韩在线视频| 精品日韩一区二区三区免费视频| 色婷婷精品久久二区二区蜜臀av| 国产露脸91国语对白| 免费人成在线不卡| 蜜臀久久久久久久| 亚洲制服丝袜av| 亚洲免费观看高清| 一区在线中文字幕| 国产精品乱码人人做人人爱| 欧美一区二区在线观看| 欧美日韩一区二区三区高清| 成人91在线观看| 成人国产电影网| 国产a久久麻豆| 国产suv精品一区二区三区| 国产老女人精品毛片久久| 精品一区二区影视| 国产在线视视频有精品| 免费观看日韩av| 韩国一区二区在线观看| 日韩精品91亚洲二区在线观看 | 午夜精品福利一区二区三区av| 久久久久国产精品麻豆| 国产精品久久久久一区| 国产亚洲一区字幕| 久久久久久久久97黄色工厂| 精品少妇一区二区三区| 精品欧美一区二区三区精品久久| 欧美亚洲综合色| 99久久婷婷国产| 99久久777色| 欧美视频一区二区| 欧美精品aⅴ在线视频| 日韩一级高清毛片| 欧美成人精品福利| 亚洲欧洲av在线| 一区二区三区色| 爽好多水快深点欧美视频| 麻豆精品在线视频| 国产原创一区二区| 成人av在线影院| 91福利视频在线| 5566中文字幕一区二区电影| 91精品欧美久久久久久动漫| 精品久久久影院| 国产精品视频九色porn| 一区二区三区久久| 天天色天天操综合| 成人中文字幕在线| 欧美日韩国产区一|