![]() |
|
ما هي اسرع الطرق لبحث عن بايتات في الذاكرة ؟ - نسخة قابلة للطباعة +- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum) +-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3) +--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15) +--- الموضوع : ما هي اسرع الطرق لبحث عن بايتات في الذاكرة ؟ (/showthread.php?tid=5023) |
ما هي اسرع الطرق لبحث عن بايتات في الذاكرة ؟ - ALmuhhnad - 16-03-2013 السلام عليكم ورحمة الله وبركاتة قبل فترة عملت برنامج ... شبيه بـ Cheat Engine وكان الهدف لزيادة الخبرة وإنتاج برنامج غير مكشوف من بعض الحمايات ... ولكن كان يحتوي على بعض الاخطاء التي بعض الأوقات تسبب تدمير(Crash) للبرنامج رغم ان البرنامج لا يحتوي على اي خطاء برمجي ... حيث اني كنت اقرء الذاكرة واعيد العنوان والقيمة في Array إذا تطباقت القيمة التي تم قرائتها مع القيمة التي ابحث عنها ... وعملت دالة تقوم بذلك لتسهيل العملية ... وكتبتها بهذا الشكل : PHP كود : typeاجد برنامج Cheat Engine سريع جداً بينما برنامجي بطئ مقارنة مع Cheat Engine وهنا اعيد طرح السؤال ... ما هي اسرع الطرق لعملية بحث في الذاكرة ؟ اتمنى وضحت المطلوب ... وشكراً لحسن القراءة والسلام عليكم ورحمة الله وبركاتة ما هي اسرع الطرق لبحث عن بايتات في الذاكرة ؟ - SMP3 - 16-03-2013 بالطبع يا أخي ستكون الدالة بطيئة لسببين السبب الأول أنك تستخدم مصفوفة ذات بعد ثنائي السبب الثاني الحلقة التي تستخدمها لقراءة الذاكرة ------------------------------------- ليس هناك داعي لمصفوفة ثنائية طالما قيمة Value ثابة !! + القراءة من الذاكرة باستخدام حلقة سيبطأ الدالة ----------------------------------- هذا مثال سريع : PHP كود : type dwArray2= array of Cardinal;ما هي اسرع الطرق لبحث عن بايتات في الذاكرة ؟ - ALmuhhnad - 19-03-2013 السلام عليكم ... اعرف ان الرد اتى متأخراً , لاني انشغلت في اموار آخرى ... احببت ان اسئل عن الدالة GetMem ما وضيفته بالضبط ؟ هل لك ان تشرح لي الطريقة المتبعه في جلب القيمة في الدالة التي كتبتها .. لان لدي بعض الاستفهامات ![]() وشكراً لك من جديد اخي SMP3 ما هي اسرع الطرق لبحث عن بايتات في الذاكرة ؟ - ALmuhhnad - 20-03-2013 السلام عليكم ... لدي سؤال آخر وهو عن هذا التعريف : PHP كود : type PCardinalArray = ^TCardinalArray;ما هي اسرع الطرق لبحث عن بايتات في الذاكرة ؟ - SMP3 - 20-03-2013 ALmuhhnad كتب :هل لك ان تشرح لي الطريقة المتبعه في جلب القيمة في الدالة التي كتبتها ..الدالة GetMem تقوم بحجز مكان لمؤشر في الذاكرة عند تعاملنا مع المؤشرات يجب أن نقوم بحجز مكان لها في الذاكرة تماما مثل SetLength ------------------- نفس التمرير للدالة ![]() ALmuhhnad كتب :لدي سؤال آخر وهو عن هذا التعريف :أنت استخدمت 2 بايت للقراءة لأنك تقوم بالقراءة باستخدام Loop .. أما استخدامي 16383 فهو بسبب قراءة الذاكرة بحجم معين وتخزن القيمة في مصفوفة .. يعني القراءة مرة واحدة لذلك يجب أن تكون المصفوفة طويلة . ما هي اسرع الطرق لبحث عن بايتات في الذاكرة ؟ - ALmuhhnad - 21-03-2013 إقتباس :أنت استخدمت 2 بايت للقراءة لأنك تقوم بالقراءة باستخدام Loop ..انا استخدمت 4 بايت ... لكن بسبب الـ loop على ما اضن اني اقرى بايت بايت ... أي اني اقرى 4 بايت وبعد لذلك اتأكد من مطابقتها للقيمة ثم اقرى العنوان الذي يليه ببايت واحد ...إلخ إقتباس :أما استخدامي 16383 فهو بسبب قراءة الذاكرة بحجم معين وتخزن القيمة في مصفوفةطيب لو حصل وان كان المراد قرائته اطول من الطول المحدد ... ماذا افعل لكي اضع الطول مفتوح وعلى حسب الـ dwStartAddress و dwEndAddress ? ما هي اسرع الطرق لبحث عن بايتات في الذاكرة ؟ - SMP3 - 21-03-2013 ALmuhhnad كتب :انا استخدمت 4 بايت ... لكن بسبب الـ loop على ما اضن اني اقرى بايت بايت ... أي اني اقرى 4 بايت وبعد لذلك اتأكد من مطابقتها للقيمة في هذه الحالة عليك باستخدام Dynamic Arrays ما هي اسرع الطرق لبحث عن بايتات في الذاكرة ؟ - ALmuhhnad - 21-03-2013 هل تقصد بـ Dynamic Arrays هكذا : PHP كود : dwArray2 = array of Cardinal; ايضاً عند إستعمالي بهذه الطريقة سيحصل خطاء في GetMem ايضاً يا حبذ ان تكتب المثال في XE3 لاني اواجه صعوبة في تحولي الكود @@" فالمصفوفات لم يسبق لي ان تعاملت معها ... إلا في هذا المثال ... لذلك كان احد اهدافي ان ازيد خبرتي
ما هي اسرع الطرق لبحث عن بايتات في الذاكرة ؟ - ALmuhhnad - 21-03-2013 نسيت ان اذكر .... : ( الكود يعمل مع d7 ) في الرد السابق كنت اتكلم عن xe3 ... ما هي اسرع الطرق لبحث عن بايتات في الذاكرة ؟ - ALmuhhnad - 21-03-2013 السلام عليكم ... الحمد لله استطعت بفضل الله ثم مساعدت اخي المبرمج SMP3 وضع دالة للقراءة ( لم اجرب سرعتها بعد ) هذه الدالة بـ Delphi XE3 : PHP كود : typeطريقة الإستعمال : PHP كود : procedure TMain.btnFirstScanClick(Sender: TObject);الآن ما الملاحظات على الدالة إن امكن ... وبعد قليل ساجرب سرعة الدالة
|