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

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

?? mylock.asm

?? PE文件教程,很有用的
?? ASM
?? 第 1 頁 / 共 3 頁
字號:

        call    encrypt_objects                 ; encrypt each section

        add     esi, 28h                        ; next section in table

        loop    Next_Section


        

;Find_Import_Section:
;
;       cmp	[esi],'adi.'			;查找Import塊
;	jnz	Next_Section
;	or      [esi.SFlags], 80000000h		;改塊屬性為可寫
;	jmp	Find_OK				;跳出查找
;Next_Section:
;        add     esi, 28h                        ;下個塊
;
;        loop    Find_Import_Section
; ----- 添加新塊 ----------------------------------
Find_OK:
        mov     esi, offset Section_Table            ;塊表開始處
        movzx   eax, [PE_Header.NumberOfSections]    ;塊表個數(shù)
        mov     ecx, 28h                        ;塊表大小
        mul     ecx                             ;塊表個數(shù)*塊表大小
        add     esi, eax                        ;指向塊表末
        inc     [PE_Header.NumberOfSections]         ;增加一個塊
        mov     edi, offset new_section		;指向新的塊表
        xchg    edi, esi

; ----- 按塊對齊要求對齊新塊/獲得新塊的RVA地址 -----------------------------------------------

        mov     eax, [edi-28h+8]                 
        add     eax, [edi-28h+0Ch]		;VirtualAddress加上VirtualSize=最后一塊末的RVA(未對齊)
        mov     ecx, [PE_Header.SectionAlignment]	;塊對齊大小
        cdq
        div     ecx
        test    edx, edx			
        jz      section_aligned			;對齊否(有無小數(shù)部分)
        inc     eax				;小數(shù)為近為一

section_aligned:

        mul     ecx				;對齊為FileAlignment(文件塊對齊大小)的整被數(shù)
        mov     virt_addr, eax			;既是外殼程序的RVA地址
        mov     Checker_RVA, eax

; ----- 按文件對齊要求對齊 -------------------------------------

        mov     eax, Checker_Len		;外殼程序長度
        mov     ecx, [PE_Header.FileAlignment]	;文件塊對齊大小
        div     ecx				;相除
        test    edx, edx
        jz      file_aligned			;對齊否?(有無小數(shù)部分)
        inc     eax				;小數(shù)為近為一

file_aligned:

        mul     ecx				;對齊為FileAlignment(文件塊對齊大小)的整被數(shù)
        mov     [raw_size], eax			;保存

; ----- 對齊以獲得VirtualSize --------------------------------------

        mov     eax, Checker_Len		;外殼程序長度
        mov     ecx, [PE_Header.SectionAlignment]	;塊對齊大小
        div     ecx				;相除
        test    edx, edx			
        jz      sect_aligned			;對齊否?(有無小數(shù)部分)
        inc     eax				;小數(shù)為近為一

sect_aligned:

        mul     ecx				;對齊為SectionAlignment(塊對齊大小)的整被數(shù)
        mov     virt_size, eax			;保存

; ----- 獲得指向最末的文件指針 -------------------------------------------------

        mov     eax, [edi-28h+14h]		;最后一個塊的物理偏移(PointerToRawData)
        add     eax, [edi-28h+10h]		;最后一個塊的物理大小(SizeOfRawData)
        mov     raw_offset, eax			;相加后為指向最后一塊末

; ----- 獲得Import表的RVA地址和大小 ----------------------------------

        mov     eax, My_Import-Checker_Start	;外殼程序Import表相對外殼程序的偏移
        add     eax, Checker_RVA                           ;加上外殼程序基址RVA地址=外殼程序Import表RVA地址
        mov     [PE_Header.DataDirectory.(8).VirtualAddress], eax    ; data dir中的Import(輸入塊)的RVA地址
        mov     [PE_Header.DataDirectory.(8).Size], Import_Len           ; Import 的大小

        add     dword ptr My_Import, eax                ;都加上Import表RVA地址
        add     dword ptr k32_dll, eax                  ;
        add     dword ptr k32_first, eax                ;
        add     dword ptr func_k32, eax                 ;
        add     dword ptr [func_k32+4], eax             ;
        add     dword ptr [func_k32+8], eax             ;
        add     dword ptr [func_k32+0Ch], eax           ;

	add     dword ptr [func_k32+10h], eax           ;
	add     dword ptr [func_k32+14h], eax           ;

        add     dword ptr getproc, eax                  ;
        add     dword ptr getmod, eax                   ;
        add     dword ptr loadlib, eax                  ;

        add     dword ptr CreateF, eax                  ;
        add     dword ptr DeviceIo, eax                 ;

        add     dword ptr u32_original, eax             ;
        add     dword ptr u32_dll, eax                  ;
        add     dword ptr u32_first, eax                ;
        add     dword ptr func_u32, eax                 ;
        add     dword ptr msgbox, eax                   ;
        add     dword ptr Error_Cap_addr, eax                 ;
        add     dword ptr Error_Msg_addr, eax                 ;

; ----- 調(diào)整并對齊總長 ----------------------------------------

        mov     eax, virt_size				;外殼程序?qū)R后的大小
        add     eax, [PE_Header.SizeOfImage]			;加上原來的文件各部分總長
        mov     ecx, [PE_Header.SectionAlignment]		;塊對齊大小
        div     ecx
        test    edx, edx				;是否對齊(有無小數(shù)部分)
        jz      image_aligned
        inc     eax					;小數(shù)為近為一

image_aligned:

        mul     ecx					;對齊為SectionAlignment(塊對齊大小)的整被數(shù)
        mov     [PE_Header.SizeOfImage], eax			;寫回去

; ----- 添加新塊表 ----------------------------------------

        mov     ecx, 28h				;添上把新的塊表項
        rep     movsb

; ----- 保存老的程序入口RVA地址 ---------------------------------------------

        mov     eax, dword ptr virt_addr		;外殼程序RVA地址
        mov     ebx, dword ptr [PE_Header.AddressOfEntryPoint]	;原來的程序入口
        mov     [PE_Header.AddressOfEntryPoint], eax			;保存新的程序入口
        mov     Old_Entry_RVA, ebx				;保存老的

; ----- 把新的PE文件頭寫入 -------------------------------------------------------

        push    FILE_BEGIN					;由文件開始處
        push    0
        push    PE_Header_Addr					;PE文件頭的文件指針
        push    File_Handle					;文件句柄
        call    SetFilePointer					;設(shè)置文件讀寫指針

        push    0
        push    offset bytes_read
        push    Header_Len					;文件頭長度
        push    offset PE_Header File_Handle				;內(nèi)存中的文件頭偏移 和 文件句柄
        call    WriteFile					;寫到文件中

; ----- 寫入外殼程序------------------------------------------------------

        push    FILE_BEGIN					;由文件開始處
        push    0
        push    raw_offset					;指向最后一塊末
        push    File_Handle					;文件句柄
        call    SetFilePointer					;設(shè)置文件讀寫指針

        push    0
        push    offset bytes_read
        push    raw_size					;對齊了的外殼程序大小
        push    offset Checker_Start				;指向外殼程序開始處
        push    File_Handle					;文件句柄
        call    WriteFile					;寫到文件中

	jmp     OK					;到關(guān)閉文件

; ----- 顯示錯誤 --------------------------------------------------

no_space:					;沒有足夠未用空間裝入新塊表

       	push	0
	push	offset	Error_Msg
	push	offset	Error_nospace
	push	0
        call    MessageBoxA                     ; 調(diào)用User32!MessageBoxA生成對話框

        jmp     Close_File

not_valid_pe:					;不是有效的PE文件

	push	0
	push	offset	Error_Msg
	push	offset	Error_nope
	push	0
        call    MessageBoxA                     ; 調(diào)用User32!MessageBoxA生成對話框
        jmp     Close_File

Format_err:
	push	0
	push	offset 	Error_Msg
	push	offset 	Error_Format
	push	0
	call    MessageBoxA                     ; 調(diào)用User32!MessageBoxA生成對話框
	jmp     Close_File

Write_err:
	push	0
	push	offset 	Error_Msg
	push	offset 	Error_Write
	push	0
	call    MessageBoxA                     ; 調(diào)用User32!MessageBoxA生成對話框
	jmp     Close_File

file_not_found:					; 文件沒找到

	push	0
	push	offset	Error_Msg
	push	offset	Error_nofile
	push	0
        call    MessageBoxA                     ; 調(diào)用User32!MessageBoxA生成對話框
        jmp     quit

; ----- 搞定了,關(guān)掉文件 -------------------------------------------------

OK:
	push	0
	push	offset	OK_Cap
	push	offset	OK_Msg
	push	0
        call    MessageBoxA                     ; 調(diào)用User32!MessageBoxA生成對話框
Close_File:

        push    File_Handle                     ;文件句柄
        call    CloseHandle			;關(guān)閉文件

quit:

        push    0				
        call    ExitProcess			;退出程序

;------------------------------------------------------------------------------
  show_some_info proc
;------------------------------------------------------------------------------

        mov     eax, [PE_Header.SizeOfCode]		;獲得SizeOfCode
        push    eax eax
        movzx   eax, [PE_Header.NumberOfSections]	;獲得NumberOfSections
        push    eax offset num_secs
	mov	P_Text,offset Text_Buff			;字符輸出緩沖區(qū)地址
        call    My_Printf				;調(diào)用printf

        mov     eax, [PE_Header.SizeOfInitializedData]
        push    eax eax
        mov     eax, [PE_Header.ImageBase]
        push    eax offset img_base
        call    My_Printf

        mov     eax, [PE_Header.SizeOfUninitializedData]
        push    eax eax
        mov     eax, [PE_Header.AddressOfEntryPoint]
        push    eax offset ep_rva
        call    My_Printf

        mov     eax, [PE_Header.SectionAlignment]
        push    eax eax
        mov     eax, [PE_Header.SizeOfImage]
        push    eax offset size_img
        call    My_Printf

        mov     eax, [PE_Header.FileAlignment]
        push    eax eax
        mov     eax, [PE_Header.SizeOfHeaders]
        push    eax offset size_head
        call    My_Printf

        movzx   eax, [PE_Header.MinorLinkerVersion]
        push    eax
        movzx   eax, [PE_Header.MajorLinkerVersion]
        push    eax
        mov     eax, [PE_Header.BaseOfCode]
        push    eax offset base_code
        call    My_Printf

        movzx   eax, [PE_Header.DllCharacteristics]
        push    eax eax
        mov     eax, [PE_Header.BaseOfData]
        push    eax  offset base_data
        call    My_Printf

	push    0
	push	offset Welcome				;對話框標題
	push    offset Text_Buff			;指向要輸出的字符串
	push	0
        call    MessageBoxA				;生成對話框,顯示文件信息

        ret
endp
extrn   _wsprintfA:proc
My_Printf     proc    
        pop	ebx				;保存返回地址
	push    P_Text				;輸出緩沖區(qū)
        call    _wsprintfA			;調(diào)用Printf
        add     esp, 4*5			;恢復(fù)棧指針
	add	eax,P_Text			;修改輸出緩沖區(qū)地址
	mov	P_Text,	eax
	push	ebx				;返回
	ret
endp

extrn   VirtualAlloc:proc
extrn   VirtualFree:proc
encrypt_objects proc

        pusha
	cmp	[esi], 'rsr.'			; 跳過 .rsrc塊
	jz      no_encrypt
	cmp     [esi], 'adr.'                   ; 跳過 .rdata塊
        jz      no_encrypt
        cmp     [esi], 'ade.'                   ; 跳過 .edata塊
        jz      no_encrypt
        cmp     [esi], 'ler.'                   ; 跳過 .reloc塊
        jz      no_encrypt
        cmp     [esi], 'slt.'                   ; 跳過 .tls塊
        jz      no_encrypt
        cmp     dword ptr [esi.SizeOfRawData], 0	;塊大小是否是零
        jz      no_encrypt

        push    PAGE_READWRITE
        push    MEM_COMMIT
        push    [esi.SizeOfRawData]
        push    0
        call    VirtualAlloc				;分配一塊內(nèi)存

        mov     mem_offset, eax				;返回的是內(nèi)存首址

; ----- 讀入該塊數(shù)據(jù) -----------------------------------------------

        push    0
        push    0
        push    [esi.PointerToRawData]			; 該塊的物理位置
        push    File_Handle				; 文件句柄
	call    SetFilePointer				; 設(shè)置文件指針

        push    0
        push    offset bytes_read
        push    [esi.SizeOfRawData]			; 該塊大小
        push    mem_offset				; 在已分配的內(nèi)存處
        push    File_Handle				; 文件句柄
        call    ReadFile				; 讀入

; ----- 保存該塊的RVA地址和大小 -------------------------------------------

        mov     edi, [curr_disp]
        mov     eax, [esi+SVirtualAddress]		; 獲得該塊的RVA地址
        mov     [ENsection_RVA+edi], eax                   ; 保存該塊的RVA地址

        mov     eax, [esi.SizeOfRawData]		; 獲得該塊的大小
        mov     [ENsection_Len+edi], eax                  ; 保存該塊的大小

        mov     edi, mem_offset                         ; 已分配的內(nèi)存首址
        mov     ecx, [esi.SizeOfRawData]                ; 塊大小(要加密的字節(jié)數(shù))
        mov     al, key                                 ; 加密密匙

encrypt:

        sub     byte ptr [edi], al                      ; 加密
        inc     al
        inc     edi                                     ; 繼續(xù)
        loop    encrypt

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99在线精品一区二区三区| 成人免费毛片片v| 欧美日韩亚洲综合一区 | 国产精品欧美一区喷水| eeuss影院一区二区三区| 亚洲精品日韩一| 这里只有精品电影| 国产乱码精品一区二区三区av| 中文字幕精品综合| 在线一区二区视频| 青青草成人在线观看| 久久一区二区三区国产精品| 成人精品国产一区二区4080| 亚洲国产综合在线| 久久婷婷久久一区二区三区| 色综合咪咪久久| 秋霞电影网一区二区| 国产欧美综合色| 91精品1区2区| 国产麻豆精品在线| 亚洲一区二区欧美日韩| 成人一区二区三区| 亚洲精品精品亚洲| 在线播放中文一区| 国产综合色视频| 亚洲美女少妇撒尿| 日韩精品最新网址| av不卡免费电影| 美洲天堂一区二卡三卡四卡视频 | 精品国产亚洲一区二区三区在线观看| 国产精品中文字幕欧美| 亚洲精品成人悠悠色影视| 欧美电影免费观看高清完整版在线观看| 成人午夜又粗又硬又大| 日韩不卡一区二区三区| 亚洲丝袜自拍清纯另类| 欧美成人精品高清在线播放 | 国产成人日日夜夜| 三级欧美在线一区| 亚洲日本va午夜在线影院| 欧美成人性战久久| 欧美性欧美巨大黑白大战| 国产传媒一区在线| 欧美96一区二区免费视频| 亚洲日穴在线视频| 国产午夜亚洲精品理论片色戒| 欧美午夜一区二区三区免费大片| 懂色av一区二区三区免费看| 蜜桃av一区二区三区电影| 亚洲成人av一区| 亚洲人成人一区二区在线观看| 久久亚洲二区三区| 日韩色视频在线观看| 欧美日韩国产综合一区二区三区| 99久久99精品久久久久久 | 国产成人av电影在线播放| 免费美女久久99| 丝袜美腿一区二区三区| 亚洲国产aⅴ成人精品无吗| 亚洲麻豆国产自偷在线| 中文字幕欧美激情一区| 国产亚洲一区二区三区| 久久亚区不卡日本| 26uuu国产一区二区三区| 欧美草草影院在线视频| 欧美一区午夜精品| 91精品国产综合久久久久久漫画 | 久久精品国产**网站演员| 天天亚洲美女在线视频| 亚洲成人福利片| 亚洲成人tv网| 香蕉久久夜色精品国产使用方法| 亚洲一二三四久久| 亚洲成人免费观看| 免费在线观看成人| 久久精品99国产国产精| 久久精品国产第一区二区三区| 欧美a一区二区| 久久不见久久见中文字幕免费| 精品一区二区在线免费观看| 国产真实乱偷精品视频免| 国产精品乡下勾搭老头1| 成人深夜在线观看| 色综合天天性综合| 色婷婷综合在线| 欧美色综合网站| 91.麻豆视频| 久久一区二区视频| 国产精品美女久久久久久久网站| 国产精品不卡视频| 亚洲一区二区三区中文字幕| 亚洲成人黄色影院| 国模套图日韩精品一区二区| 国产成人亚洲综合a∨婷婷图片 | 在线看日本不卡| 欧美老女人在线| 久久久久久久综合色一本| 国产精品网曝门| 亚洲影视在线播放| 蜜桃在线一区二区三区| 国产乱码精品一区二区三区av| k8久久久一区二区三区 | 日韩一级在线观看| 国产欧美日韩三区| 亚洲成人一区在线| 国模一区二区三区白浆| 色婷婷av一区二区三区大白胸 | 国产精品一区二区果冻传媒| 99久久伊人精品| 56国语精品自产拍在线观看| 国产午夜精品一区二区三区四区| 亚洲男人的天堂网| 美女诱惑一区二区| 一本到一区二区三区| 欧美大胆一级视频| 中文字幕日韩精品一区| 理论电影国产精品| 色婷婷av一区| 久久精品视频在线看| 亚洲丶国产丶欧美一区二区三区| 国产精品一二一区| 欧美日韩国产不卡| 国产精品久久久久久久久搜平片| 日韩—二三区免费观看av| 91丝袜美女网| 久久影院午夜片一区| 亚洲成a天堂v人片| 99vv1com这只有精品| 久久影视一区二区| 奇米影视一区二区三区小说| 99精品久久只有精品| 精品国产乱码久久久久久浪潮| 亚洲与欧洲av电影| 91在线一区二区| 国产色综合一区| 久久草av在线| 91麻豆精品国产无毒不卡在线观看 | 91在线视频官网| 精品蜜桃在线看| 日本系列欧美系列| 欧美性猛片aaaaaaa做受| 国产精品毛片大码女人| 国产精品自拍一区| 精品久久久三级丝袜| 日韩在线一二三区| 欧美日韩一卡二卡三卡| 亚洲男人的天堂在线观看| caoporn国产精品| 国产精品欧美久久久久无广告 | 精品国产一区a| 美女网站在线免费欧美精品| 欧美日韩另类国产亚洲欧美一级| 一区二区三区小说| 日本福利一区二区| 亚洲黄色性网站| 色综合久久综合网欧美综合网 | 91精品国产综合久久小美女| 亚州成人在线电影| 欧美日韩一区二区三区免费看 | 亚洲人吸女人奶水| 91丨porny丨国产入口| 国产精品欧美久久久久一区二区| 粉嫩av一区二区三区粉嫩 | 亚洲欧美视频在线观看视频| www.日韩大片| 亚洲久本草在线中文字幕| 91一区二区三区在线播放| 亚洲欧美日本韩国| 欧美性极品少妇| 亚洲h在线观看| 制服丝袜成人动漫| 蜜臀av性久久久久av蜜臀妖精| 日韩女优制服丝袜电影| 精品在线观看免费| 国产欧美一区二区三区沐欲| 97久久精品人人做人人爽50路| 一区二区三区在线免费播放| 678五月天丁香亚洲综合网| 久久99蜜桃精品| 日本一区二区久久| 色狠狠综合天天综合综合| 亚洲线精品一区二区三区八戒| 欧美高清视频一二三区| 久久精品99国产精品日本| 国产欧美在线观看一区| 91天堂素人约啪| 奇米色777欧美一区二区| 国产女人aaa级久久久级| 色综合久久中文字幕综合网| 日韩在线a电影| 中文在线资源观看网站视频免费不卡| 成人avav影音| 香蕉加勒比综合久久 | 国产精品毛片大码女人| 欧美性视频一区二区三区| 老司机精品视频在线| 亚洲欧洲日韩综合一区二区| 欧美色视频一区| 国产99久久久国产精品潘金| 亚洲乱码日产精品bd|