日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

U盘病毒及其相关资源的分析(patch shell32.dll)

發布時間:2023/12/15 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 U盘病毒及其相关资源的分析(patch shell32.dll) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Kevins的天空 http://rootsec.cn

Security is life

http://blog.csdn.net/iiprogram/article/details/2205018

U盤病毒讓很多人很郁悶,不過說起來也沒什么高深的東西
autorun.inf在shell32.dll里面,×××的工具里面的一項強力廢除就是patch了shell32.dll,部分代碼如下:
void KillSFC()
{
? ? WCHAR shell32file[100]={0};
? ?
? ? GetSystemDirectoryW(shell32file,sizeof(shell32file));
? ? lstrcatW(shell32file,L"//shell32.dll");
? ? HMODULE hLib = LoadLibrary("SFC.DLL");
? ? SfcFileException *se = (SfcFileException (__stdcall *))GetProcAddress(hLib,(LPCSTR)5);
? ?
? ? se(0,shell32file,-1);
? ? FreeLibrary(hLib);
? ? return;
}

bool MapCacheFileToPatch()
{
? ? CHAR Mapfile[50]={0},anotherfile[50]={0};
? ? HANDLE hfile,hmapfile;
? ? //LARGE_INTEGER filesize;
? ? PVOID Mappingbegin=NULL;
? ? WCHAR* ppt;
? ?
? ? GetSystemDirectory(Mapfile,sizeof(Mapfile));

? ? lstrcat(Mapfile,"//dllcache//shell32.dll");
? ? SetFileAttributes(Mapfile,FILE_ATTRIBUTE_NORMAL);
? ? hfile=CreateFile(Mapfile, GENERIC_READ|GENERIC_WRITE,
? ? ? ? FILE_SHARE_READ|FILE_SHARE_WRITE,0,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);
? ? if (hfile==INVALID_HANDLE_VALUE)
? ? {
? ? ? ? ZeroMemory(Mapfile,sizeof(Mapfile));
? ? ? ? GetSystemDirectory(Mapfile,sizeof(Mapfile));
? ? ? ? lstrcpy(anotherfile,Mapfile);
? ? ? ? lstrcat(anotherfile,"//shell32.tmp");

? ? ? ? lstrcat(Mapfile,"//shell32.dll");
? ? ? ? CopyFile(Mapfile,anotherfile,FALSE);
? ? ? ? SetFileAttributes(anotherfile,FILE_ATTRIBUTE_NORMAL);

? ? ? ? hfile=CreateFile(anotherfile, GENERIC_READ|GENERIC_WRITE,
? ? ? ? FILE_SHARE_READ|FILE_SHARE_WRITE,0,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);

? ? ? ? if (hfile==INVALID_HANDLE_VALUE)
? ? ? ? {
? ? ? ? ? ? return FALSE;
? ? ? ? }

? ? }
? ?
? ? //GetFileSizeEx(hfile,&filesize);
? ? hmapfile=CreateFileMapping(hfile,0,PAGE_READWRITE,0,0,0);
? ? if (hmapfile==INVALID_HANDLE_VALUE)
? ? {
? ? ? ? CloseHandle(hfile);
? ? ? ? return FALSE;
? ? }
? ?
? ? Mappingbegin=MapViewOfFile(hmapfile,FILE_MAP_READ|FILE_MAP_WRITE,0,0,0);
? ? if (!Mappingbegin)
? ? {
? ? ? ? CloseHandle(hfile);
? ? ? ? CloseHandle(hmapfile);
? ? ? ? return false;
? ? }
? ? else
? ? {? ?
? ? ? ? for (long i=0;i<0x300000;i++)//0x300000可以
? ? ? ? {
? ? ? ? ? ? __try
? ? ? ? ? ? {
? ? ? ? ? ? ? ? ppt=(WCHAR *)Mappingbegin+i;
? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? if( wcscmp(ppt,L"AutoRun.x86")==0 && wcscmp(ppt+12,L"AutoRun.inf")==0 )//XP/2003
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? //AfxMessageBox("45patch~~~~");
? ? ? ? ? ? ? ? ? ? ZeroMemory((PCHAR)ppt,45);
? ? ? ? ? ? ? ? ? ? *ppt=(WCHAR)L"NUL";
? ? ? ? ? ? ? ? ? ? *(ppt+12)=(WCHAR)L"NUL";
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? else if? ( wcscmp(ppt,L"autorun.inf")==0 || wcscmp(ppt,L"AutoRun.inf")==0)//前面XP后面2000
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? //AfxMessageBox("21patch~~~~");
? ? ? ? ? ? ? ? ? ? ZeroMemory((PCHAR)ppt,21);
? ? ? ? ? ? ? ? ? ? *ppt=(WCHAR)L"NUL";
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? ? ? __except(EXCEPTION_EXECUTE_HANDLER){}
? ? ? ? }
? ? ? ? //暴力搜索內存patch %system%/dllcacahe/shell32.dll
? ? ? ? UnmapViewOfFile(Mappingbegin);
? ? ? ? CloseHandle(hfile);
? ? ? ? CloseHandle(hmapfile);
? ? ? ? return TRUE;
? ? }
? ?
}

void DelShell32()
{? ?
? ? CHAR Oldfile[50]={0},Newfile[50]={0},CopyName[50]={0};
? ?
? ? GetSystemDirectory(Oldfile,sizeof(Oldfile));
? ?
? ? lstrcpy(Newfile,Oldfile);
? ? lstrcat(Oldfile,"//shell32.dll");
? ? lstrcat(Newfile,"//shell32.bak");
? ?
? ? SetFileAttributes(Newfile,FILE_ATTRIBUTE_NORMAL);
? ? MoveFileEx(Oldfile,Newfile,MOVEFILE_REPLACE_EXISTING);//shell32.dll->shell32.bak
? ? MoveFileEx(Newfile,NULL,MOVEFILE_DELAY_UNTIL_REBOOT);//shell32.bak->NULL
? ?
? ? GetSystemDirectory(CopyName,sizeof(CopyName));
? ? lstrcat(CopyName,"//dllcache//shell32.dll");
? ? if (MoveFileEx(CopyName,Oldfile,MOVEFILE_REPLACE_EXISTING))
? ? {
? ? ? ? //dllcache move to shell32.dll
? ? ? ? CopyFile(Oldfile,CopyName,FALSE);//shell32.dll move to dllcache
? ? }
? ?
? ? else
? ? {
? ? ? ? GetSystemDirectory(CopyName,sizeof(CopyName));
? ? ? ? lstrcat(CopyName,"//shell32.tmp");
? ? ? ? MoveFileEx(CopyName,Oldfile,MOVEFILE_REPLACE_EXISTING);
? ? }
? ? return;
}


當然,現代病毒還會結合U盤插入,自動感染的方式,基本原理就是當閃存插入時會給每一個窗口發送WM_DEVICECHANGE消息,其中wParam里是Event,包含了當前的事件。我們注冊一個窗口類,Wndproc里面檢測如下:
void OnDeviceChange(HWND hWnd,WPARAM wParam,LPARAM lParam)
{
? PDEV_BROADCAST_HDR lpdb = (PDEV_BROADCAST_HDR)lParam;
? switch(wParam)
? {
? ? case DBT_DEVICEARRIVAL:
? ? ? if (lpdb -> dbch_devicetype == DBT_DEVTYP_VOLUME)
? ? ? {
? ? ? ? ? PDEV_BROADCAST_VOLUME lpdbv = (PDEV_BROADCAST_VOLUME)lpdb;
? ? ? ? ? ULONG unitmask=lpdbv ->dbcv_unitmask;
? ? ? ? ? for (int i = 0; i < 26; ++i)
? ? ? ? ? {
? ? ? ? ? ? ? ? //取得設備的盤號
? ? ? ? ? ? ? ? if (unitmask & 0x1)
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? //這里我們加入你要做的事
? ? ? ? ? ? ? ? //其中i+'A'表示當前的盤符
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? unitmask = unitmask >> 1;
? ? ? ? ? }
? ? ? }
? }

? return;
}
MADN中定義的事件如下:

? ? ? ? DBT_CONFIGCHANGECANCELED? ? ? A request to change the current configuration (dock or undock) has been canceled.
? ? ? ? DBT_CONFIGCHANGED? ? ? The current configuration has changed, due to a dock or undock.
? ? ? ? DBT_DEVICEARRIVAL? ? ? A device has been inserted and is now available.
? ? ? ? DBT_DEVICEQUERYREMOVE? ? ? Permission is requested to remove a device. Any application can deny this request and cancel the removal.
? ? ? ? DBT_DEVICEQUERYREMOVEFAILED? ? ? A request to remove a device has been canceled.
? ? ? ? DBT_DEVICEREMOVECOMPLETE? ? ? A device has been removed.
? ? ? ? DBT_DEVICEREMOVEPENDING? ? ? A device is about to be removed. Cannot be denied.
? ? ? ? DBT_DEVICETYPESPECIFIC? ? ? A device-specific event has occurred.
? ? ? ? DBT_QUERYCHANGECONFIG? ? ? Permission is requested to change the current configuration (dock or undock).

從底層的角度,U盤插入,設備總線會收到pnp消息,在其間檢測/Driver/USBSTOR驅動對象,過濾即可禁止USB
NTSTATUS
FilterDispatchPnp (
? ? IN PDEVICE_OBJECT DeviceObject,
? ? IN PIRP Irp
? ? )
{
? ? PDEVICE_EXTENSION? ? ? ? ? deviceExtension;
? ? PIO_STACK_LOCATION? ? ? ? irpStack;
? ? NTSTATUS? ? ? ? ? ? ? ? ? ? ? ? ? ? status;
? ? KEVENT? ? ? ? ? ? ? ? ? ? ? ? ? ? ? event;

? ? PAGED_CODE();

? ? deviceExtension = (PDEVICE_EXTENSION) DeviceObject->DeviceExtension;
? ? irpStack = IoGetCurrentIrpStackLocation(Irp);

? ? status = IoAcquireRemoveLock (&deviceExtension->RemoveLock, Irp);
? ? if (!NT_SUCCESS (status)) {
? ? ? ? Irp->IoStatus.Status = status;
? ? ? ? IoCompleteRequest (Irp, IO_NO_INCREMENT);
? ? ? ? return status;
? ? }
? ?

? ? switch (irpStack->MinorFunction) {
? ? ? ? case IRP_MN_QUERY_DEVICE_RELATIONS:

? ? ? ? //SET_NEW_PNP_STATE(deviceExtension, RemovePending);
? ? ? ? //AttachedDevice (Upper) 81aac0f8 /Driver/USBSTOR
? ? ? ? //通過檢測Upper Filters來檢測是不是Mass Storage,是就STATUS_ACCESS_DENIED
? ? ? ? //DbgPrint("Device is %x/t",DeviceObject);
? ? ? ? //DbgPrint("Upper Filter is %ws/n",
? ? ? ? ? ? ? ? ? ? //DeviceObject->AttachedDevice->DriverObject->DriverName.Buffer);

? ? ? ? if (_wcsnicmp(DeviceObject->AttachedDevice->DriverObject->DriverName.Buffer,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? L"//Driver//USBSTOR",15)==0)
? ? ? ? {
? ? ? ? ? ? DbgPrint("Cmp Result is %d/n",
? ? ? ? ? ? ? ? _wcsnicmp(DeviceObject->AttachedDevice->DriverObject->DriverName.Buffer,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? L"//Driver//USBSTOR",15));
? ? ? ? ? ? status = STATUS_ACCESS_DENIED;
? ? ? ? ? ? break;
? ? ? ? }
? ? ? ? status = STATUS_SUCCESS;
? ? ? ? break;
? ? //以下省略
}

轉載于:https://blog.51cto.com/4225964/818139

總結

以上是生活随笔為你收集整理的U盘病毒及其相关资源的分析(patch shell32.dll)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 成人午夜精品福利免费 | 国产男女无遮挡猛进猛出 | 91全免费| 黄色av网站免费在线观看 | 黄色91免费| 黄色在线不卡 | 国产黑丝一区二区 | 成人综合激情网 | 久久久久网站 | 午夜激情免费 | 狠狠干香蕉 | 久久久精品国产 | av激情小说| 日韩久久久久久久久 | 美女脱光衣服让男人捅 | 污网在线看| 91精产国品一二三区在线观看 | 素人一区二区三区 | 亚洲瘦老头同性xxxxx | 巨乳动漫美女 | 欧美性猛交ⅹxx乱大交 | 麻豆传谋在线观看免费mv | 一本高清dvd在线播放 | 黄色天堂av | 久久久免费在线观看 | 青娱网电信一区电信二区电信三区 | 久久大奶 | 黄色美女视频网站 | 色综合婷婷 | 欧美三日本三级少妇三级99观看视频 | 色哟哟在线观看 | 日色网站| 欧美草b| 久久在线视频 | 国产国产乱老熟女视频网站97 | 67194少妇在线观看 | 五月激情六月丁香 | 日韩精选在线观看 | 国产黄色大片网站 | 国产性生活一级片 | 亚洲av无码一区二区乱孑伦as | 国产aⅴ激情无码久久久无码 | 在线免费看黄网站 | 国产巨乳在线观看 | 福利精品 | 黄色片久久久 | 成人久久18免费网站图片 | 欧美成综合 | 日本超碰在线 | 亚洲黄色中文字幕 | 欧美黄页在线观看 | 久草热线 | 高h视频在线免费观看 | 久久美 | 黄片毛片在线 | 久久一线| 亚洲综合久久婷婷 | 亚洲欧美综合一区二区 | 四季av一区二区夜夜嗨 | 亚洲私人网站 | youjizz日韩| 亚洲精品国产精品乱码不卡√香蕉 | 国产精品有码 | 亚洲av日韩av高潮潮喷无码 | 天天爽天天插 | 懂色av一区二区三区四区 | 在线网站av | 黄色一级大片在线免费看国产一 | 日韩在线观看av | 国产成人无码一区二区在线播放 | 国产精品99在线观看 | 自拍偷拍第五页 | 亚洲第一天堂影院 | 岛国片在线播放 | 在线视频黄 | 污视频免费在线观看 | 欧美激情一区二区三区四区 | 国产成人tv| 一本一道波多野结衣一区二区 | 欧美色婷婷 | 国产日韩久久久 | 国产中文| 四虎影视免费 | 琪琪久久| 2022av视频| 超碰666| 精品久久久中文字幕人妻 | 国产影音先锋 | 成人免费一区二区三区 | 欧美a√| 91视频免费| 欧美黄色性 | 免费看黄在线看 | 翔田千里一区二区 | 在线观看理论片 | 激情五月婷婷网 | 亚洲蜜臀av乱码久久精品蜜桃 | 国产老头老太作爱视频 | 椎名由奈av一区二区三区 |