ما هي اسرع الطرق لبحث عن بايتات في الذاكرة ؟
#1
السلام عليكم ورحمة الله وبركاتة

قبل فترة عملت برنامج ... شبيه بـ Cheat Engine وكان الهدف لزيادة الخبرة وإنتاج برنامج غير مكشوف من بعض الحمايات ...

ولكن كان يحتوي على بعض الاخطاء التي بعض الأوقات تسبب تدمير(Crash) للبرنامج رغم ان البرنامج
لا يحتوي على اي خطاء برمجي ...
حيث اني كنت اقرء الذاكرة واعيد العنوان والقيمة في Array إذا تطباقت القيمة التي تم قرائتها مع
القيمة التي ابحث عنها ... وعملت دالة تقوم بذلك لتسهيل العملية ... وكتبتها بهذا الشكل :
PHP كود :
type
  dwArray 
= Array[0..1] of array of Cardinal;
function 
FindValueDWORD(hProcess : NativeUInt; dwStartAddress, dwEndAddress : Cardinal; Value : Cardinal): dwArray ;
var
  
TempAddress : Cardinal;
  
I : Integer;
  
BytesRead : NativeUInt;
  
dwResult : Cardinal;
  
LenArray : Integer;
begin
  LenArray 
:= 0;
  
SetLength(Result[0],1);
  
SetLength(Result[1],1);

  if 
not ( hProcess <> 0 ) then Exit;
  if ( 
dwStartAddress > dwEndAddress ) then
  begin
    TempAddress 
:= dwEndAddress;
    
dwEndAddress := dwStartAddress;
    
dwStartAddress := TempAddress;
  
end;

  
SetLength(Result[0],0);
  
SetLength(Result[1],0);

  for 
I := dwStartAddress to dwEndAddress do
  
begin
    ReadProcessMemory
(hProcess, Pointer(I), @dwResult, 4, BytesRead);
    if ( 
dwResult = Value ) then
    begin
      LenArray 
:= LenArray + 1;
      
SetLength(Result[0],LenArray);
      
SetLength(Result[1],LenArray);
      
Result[0][LenArray -1] := I;
      
Result[1][LenArray -1] := dwResult;
    
end;
  
end;
end; 
لكن عندما اقارن سرعة البحث في برنامجي وسرعة البحث في برنامج Cheat Engine
اجد برنامج Cheat Engine سريع جداً بينما برنامجي بطئ مقارنة مع Cheat Engine

وهنا اعيد طرح السؤال ... ما هي اسرع الطرق لعملية بحث في الذاكرة ؟

اتمنى وضحت المطلوب ...

وشكراً لحسن القراءة
والسلام عليكم ورحمة الله وبركاتة
الرد


الردود في هذا الموضوع
ما هي اسرع الطرق لبحث عن بايتات في الذاكرة ؟ - بواسطة ALmuhhnad - 16-03-2013, 01:31 PM

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم