المؤشرات و الخطأ : EAccessViolation
#1
السلام عليكم ورحمة الله وبركاتة

سؤال متعلق بالمؤشرات Smile عندقراءة عنوان اكتب هذا السطر :
PHP كود :
Form1.Caption := IntToHex(PDWORD($00401000)^,8); 
يتم قراءة محتوى العنوان $00401000 ... بدون مشاكل ...
وعندما احاول ان اكتب على العنوان بنفس الطريقة لا استطيع يظهر لي خطأ : EAccessViolation
هذا الكود الذي استعملته :
PHP كود :
PDWORD($00401000)^ := 5 
ما المشكلة التي وقعت بها ؟
الرد
#2
بالطبع لن تستطيع التعديل عليها .. لأن الجزء من الذاكرة التي يقع فيها هذا العنوان محمي (ذاكرة محمية)
يجب تغيير صلاحيات الذاكرة :
اطلع على :
كود :
http://msdn.microsoft.com/en-us/library/windows/desktop/aa366786(v=vs.85).aspx http://msdn.microsoft.com/en-us/library/windows/desktop/aa366785(v=vs.85).aspx
+ الدوال :
كود :
VirtualAlloc VirtualAllocEx WriteProcessMemory
الرد
#3
ههههه ... كنت اتوقع ذلك , لكن ما جعلني اسئل لاني عندما استعمل اوامر الاسبملي
PHP كود :
MOV DWORD PTR DS:[$00401000],0x5 

لا تظهر هذه الرسالة ... لذلك ضننت ان الاوامر التي تنفذ من الكود لها صلاحيات التعديل ...

طيب ... اخي المبرمجي SMP3 لما لا تظهر هذه الحالة مع اوامر الاسمبلي ؟

------
الرد الثاني
على ما يبدو ان نفس الرسالة تظهر مع اوامر الاسمبلي ... @@
لكن الغريب انها لم تظهر هذه الرسالة عندما استعملت اكواد الاسبملي على احد الآلعاب
ربما كانت الصلاحيات معدلة من الأسااس

شكراً لك اخي المبرمج SMP3
الرد
#4
الصلاحيات للذاكرة تختلف من برنامج لاخر (يمكن القول ان الكومبايلر هو الذي يحدد صلاحيات الولوج للذاكرة)
الرد


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


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