如何在exe文件中查找字符串? 我想在exe文件中查找是否有某个特定字符串,不知用什么方式? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用MemoryStream或FileStream可不可以?楼主试一下。(我没实践过) 用FileStream读到一个设定为长字符串的块中,再扫描即可。 算了,做个好人,贴段以前的代码给你!以前写的一个清除病毒的代码。const ERROR = -1; CLEAROK = 0; function CleanVirus ( SourceFileName, TargetFileName : String; TargetStr : String; StartPos : Integer; Sender : TObject ) : Integer;var TmpFileStream : TFileStream; SaveStream : TMemoryStream; FileSize : Integer; CmpStr : Array [0..20] of char; i : Integer;begin try TmpFileStream := TFileStream.Create( SourceFileName, fmOpenRead or fmShareExclusive ); SaveStream := TMemoryStream.Create; try FileSize := TmpFileStream.Size; TmpFileStream.Seek( 0, soFromBeginning ); TmpFileStream.ReadBuffer( CmpStr, 20 ); //这里可以用StrComp代替的,当时咋没用呢?faint... for i := 0 to length (TargetStr) do begin if CmpStr[i] <> TargetStr [i+1] then begin Result := NOTFOUND; exit; end; end; TmpFileStream.Seek ( StartPos, soFromBeginning ); //$69E7 SaveStream.CopyFrom ( TmpFileStream, FileSize - StartPos ); SaveStream.Seek ( 0, soFromBeginning ); SaveStream.ReadBuffer( CmpStr, 10 ); //Search PE Flag if (CmpStr [0] <> 'M') or (CmpStr[1] <> 'Z') then begin Result := CLEARFAIL; exit; end; SaveStream.SaveToFile ( TargetFileName ); Finally TmpFileStream.Free; SaveStream.Free; end; except Result := ERROR; exit; end; Result := CLEAROK;end; delphi2007 activeForm 软件销售问题 我用Delphi开发的小游戏 如何选择打印机? 有哪位大侠知道在Delphi中通过ODBC连接SYBASE数据库的方法? 求助:何为PHP ●●●●哪有可打印的李维的《Delphl5.x ADO/MTS/CoM+高级程序设计篇》●●●● 求助!请帮忙! 怎样使报表能够打印出表格来,D6的打包程序应该怎样使用,和D5的大不一样啊!! 急!急!急!請問各路大蝦小蝦,在單元格中用什么函數可以實現字體顏色隨不同條件變化,同時背景也變化 带符号和不带符号的二进制是如何转换成十进制的? 各位大侠,帮帮帮忙.
const
ERROR = -1;
CLEAROK = 0;
function CleanVirus ( SourceFileName, TargetFileName : String; TargetStr : String;
StartPos : Integer; Sender : TObject ) : Integer;
var
TmpFileStream : TFileStream;
SaveStream : TMemoryStream;
FileSize : Integer;
CmpStr : Array [0..20] of char;
i : Integer;
begin
try
TmpFileStream := TFileStream.Create( SourceFileName, fmOpenRead or fmShareExclusive );
SaveStream := TMemoryStream.Create; try
FileSize := TmpFileStream.Size;
TmpFileStream.Seek( 0, soFromBeginning ); TmpFileStream.ReadBuffer( CmpStr, 20 ); //这里可以用StrComp代替的,当时咋没用呢?faint...
for i := 0 to length (TargetStr) do
begin
if CmpStr[i] <> TargetStr [i+1] then
begin
Result := NOTFOUND;
exit;
end;
end; TmpFileStream.Seek ( StartPos, soFromBeginning ); //$69E7 SaveStream.CopyFrom ( TmpFileStream, FileSize - StartPos );
SaveStream.Seek ( 0, soFromBeginning );
SaveStream.ReadBuffer( CmpStr, 10 ); //Search PE Flag
if (CmpStr [0] <> 'M') or (CmpStr[1] <> 'Z') then
begin
Result := CLEARFAIL;
exit;
end;
SaveStream.SaveToFile ( TargetFileName );
Finally
TmpFileStream.Free;
SaveStream.Free;
end;
except
Result := ERROR;
exit;
end; Result := CLEAROK;
end;