资源描述:
《病毒木马程序的感染和捆绑方式.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、最近在研究病毒木马程序的感染和捆绑方式。 发现文件困绑有多种方式 我只和大家探讨两种方式 一种是附加的方式,一种是内嵌式 第一种方式 就是将木马程序附加在别的程序头部 也就是说 运行的目标程序是木马 然后木马程序将原程序解压出来再运行 听说熊猫烧香的程序用的就是这种方法 这种方式有缺点也有优点 优点是: 可以捆绑任何程序 缺点是: 运行时需要把目标程序给拷贝出来然后 然后再运行真正的程序 这种方法容易使人察觉出来被捆绑,并且如果目标程序大的话运行速度会比较慢 实现方法:(Demo下载) 如果不改变图标,实现方法是非常简单的。 用文件流的方式 把
2、目标程序写在木马程序后面 这里提供修改图标的实现方法,就是替换目标程序里的所有资源,如果资源文件被压缩,捆绑将出错 (目前网络上有很多获取图标的方法,比如用ExtractIcon获取目标程序中的图标 这种方法读取出来的图标 和原程序的图标是有差别的。 就是颜色会浅一点, 让人一看就知道程序可能被捆绑过了) 请勿用于病毒传播,这里只贴出核心代码 【全文】 functionAlign(Size,AlignBase:integer):Integer; begin ifSizemodAlignBase<>0then Result:=(Trunc(Size/
3、AlignBase)+1)*AlignBase else Result:=Size; end; procedureGetRsrcStream(AFHandle:THandle;varAStream:PStream;varASectionHeader:TImageSectionHeader); var I:integer; DosHeader:TImageDosHeader; NTHeader:TImageNtHeaders;{NtHeader} dRead:DWORD; begin SetFilePointer(AFHandle,0,nil,F
4、ILE_BEGIN); ReadFile(AFHandle,DosHeader,SizeOf(TImageDosHeader),dRead,nil); //非PE退出 ifnotDosHeader.e_magic=IMAGE_DOS_SIGNATUREthenExit; SetFilePointer(AFHandle,DosHeader._lfanew,nil,FILE_BEGIN); ReadFile(AFHandle,NTHeader,SizeOf(TImageNTHeaders),dRead,nil); //非PE退出 ifNTHeader.Si
5、gnature<>IMAGE_NT_SIGNATUREthenExit; SetFilePointer(AFHandle,DosHeader._lfanew+SizeOf(TImageNtHeaders),nil,FILE_BEGIN); fori:=0toNTHeader.FileHeader.NumberOfSections-1do begin ReadFile(AFHandle,ASectionHeader,SizeOf(TImageSectionHeader),dRead,nil); ifASectionHeader.VirtualAddress=
6、NTHeader.OptionalHeader.DataDirectory[2].VirtualAddressthen begin SetFilePointer(AFHandle,ASectionHeader.PointerToRawData,nil,FILE_BEGIN); SetLength(AStream,ASectionHeader.SizeOfRawData); ReadFile(AFHandle,AStream[0],ASectionHeader.SizeOfRawData,dRead,nil); Exit; end; end; end;
7、 functionStripHighBit(L:Longint):DWORD; begin Result:=Land$7FFFFFFF; end; functionHighBitSet(L:Longint):Boolean; begin Result:=(Land$80000000)<>0; end; functionIsDirectory(ResourceDirectoryEntryImageResourceDirectoryEntry;BaseEntry:DWORD):boolean; begin Result:=HighBitSet(