📄 cehook.dpr.svn-base
字号:
inc(found);
if found=number then
begin
blockwrite(Addressfile,pointer(foundaddress)^,4*number,actualwrite);
blockwrite(Memoryfile,pointer(foundvalue2)^,number*2,actualwrite);
found:=0;
end;
end;
asm
inc wordp;
end;
end;
end;
except
end;
postmessage(scansettings^.formscanningHandle,ESSetProgressbarPos,position,0);
end;
blockwrite(Addressfile,pointer(foundaddress)^,4*found,actualwrite);
blockwrite(Memoryfile,pointer(foundvalue2)^,found*2,actualwrite);
result:=filesize(Memoryfile) div 2;
end;
if scantype=valuebetween then
begin
for i:=0 to memoryregions do
begin
if not scansettings^.scanning then break;
inc(position,memoryregion[i].MemorySize);
wordp:=pointer(memoryregion[i].BaseAddress);
try
if scansettings^.FastScan then
begin
for j:=0 to (memoryregion[i].MemorySize div 2)-1 do
begin
if (wordp^>=wordvalue) and (wordp^<=wordvalue2) then
begin
foundaddress[found]:=dword(wordp);
foundvalue2[found]:=wordp^;
inc(found);
if found=number then
begin
blockwrite(Addressfile,pointer(foundaddress)^,4*number,actualwrite);
blockwrite(Memoryfile,pointer(foundvalue2)^,number*2,actualwrite);
found:=0;
end;
end;
inc(wordp);
end;
end
else
begin
for j:=0 to memoryregion[i].MemorySize-2 do
begin
if (wordp^>=wordvalue) and (wordp^<=wordvalue2) then
begin
foundaddress[found]:=dword(wordp);
foundvalue2[found]:=wordp^;
inc(found);
if found=number then
begin
blockwrite(Addressfile,pointer(foundaddress)^,4*number,actualwrite);
blockwrite(Memoryfile,pointer(foundvalue2)^,number*2,actualwrite);
found:=0;
end;
end;
asm
inc wordp;
end;
end;
end;
except
end;
postmessage(scansettings^.formscanningHandle,ESSetProgressbarPos,position,0);
end;
blockwrite(Addressfile,pointer(foundaddress)^,4*found,actualwrite);
blockwrite(Memoryfile,pointer(foundvalue2)^,found*2,actualwrite);
result:=filesize(Memoryfile) div 2;
end;
end else
if vartype=2 then //dword
begin
//no need to bother with fastscan routines
setlength(foundvalue3,number);
if scantype=exact_value then
begin
for i:=0 to memoryregions do
begin
if not scansettings^.scanning then break;
inc(position,memoryregion[i].MemorySize);
dwordp:=pointer(memoryregion[i].BaseAddress);
try
if scansettings^.FastScan then
begin
for j:=0 to (memoryregion[i].MemorySize div 4)-1 do
begin
if dwordp^=dwordvalue then
begin
foundaddress[found]:=dword(dwordp);
inc(found);
if found=number then
begin
if not FoundIsFilled then
begin
for k:=0 to number-1 do foundvalue3[k]:=dwordvalue;
FoundIsFilled:=true;
end;
blockwrite(Addressfile,pointer(foundaddress)^,4*number,actualwrite);
blockwrite(Memoryfile,pointer(foundvalue3)^,number*4,actualwrite);
found:=0;
end;
end;
inc(dwordp);
end;
end
else
begin
for j:=0 to memoryregion[i].MemorySize-4 do
begin
if dwordp^=dwordvalue then
begin
foundaddress[found]:=dword(dwordp);
inc(found);
if found=number then
begin
if not FoundIsFilled then
begin
for k:=0 to number-1 do foundvalue3[k]:=dwordvalue;
FoundIsFilled:=true;
end;
blockwrite(Addressfile,pointer(foundaddress)^,4*number,actualwrite);
blockwrite(Memoryfile,pointer(foundvalue3)^,number*4,actualwrite);
found:=0;
end;
end;
asm
inc dwordp;
end;
end;
end;
except
end;
postmessage(scansettings^.formscanningHandle,ESSetProgressbarPos,position,0);
end;
if not foundisfilled then
for i:=0 to found-1 do foundvalue3[i]:=dwordvalue;
blockwrite(Addressfile,pointer(foundaddress)^,4*found,actualwrite);
blockwrite(Memoryfile,pointer(foundvalue3)^,found*4,actualwrite);
result:=filesize(Memoryfile) div 4;
end;
if scantype=BiggerThan then
begin
for i:=0 to memoryregions do
begin
if not scansettings^.scanning then break;
inc(position,memoryregion[i].MemorySize);
dwordp:=pointer(memoryregion[i].BaseAddress);
try
if scansettings^.FastScan then
begin
for j:=0 to (memoryregion[i].MemorySize-1 div 4)-1 do
begin
if dwordp^>dwordvalue then
begin
foundaddress[found]:=dword(dwordp);
foundvalue3[found]:=dwordp^;
inc(found);
if found=number then
begin
blockwrite(Addressfile,pointer(foundaddress)^,4*number,actualwrite);
blockwrite(Memoryfile,pointer(foundvalue3)^,number*4,actualwrite);
found:=0;
end;
end;
inc(dwordp);
end;
end
else
begin
for j:=0 to memoryregion[i].MemorySize-4 do
begin
if dwordp^>dwordvalue then
begin
foundaddress[found]:=dword(dwordp);
foundvalue3[found]:=dwordp^;
inc(found);
if found=number then
begin
blockwrite(Addressfile,pointer(foundaddress)^,4*number,actualwrite);
blockwrite(Memoryfile,pointer(foundvalue3)^,number*4,actualwrite);
found:=0;
end;
end;
asm
inc dwordp;
end;
end;
end;
except
end;
postmessage(scansettings^.formscanningHandle,ESSetProgressbarPos,position,0);
end;
blockwrite(Addressfile,pointer(foundaddress)^,4*found,actualwrite);
blockwrite(Memoryfile,pointer(foundvalue3)^,found*4,actualwrite);
result:=filesize(Memoryfile) div 4;
end;
if scantype=SmallerThan then
begin
for i:=0 to memoryregions do
begin
if not scansettings^.scanning then break;
inc(position,memoryregion[i].MemorySize);
dwordp:=pointer(memoryregion[i].BaseAddress);
try
if scansettings^.FastScan then
begin
for j:=0 to (memoryregion[i].MemorySize div 4)-1 do
begin
if dwordp^<dwordvalue then
begin
foundaddress[found]:=dword(wordp);
foundvalue3[found]:=dwordp^;
inc(found);
if found=number then
begin
blockwrite(Addressfile,pointer(foundaddress)^,4*number,actualwrite);
blockwrite(Memoryfile,pointer(foundvalue3)^,number*4,actualwrite);
found:=0;
end;
end;
inc(dwordp);
end;
end
else
begin
for j:=0 to memoryregion[i].MemorySize-4 do
begin
if dwordp^<dwordvalue then
begin
foundaddress[found]:=dword(dwordp);
foundvalue3[found]:=dwordp^;
inc(found);
if found=number then
begin
blockwrite(Addressfile,pointer(foundaddress)^,4*number,actualwrite);
blockwrite(Memoryfile,pointer(foundvalue3)^,number*4,actualwrite);
found:=0;
end;
end;
asm
inc dwordp;
end;
end;
end;
except
end;
postmessage(scansettings^.formscanningHandle,ESSetProgressbarPos,position,0);
end;
blockwrite(Addressfile,pointer(foundaddress)^,4*found,actualwrite);
blockwrite(Memoryfile,pointer(foundvalue3)^,found*4,actualwrite);
result:=filesize(Memoryfile) div 4;
end;
if scantype=ValueBetween then
begin
for i:=0 to memoryregions do
begin
if not scansettings^.scanning then break;
inc(position,memoryregion[i].MemorySize);
dwordp:=pointer(memoryregion[i].BaseAddress);
try
if scansettings^.FastScan then
begin
for j:=0 to (memoryregion[i].MemorySize div 4)-1 do
begin
if (dwordp^>=dwordvalue) and (dwordp^<=dwordvalue2) then
begin
foundaddress[found]:=dword(wordp);
foundvalue3[found]:=dwordp^;
inc(found);
if found=number then
begin
blockwrite(Addressfile,pointer(foundaddress)^,4*number,actualwrite);
blockwrite(Memoryfile,pointer(foundvalue3)^,number*4,actualwrite);
found:=0;
end;
end;
inc(dwordp);
end;
end
else
begin
for j:=0 to memoryregion[i].MemorySize-4 do
begin
if (dwordp^>=dwordvalue) and (dwordp^<=dwordvalue2) then
begin
foundaddress[found]:=dword(dwordp);
foundvalue3[found]:=dwordp^;
inc(found);
if found=number then
begin
blockwrite(Addressfile,pointer(foundaddress)^,4*number,actualwrite);
blockwrite(Memoryfile,pointer(foundvalue3)^,number*4,actualwrite);
found:=0;
end;
end;
asm
inc dwordp;
end;
end;
end;
except
end;
postmessage(scansettings^.formscanningHandle,ESSetProgressbarPos,position,0);
end;
blockwrite(Addressfile,pointer(foundaddress)^,4*found,actualwrite);
blockwrite(Memoryfile,pointer(foundvalue3)^,found*4,actualwrite);
result:=filesize(Memoryfile) div 4;
end;
end else
if vartype=3 then //float
begin
//no need to bother with fastscan routines
setlength(foundvalue4,number);
if scantype=exact_value then
begin
for i:=0 to memoryregions do
begin
if not scansettings^.scanning then break;
inc(position,memoryregion[i].MemorySize);
singlep:=pointer(memoryregion[i].BaseAddress);
if decim=0 then helpsingle3:=1 else
helpsingle3:=1/((decim)*10); //the range for extremerounded scans
try
if scansettings^.FastScan then
begin
for j:=0 to (memoryregion[i].MemorySize div 4)-1 do
begin
check:=(not (isnan(singlep^) or isinfinite(singlep^)));
if check then
case roundingtype of
rounded:
begin
helpsingle:=RoundTo(SingleP^,-decim);
check:=(helpsingle=SingleValue);
end;
extremerounded:
begin
//if a scan for 1 it scans for 0<x<2
//if a scan for 1.0 it scans for 9.9<x<1.10
check:=((SingleP^<(singlevalue+helpsingle3)) and (SingleP^>(singlevalue-helpsingle3)) );
end;
truncated:
begin
//if a scan for 1 it scans for 1>=x<2
//if a scan for 1.0 it scans for 1.0>=x<1.10
check:=((SingleP^<(singlevalue+helpsingle3)) and (singlep^>=singlevalue));
end;
else check:=false;
end;
if check then
begin
foundaddress[found]:=dword(singlep);
foundvalue4[found]:=singlep^;
inc(found);
if found=number then
begin
blockwrite(Addressfile,pointer(foundaddress)^,4*number,actualwrite);
blockwrite(Memoryfile,pointer(foundvalue4)^,number*4,actualwrite);
found:=0;
end;
end;
inc(singlep);
end;
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -