📄 cehook.dpr.svn-base
字号:
if scantype=valueBetween then
begin
if vartype=0 then
begin
if extra then val('$'+scanvalue2,bytevalue2,i)
else val(scanvalue2,bytevalue2,i);
if i>0 then raise Exception.Create(scanvalue2+' is not a valid byte notation');
end;
if vartype=1 then
begin
if extra then val('$'+scanvalue2,wordvalue2,i)
else val(scanvalue2,wordvalue2,i);
if i>0 then raise Exception.Create(scanvalue2+' is not an valid 2-byte notation');
end;
if vartype=2 then
begin
if extra then val('$'+scanvalue2,dwordvalue2,i)
else val(scanvalue2,dwordvalue2,i);
if i>0 then raise Exception.Create(scanvalue2+' is not an valid 4-byte notation');
end;
if vartype=3 then //doesnt have the hexadecimal option
begin
val(scanvalue2,singlevalue2,i);
if i>0 then
if scanvalue2[i]=',' then scanvalue2[i]:='.';
val(scanvalue2,singlevalue2,i);
if i>0 then raise Exception.Create(scanvalue2+' is not a valid floating point notation');
end;
if vartype=4 then //same as 3
begin
val(scanvalue2,doublevalue2,i);
if i>0 then
if scanvalue2[i]=',' then scanvalue2[i]:='.';
val(scanvalue2,singlevalue2,i);
if i>0 then raise Exception.create(scanvalue2+' is not a valid floating point notation');
end;
if vartype=6 then
begin
if extra then
val('$'+scanvalue2,int64value2,i)
else
val(scanvalue2,Int64value2,i);
if i>0 then raise Exception.Create(scanvalue2+' is not an valid 8-byte notation');
end;
end;
helpword:=wordvalue xor 1+random(65534);
helpdword:=dwordvalue xor helpword;
//find the digits
decim:=0;
val(scanvalue,decimhelp,i);
//i:=pos('.',scanvalue);
if i>0 then decim:=length(scanvalue)-i;
datatype:='NORMAL';
assignfile(memoryfile,scansettings^.CheatEngineDir+'Memory.TMP');
rewrite(memoryfile,1);
assignfile(Addressfile,scansettings^.CheatEngineDir+'Addresses.TMP');
rewrite(Addressfile,1);
blockwrite(Addressfile,datatype,sizeof(datatype));
number:=buffersize;
setlength(foundaddress,number);
if vartype=0 then //byte
begin
//no need to bother with fastscan routines
setlength(foundvalue1,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);
bytep:=pointer(memoryregion[i].BaseAddress);
try
// ScanByte(bytevalue,memoryregion[i].BaseAddress,memoryregion[i].MemorySize);
for j:=0 to memoryregion[i].MemorySize-1 do
begin
if bytep^=bytevalue then
begin
foundaddress[found]:=Memoryregion[i].BaseAddress+j;
inc(found);
if found=number then
begin
if not FoundIsFilled then
begin
for k:=0 to number-1 do foundvalue1[k]:=bytevalue;
FoundIsFilled:=true;
end;
blockwrite(Addressfile,pointer(foundaddress)^,4*number,actualwrite);
blockwrite(Memoryfile,pointer(foundvalue1)^,number,actualwrite);
found:=0;
end;
end;
inc(bytep);
end;
except
end;
postmessage(scansettings^.formscanningHandle,ESSetProgressbarPos,position,0);
end;
if not foundisfilled then
for i:=0 to found-1 do foundvalue1[i]:=bytevalue;
blockwrite(Addressfile,pointer(foundaddress)^,4*found,actualwrite);
blockwrite(Memoryfile,pointer(foundvalue1)^,found,actualwrite);
result:=filesize(Memoryfile);
end;
if scantype=BiggerThan then
begin
for i:=0 to memoryregions do
begin
if not scansettings^.scanning then break;
inc(position,memoryregion[i].MemorySize);
bytep:=pointer(memoryregion[i].BaseAddress);
try
for j:=0 to memoryregion[i].MemorySize-1 do
begin
if bytep^>bytevalue then
begin
foundaddress[found]:=Memoryregion[i].BaseAddress+j;
foundvalue1[found]:=bytep^;
inc(found);
if found=number then
begin
blockwrite(Addressfile,pointer(foundaddress)^,4*number,actualwrite);
blockwrite(Memoryfile,pointer(foundvalue1)^,number,actualwrite);
found:=0;
end;
end;
inc(bytep);
end;
except
end;
postmessage(scansettings^.formscanningHandle,ESSetProgressbarPos,position,0);
end;
blockwrite(Addressfile,pointer(foundaddress)^,4*found,actualwrite);
blockwrite(Memoryfile,pointer(foundvalue1)^,found,actualwrite);
result:=filesize(Memoryfile);
end;
if scantype=SmallerThan then
begin
for i:=0 to memoryregions do
begin
if not scansettings^.scanning then break;
inc(position,memoryregion[i].MemorySize);
bytep:=pointer(memoryregion[i].BaseAddress);
try
for j:=0 to memoryregion[i].MemorySize-1 do
begin
if bytep^<bytevalue then
begin
foundaddress[found]:=dword(bytep);
foundvalue1[found]:=bytep^;
inc(found);
if found=number then
begin
blockwrite(Addressfile,pointer(foundaddress)^,4*number,actualwrite);
blockwrite(Memoryfile,pointer(foundvalue1)^,number,actualwrite);
found:=0;
end;
end;
inc(bytep);
end;
except
end;
postmessage(scansettings^.formscanningHandle,ESSetProgressbarPos,position,0);
end;
blockwrite(Addressfile,pointer(foundaddress)^,4*found,actualwrite);
blockwrite(Memoryfile,pointer(foundvalue1)^,found,actualwrite);
result:=filesize(Memoryfile);
end;
if scantype=ValueBetween then
begin
for i:=0 to memoryregions do
begin
if not scansettings^.scanning then break;
inc(position,memoryregion[i].MemorySize);
bytep:=pointer(memoryregion[i].BaseAddress);
try
for j:=0 to memoryregion[i].MemorySize-1 do
begin
if (bytep^>=bytevalue) and (bytep^<=bytevalue2) then
begin
foundaddress[found]:=dword(bytep);
foundvalue1[found]:=bytep^;
inc(found);
if found=number then
begin
blockwrite(Addressfile,pointer(foundaddress)^,4*number,actualwrite);
blockwrite(Memoryfile,pointer(foundvalue1)^,number,actualwrite);
found:=0;
end;
end;
inc(bytep);
end;
except
end;
postmessage(scansettings^.formscanningHandle,ESSetProgressbarPos,position,0);
end;
blockwrite(Addressfile,pointer(foundaddress)^,4*found,actualwrite);
blockwrite(Memoryfile,pointer(foundvalue1)^,found,actualwrite);
result:=filesize(Memoryfile);
end;
end
else
if vartype=1 then //word
begin
//no need to bother with fastscan routines
setlength(foundvalue2,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);
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 then
begin
foundaddress[found]:=dword(wordp);
inc(found);
if found=number then
begin
if not FoundIsFilled then
begin
for k:=0 to number-1 do foundvalue2[k]:=wordvalue;
FoundIsFilled:=true;
end;
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 then
begin
foundaddress[found]:=dword(wordp);
inc(found);
if found=number then
begin
if not FoundIsFilled then
begin
for k:=0 to number-1 do foundvalue2[k]:=wordvalue;
FoundIsFilled:=true;
end;
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;
if not foundisfilled then
for i:=0 to found-1 do foundvalue2[i]:=wordvalue;
blockwrite(Addressfile,pointer(foundaddress)^,4*found,actualwrite);
blockwrite(Memoryfile,pointer(foundvalue2)^,found*2,actualwrite);
result:=filesize(Memoryfile) div 2;
end;
if scantype=BiggerThan 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 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 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;
if scantype=SmallerThan 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 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 then
begin
foundaddress[found]:=dword(wordp);
foundvalue2[found]:=wordp^;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -