看流星社区

 找回密码
 注册账号
查看: 2626|回复: 2

[Delphi] delphi 中 特征码查找速度慢的问题

[复制链接]

该用户从未签到

发表于 2011-3-31 09:28:43 | 显示全部楼层 |阅读模式
现在的函数是在论坛找到的  
不过速度很慢 搜半天才出来
范围总是在  $00400000-$25000000变动。
这个问题困扰我几天了,实在是没办法,出来问问。
那位高手可以搞个速度快点的函数来用用 万分感谢
function ReadMemory(dwAddress, nSize: DWORD): DWORD;
var
  BytesRead: DWORD;
  R1: Byte;
  R2: WORD;  
  R4: DWORD;
begin
  case nSize of
    1 : begin
          ReadProcessMemory(ProcessID, Pointer(dwAddress), @R1, nSize, BytesRead);
          Result := R1;
        end;
    2 : begin
          ReadProcessMemory(ProcessID, Pointer(dwAddress), @R2, nSize, BytesRead);
          Result := R2;
        end;
    4 : begin
          ReadProcessMemory(ProcessID, Pointer(dwAddress), @R4, nSize, BytesRead);
          Result := R4;
        end;
  end;
end;

function ScanAddr: DWORD;
const
  StartAddr = $00400000;
  StopAddr =  $25000000;
var  
  Addr: DWORD;
begin
  Result := 0;  
  Addr := StartAddr;  
  if StartAddr <= StopAddr then Exit;
  while Addr >= StopAddr do
  begin
    if (ReadMemory(Addr    ,1)  = $00) and
      (ReadMemory(Addr  +1,1)  = $40)



      then

    begin
      Result := Addr;
      Break;
    end
    else
      dec(Addr);
  end;
end;

该用户从未签到

发表于 2011-3-31 09:29:05 | 显示全部楼层
StartAddr = $00400000;  
StopAddr =  $25000000;  
扫的内存地址太多了
比如你需要的地址是00551144
你可以StartAddr =  $00500000;  
结束用StopAddr =  $00600000;  
这样他扫的范围就小了 速度就可以提高了

该用户从未签到

发表于 2011-3-31 09:29:15 | 显示全部楼层
一个函数是不可能在这么大的范围内进行转移的,建议减小查找量
点击按钮快速添加回复内容: 支持 高兴 激动 给力 加油 苦寻 生气 回帖 路过 感恩
您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

小黑屋|手机版|Archiver|看流星社区 |网站地图

GMT+8, 2024-4-20 10:07

Powered by Kanliuxing X3.4

© 2010-2019 kanliuxing.com

快速回复 返回顶部 返回列表