16-03-2013, 01:31 PM
السلام عليكم ورحمة الله وبركاتة
قبل فترة عملت برنامج ... شبيه بـ Cheat Engine وكان الهدف لزيادة الخبرة وإنتاج برنامج غير مكشوف من بعض الحمايات ...
ولكن كان يحتوي على بعض الاخطاء التي بعض الأوقات تسبب تدمير(Crash) للبرنامج رغم ان البرنامج
لا يحتوي على اي خطاء برمجي ...
حيث اني كنت اقرء الذاكرة واعيد العنوان والقيمة في Array إذا تطباقت القيمة التي تم قرائتها مع
القيمة التي ابحث عنها ... وعملت دالة تقوم بذلك لتسهيل العملية ... وكتبتها بهذا الشكل :
لكن عندما اقارن سرعة البحث في برنامجي وسرعة البحث في برنامج Cheat Engine
اجد برنامج Cheat Engine سريع جداً بينما برنامجي بطئ مقارنة مع Cheat Engine
وهنا اعيد طرح السؤال ... ما هي اسرع الطرق لعملية بحث في الذاكرة ؟
اتمنى وضحت المطلوب ...
وشكراً لحسن القراءة
والسلام عليكم ورحمة الله وبركاتة
قبل فترة عملت برنامج ... شبيه بـ 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
وهنا اعيد طرح السؤال ... ما هي اسرع الطرق لعملية بحث في الذاكرة ؟
اتمنى وضحت المطلوب ...
وشكراً لحسن القراءة
والسلام عليكم ورحمة الله وبركاتة


إن امكن ...