الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

تعديل في خصائص دالة

مغلق
بدأه أبوعـمـر في 10 سبتمبر 2004 · 5 رد · 627 مشاهدة · في لغة Assembly لأنظمة 16, 32, 64 بت
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله :

لدي برنامج عملت علية debug بـ olly اظهر لى الصورة المرفقة

للداله drawtexta الدالة لها بارمتر يحدد الخاصية يمين يسار وسط

البرنامج مظهر ان الخاصية يسار , كيف اعرف قيمة الخاصية يمين

ولكم جزيل الشكر.

post-79-1094813210_thumb.jpg

#2

السلام عليكم,

إن الدالة DrawTextA في الأسمبلر ستكتب على النحو التالي :

Push  Flag  <-- How To Write
Push Rect  <-- address of rect structure 
Push StringCount  <-- Number of character to write
Push String <-- address for string to write
Push  Hdc  <-- The handle for you device
Call DrawTextA

البارامتر الذي يحدد خاصية يمين أو يسار الكتابة هو البارامتر الأول Flag فعندما يكون يسارا تكون قيمته 0 أما اليمين فقيمته هي 2 .

وإليك هذه القيم الخاصة بهذا البارامتر

DT_TOP              0x00000000
DT_LEFT             0x00000000
DT_CENTER           0x00000001
DT_RIGHT            0x00000002
DT_VCENTER          0x00000004
DT_BOTTOM           0x00000008
DT_WORDBREAK        0x00000010
DT_SINGLELINE       0x00000020
DT_EXPANDTABS       0x00000040
DT_TABSTOP          0x00000080
DT_NOCLIP           0x00000100
DT_EXTERNALLEADING  0x00000200
DT_CALCRECT         0x00000400
DT_NOPREFIX         0x00000800
DT_INTERNAL         0x00001000

إلى اللقاء.

#3

مشكور احوي CHK على الاجابة الوافية

لكن اذكان flag=420

هل هذا يعني انة تركيب بطريقة ما من القيم التي كتبتها فوق.

#4

السلام عليكم,

كل البارامترات التي أعطيت مسبقا يمكن أن نعمل منها مزيجا وذلك بزيادة قيمتهم طبعا في حدود المعقول حيث ليس منطقيا مثلا أن نقول يمينا ويسارا في نفس الوقت علما أن في هذه الحالة ستكون النتيجة يمينا.

فمثلا لو نريد الكتابة في أسفل المستطيل ويمينا ستكون عندنا القيمة هي 8 +2 =10 أو 0A بالهكس.

وكما ذكرت الرقم flag=420 يعني هنا عندنا مزيج بين البارامترين DT_CALCRECT 0x00000400 و DT_RIGHT 0x00000002

إلى اللقاء.

#5

وللزيادة

يقوم النظام بمعرفة البارمترات + فصلها

عن طريق قانون معروف في الإحتمالات

بهذة الطريقة :

مثلا كان البارمتر = 400000

يقوم بإدخالة في دورة ويقوم بالمقارنة بهذا الشكل

هل الرقم أكبر أو يساوي 200000

إذا : 400000-200000 = 200000

هل الرقم أكبر أو يساوي 100000

إذا : 200000 - 100000 = 10000

ويعيد نفسة بهذة الطريقة

أنا توقعت في البداية أنة يقوم بمقارنة مئات الدوال ولنفرض دالة SendMessage

لها مئات الإحتمالات

وفي الواقع تصبح مجرد دورة لا أكثر ولا أقل

وبعدين أخي أبو عمر

بارمترات الدوال تظهر بترتيب أكثر في نافذة المكدس

وشكرا أخي chik

وإلى اللقاء

http://www.jaascois.com

*************************************************

مجموعة مواضيع - إحتراف البرمجة -

ّ~~~~~~~~~~~~~~~~~~~~~~

البرمجة المتقدمة & الهندسة العكسية & برمجة وأمن الأنظمة

/index.php?showtopic=45002

آخر المواضيع :

+- تحليل جرائم الكمبيوتر -+

أنظمة اليونكس(Solaris,HP, AIX,SCO)وانواع المعالجات

ثغرة SMS لأجهزة الجوال Siemens 3568i !

أخطاء وثغرات البرامج العربية !!!

سلسلة مواضيع - أمن وحماية مواقع الويب -

E البرمجة المتقدمة X للملفات التنفيذية E

سلسلة مواضيع ثغرات الأنظمة وإختراق الأجهزة

**************************************************

<span style='font-size:14pt;line-height:100%'>الإرادة تحـــقق السيـــادة</span>

**************************************************

#6

مشكورين على الرد jaas . chik

الاجابة شافية ووافية بارك الله فيكم.

هذا الموضوع مغلق.

مواضيع مشابهة