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

التشفير بكل أنواعه . موضوع مكتمل

مغلق
بدأه sakr188 في 26 نوفمبر 2004 · 14 رد · 11,845 مشاهدة · في أرشيف منتدى الدلفي
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

لقد أحببت أن أحمي برامجي بطرق متطوره فبحثة في المنتدى فوجدة مقال عن التشفير ولكن ياجماعه أريد أن أنبهكم لشيئ يجب

أولا عند التدخل يجب أن يكون لديك مثال حي لأن الأفكار سهلة ولكن تطبيقها صعب فأنا إضطلعت على المشاركات الخاصه بالتشفير و لقد أعجبت بالطرق التاليه

التشفير داخل صورة وهو نوع جديد من التشفير لو ممكن تعمللنا التشفير داخل ملفات TXT و MP3 ستكون أحسن و ينفع أكثر

التشفير داخل الريسورس و هذا أمر قد إستصعبته ولكنه ممكن فالرجاء من من يعرفون أن يضيفه كسورس في المنتدى أو أرسلوه لي على العنوان التالي Sakr188@hotmail.com

التشفير بتحويل الكلمات و هذا الموضوع أنا عندي خبرة كبيرة فيه لمن يريده يستطيع أن يتصل بي و أوجه كلمة للأخ عروه يريت تتركلي الإميل بتاعك على الهوتميل علشان نستطيع أن نتواصل أكثر انا عارف إنك هتقول الدلفي ورايا ورايا بس معلش إستحمل في سبيل أكبر موقع دلفي في المستقبل و أنا شخصا أنوي أن أنزل بكل ثقلي و بكل ماأعرفه في هذا المنتدى و لكن يد لوحدها لاتصفق

أقوى عروض الإستضافة على الإطلاق

عروض تبدئ من 1.99 $ في الشهر

أدخل على صقر هوست و سترى بنفسك

#2

أولا يا مرحبا فيك أخي صقر 188 ..

ونحنا بإنتظارك في المنتدى ..

ماعندي إميل على الهوت ميل ..

لكن بإمكانك مراسلتي :

WebMaster@orwah.net

أو مثلا Orwa@scs-net.org

أو مثلا orwah.net@gmail.com

أو .. أو ... أو ...

#3

وهذة بعض الخربشات كنت قد أعدتها منذ زمن ,.

جيدة ومناسبة للموضوع , لكنها متعارضة مع القواعد العامة لكتابه البرامج :

كيف تجعل برامجك أصعب للكسر ..

مرحبـــــــــا مجددا ...

أنا لا أقول أبدا أنة يمكن منع كسر البرامج بشكل قطعي ونهائي , فحسب معلوماتي أن كبار شركات العالم لم تستطع تحقيق هذا الهدف .... ! , لذلك تبدو عبارة جعل البرامج أصعب للكسر أفضل من حماية البرامج من الكسر ..

وماذا عن الذين يعملون في البرمجة وبناء التطبيقات :

برأيي أنة مهما كان الهاكر (الكلمة الأصلية هي كراكر , ولكني سأستخدم الأولى لإنها الأكثر شيوعا) وضيعا فعلينا على الأقل أن لا نكون صيدا سهلا له , وبالتأكيد الهاكر لن يحترم مبرمج أستطاع كسر منتجة في خمس دقائق , أي وبكل بساطة فقط دعونا نفكر في جعل برامجنا أكثر صعوبة للكسر , ومقتصرة على الهاكرز المحترفين . أي إستبعاد كل اللذين يكسرون البرامج من أجل اللهو والمتعة بعد أن يضيقو ذرعا ببرامجنا , وعليك أن تعلم أن هؤلاء يشكلون النسبة العظمى منهم , وأن تجاوزهم قد يكون مهما كفاية لشخص يهتم بالتسويق الرابح للمنتجات ..

أود بداية أن أنوة إلى أهمية البرامج المفتوحة المصدر , والبرامج المجانية التي لم تغوي أحد الهاكرز أبدا , ولذلك لاترى برامج مكسورة في نظم لينكس مثلا . فأنا من المعجبين بفكرة أخي الأيهم صالح عن معاملة المستخدم كموزع بدلا من أن معاملتة كقرصان. حاول أن تعقد صفقة مربحة للطرفين مع المستخدم، وستجد أنه سيحرص على فائدتك لأنه سيستفيد.

وسأقتبس منة هذة : " الديك الذي يبيض بيضة واحدة في العمر، يحاول حمايتها بشتى الوسائل. أما الدجاجة التي تبيض كل يوم بيضة ، فتقدم بيضها للبشرية كلها.وكذلك المبرمجون الحقيقيون، فهم ينشرون كودهم الأصلي على الإنترنت، ويسمحون للبشرية أن تنسخه، ولذلك لا يقلقون على حماية البرنامج. على عكس الهواة أو قراصنة الأفكار الذين لا يصدقون أن تظبط معهم شغلة في العمر." .

حسنا صديقي ,,, إهدأ أولا وركز , .... هم هم ..... , أريدك أن تفهم كلامي وتمخمخ معي جيداً :

دعنا نبدأ ببعض النصائح العامة التي لن ندخل بها شفرات دلفي , وسنخصص مقالات أخرى خاصة باللغة دلفي من أجل حماية البرامج ... وأذكرك بإنها ليست نصائح لقواعد كتابة برنامج صحيح بل بالعكس تماما , هي خاصة بالمهتمين بحماية برامجهم .. أصلا فهي تعتمد على الإبتعاد عن الصيغ القياسية والتقليدية لقواعد كتابة البرنامج التي سوف يفترضها الهاكر قبل أن يبدأ بعملة .... وهذة النصائح هي :

-لا تستخدم أسماء ذات معنى للتوابع والإجرائيات إذا كنت مهتم بالحماية .

مثال :

• function RegistrationOK: Boolean;

أعرف أن الأسماء التي تحمل معاني مفيدة جيدة جدا من أجل فهم البرنامج وتنقيحة , ولكن إذا كنت مهتما بجعل برنامجك أصعب للكسر لا أنصحك أبدا بإستخدام أسماء توابع تدل على عملها , لإن ذلك سيجعل الهاكر يعرف موقع العمل الصحيح وبالتالي أظن أنة بعد ذلك سيبطل عملة في خمس دقائق .. وسلامة فهمك ؟

-لا تستخدم أبدا رسائل-إعلام إنتهاء الصلاحية أو عدم سماحية كلمة المرور .

مثال :

اقتباس
Invaled Password , please try agine ?
بالتأكيد لن يقوم الهاكر بتفحص 500 كيلوبايت مثلا من شفرة لغة التجميع Assimply لكي يعرف أين يوجد الجزء الخاص من الكود الذي يجب علية تعديلة لكسر كلمة مرورك . ولكنة سيجرب أولا إدخال كلمة عشوائية لكي يعرف ماهي رسالة-إعلام عدم سماحية كلمة المرور , ويترقب الرسالة الناتجة , والتي تكون مخزنة بصيغة نصية في الملف التنفيذي ويسهل العثور عليها , ثم يبحث عنها في شفرة الآلة لملفك التنفيذي , وبالتأكيد هذا هو الجزء من الشفرة الذي يحوي شرط سماحية كلمة المرور والذي يمكن تعطيلة أو قلبة ببساطة فائقة .. لذلك لا تسمح لة بتحديد موقع العمل بسهولة , تجنب كتابة هذا النوع من الرسائل , أو إفصلة بعيدا عن الجزء الخاص بإختبار كلمة المرور , ويفضل أن تشفرة بطريقة ما.

-جزء برنامجك إلى ملفات متعددة

صدقني إن هذا الجزء مهم وجيد , كما أن لة فوائد عديدة أخرى غير حماية البرنامج (ترقية البرنامج بسهولة ) .

-لا تستخدم أبدا أسماء ملفات ذات معنى .

مثال:

License.Dat

لا تجعل الهاكر يتوقع أي ملف يجب أن يبدأ بة أولا , وحاول تضليلة بتشتيت الإجراءات في عدة ملفات بدلا من تجميعها في ملف واحد , فإذا كانت أسماء الملفات تدل على معناها , أظن أنك تكون خدمت الهاكر خدمة كبيرة وسهلت علية .

-أستخدم أدوات تشفير الملفات .

لا يكفي أن لانجعل أسماء ملفاتنا تدل عليها , بل يجب تشفير الملفات ما أمكن , ويمكن ذلك ببساطة بإستخدام أدوات خاصة (العديد منها مجاني مع الشفرة, كلف نفسك عناء البحث على النيت ) , هكذا تستطيع جعل الهاكر مشغولا لشهور (إذا أراد المثابرة). وبالتأكيد أذكرك أن لاتضع شفرة التشفير وفك التشفير في نفس البرنامج .

-أضف فترات إنتظار طويلة .

لا تحذر المستخدم مباشرة بعد إنتهاء فترة صلاحية برنامجة , أنتظر قليلا ربما ليوم أو يومين , الهاكرز يكرهون ذلك كثيرا . لإنهم يحبون أجزاء الشفرة التي تستجيب مباشرة من أجل الأخطاء وبالتالي بإمكانهم تصميم حلقات كسر سريعة تنجز ذلك في فترة صغيرة .. وفترات الإنتظار هذة هي دواء هذا النوع من الكسر .

-أضف فترات إنتظار أخرى .

تأخر ثانية أو ثانيتين بعد إدخال كلمة المرور , بدلا من المباشرة بروتينات التحقق من الصحة , ولا ضير من تنفيذ إجراءات أخرى لاعلاقة لها بها في هذة الفترة , إن ذلك نوع من التموية .

ملاحظة , قد تسبب لك هذة الطريق سيل من الشتائم , أذكرك ..... لن يكون الهاكر راضيا .

-أضف شفرات checksums خاصة.

مثل شفرات التعرف على حجوم ملفات برنامجك ومنع البرنامج من العمل بشكل صحيح عند حدوث أي تغيير في حجوم الملفات , . لإن معظم حالات كسر البرامج يحدث معها تغيير بالزيادة أو النقصان على حجم البرنامج المكسور .

-برىء رسائلك من البرنامج .

بدلا من إستخدام رسائل نصية عادية عند حدوث إستثناءات , قم برفع إستثناءات مشهورة من النظام مثل أخطاء وحدات الأقراص الصلبة و وعدم إستجابة المودم ... الخ إن ذلك سيقود الهاكر إلى الغرق في بحر من التعقيدات والقفزات مع ملفات النظام التي صدر الخطأ منها بدلا من أن يصدر من برنامجك ... (أهلا بك صديقي الهاكر مع لب نظام التشغيل!!)

-رقع برنامجك .....

قم بتعديل شفرتك بحيث تستدعي روتينات تحقق من الصحة مختلفة في كل مرة ,

بإمكانك مثلا تصميم عدة إجراءات تحقق من الصحة , ويتم إستدعاء أحدها بخوارزمية عشوائية في كل مرة ...

لنرى كيف سيغرق أصحابنا الهاكرز بمستنقع من العشوائية ..!!!

لإنة يجب أن تتذكر دائما أن الطرق القياسية والهندسية في العمل سهلة الإكتشاف والتدمير ....

-خزن كلمات المرور في أماكن غير معتادة .

بالتأكيد لن تخزن كلمة مرورك في ملف نصي بالإسم Password.txt في نفس مجلد البرنامج ؟؟؟؟

بإمكانك تخزينها في أحد حقول قاعدة البيانات المستخدمة , أو خزنها بملف وأعطة إمتداد DLL وضعة في مجلد النظام SYSTEM32 مثلا , وليكن إسمة RDC123.dll على سبيل المثال .....

-إذا أردت إستخدام رسائل توضيحية للمستخدم , لا تستخدم سلاسل محرفية مخزنة .

إن أول شيء سيحاول الهاكر البحث عنة هو الرسائل النصية لإنة يستطيع بواستطها تحديد أجزاء الكود المختلفة ومعرفة المكان الذي يجب العمل فية , فسيعرف الجزء الخاص بإختبار كلمة المرور مثلا من رسالة : "شكرا لتسجيل الدخول"

لذلك أنصحك بتخزينها جميعها في مكان واحد , على شكل إجراءات مثلا ولتكن في ملف DLL خاص يتم إستدعائها منة ويفضل تنفيذ خوارزمية تشفير معينة مثل عمليات النسخ من السلاسل ,, لإن ذلك سيقطع علية طريق معرفة المكان المناسب للبدء ,..

-لا تفصل إجراء التحقق من الصحة لوحدة بشكل مستقل,

لا داعي لجعلة محددا وواضحا , حيث يسهل العثور علية وفهمة وبالتالي منع عملة ,

لذلك أنصحك بكتابة تعليمات التحقق من الصحة في منطقة شعبية من البرنامج , أظن أن ذلك مفيد أكثر ..!

-إستخدم أسماء محجوزة أو شبيهه بها أو أسماء للنظام .

بالتأكيد لن تقول لي أنك تخزن كلمة المرور في متحول بالإسم Password ؟؟؟؟

إستخدم أسماء تبدو وكأنها من تعليمات البرنامج والنظام , أو تبدو كأنها رموز ست عشرية

مثال : "73AF" or "GetWindowText "or "handle73").

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

-لا يفضل إستخدام ميزات التعطيل ,

عندما لايسمح للمستخدم بالقيام بعمل ما , لا تجعل عنصر التحكم الخاص بة معطلا , مثلا لاداعي لجعل القائمة معطلة (رمادية وغير قابلة للضغط) أو الزر غير مفعل , عندما لايحق للمستخدم نظريا القيام بالفعل الخاص بها , بل إترك برنامجك بلا إستجابة (تذكر لا رسائل تنبية ولا إجراءات معاكسة .. ) لإن عدم القيام بإجراء معاكس قد يكون أفضل بكثير من القيام به ,, مثلا لاداعي لإغلاق البرنامج إذا لم تكن كلمة المرور المدخلة صحيحة , لإن العثور على شفرة إغلاق البرنامج سهل للغاية , وبالتالي العثور على الجزء الذي يجب عدم العثور علية ..

بإمكانك إستخدام تعليقات المترجم أيضا :

اقتباس
• {$IFDEF trial}

• ... no action here ...

• {$ELSE}

• ... advanced functionality for registered user ...

• {$ENDIF}

إن جعل كلمات تسجيل الدخول متعلقة بظروف مختلفة أفضل مليون مرة من الكلمات المخزنة سلفا .

مثال أن تكون كلمة المرور متعلقة بالرقم التسلسلي للقرص الصلب , بحيث ستكون مختلفة حسب كل مستخدم وسيضطر المستخدم للإتصال بك للحصول على إذنة الخاص (مع أنها طريقة ناجحة جدا ولكن لا تنغش باتت ممكنة الكسر هذة الأيام) ...

--------------------------------------------------------------------------------

ملاحظات أكثر من أجل دلفي

دعنا نتحدث قليلا أولا عن الأجزاء الداخلية من منتج بورلاند هذا ...(طبعـا دلفي ) , ربما هذة المعلومات سوف تساعد في تسريع فهم بعض الآليات المعاكسة للكسر , .

VCL وهي إختصار لـ "visual component library" وهي مكتبة تستخدمها لغات بورلاند للبرمجة المرئية Visual Programming مثل Delphi و BC++ Builder . هذة البيئات يتم تنسيقها على شكل مصادر resource format , وهذة المصادر تحتوي الأشكال Forms . في دلفي فإن الأشكال بالتأكيد هي نوافذ البرنامج , وكل المعلومات حول تصميم البرنامج ستكون مخزنة فيها , عندما يتم تشغيل برنامج دلفي قياسي فإن قسم التهيئة initialisation يقوم بخلق (إنشاء) الأشكال , وتحميل المعلومات اللازمة من الموارد (المصادر أو resource) , أحيانا تؤجل هذة العملية لبعض الوقت – , وطبعا الأشكال التي لاتستخدم بشكل كبير يمكن إنشاءها وتحريرها حسب الحاجة بالطريقة الديناميكية , .

الجزء المهم من هذة المعلومات هو أن عنوان الروتينات التي يستدعيها المستخدم بتأثيرة على عناصر الفورم (كالأزرارمثلا) , - يتم نسبة في زمن التشغيل RunTime بواسطة الإسم .

وبالتالي إذا عرفنا الإسم يمكننا معرفة العنوان المخصص لإحداثة .

وربما تكون هذة الطرق من الطرق المهمة المتبعة لكسر البرامج , ...

دعنا نخوض قليلا بهــا :

الخطوة الأولى ستكون جمع المعلومات عن ملفك التنفيذي بأدوات تجسس على الأشكال أو الموارد form spy tools

وهذا سيبدو مشابها لضغط بالزر الأيمن على الشكل وأختيار إظهارة بشكل نصي من بيئة دلفي :

ستظهر لنا معلومات مثل :

 
object RegButton: TButton
    Left = 200
    Top = 176
    Width = 97
    Height = 25
    Caption = 'Register'
    TabOrder = 1
    OnClick = RegButtonClick
  end

ماهذا ,, حسنا إنة الزر الذي عنوانة Register حيث بإمكانك أن ترى حجمة وموقعة , وسترى أيضا إسم آخر مع العبارة OnClick ,,, هذا الإسم يخبرنا ما هو إسم الروتين المتولد عند النقر على الزر (الجزء المهم من الطريقة) ,وبالتالي يمكن معرفة عنوان حدث عند النقر لزر تسجيل الدخول Rigister .. وكما أوردنا سابقا سيتم نسب الروتين إلى معالج الحدث عند نقر المستخدم على الزر بواسطة الإسم المرفق مع OnClick وهو RegButtonClick ..

وبالتالي الكلمة RegButtonClick ستكون مخزنة بشكل نصي في الملف التنفيذي وسيسهل العثور عليها بأي محرر ست عشري .! وعندما جربت ذلك على محرر ست عشري عثرت عليها بكل بساطة وكان الناتج :

 
000A4990 ____ ____ ____ BC57 4A00 0E52 6567 4275 ______.WJ..RegBu
000A49A0 7474 6F6E 436C 6963 6B__ ____ ____ ____ ttonClick_______

وإذا نظرنا إلى الأرقام التي قبل الإسم , سنجد البايت (0E) والذي يحدد طول ال" RegButtonClick " (14 محرف) . وقبل ذلك يوجد العنوان 004ABC57 .

الخ .. لن نخوض كثيرا في ذلك وسوف ننتقل الآن إلى الجزء المهم , وهو كيف نمنع هذا النوع من الكسر .

أي النوع الذي يتم الإعتماد فية على معرفة مكان الإجراء المرتبط بعنصر معين عن طريق الإسم ..

وبكل بساطة أقول لك ( ذا كنت مهتما بمنع هذا النوع من الكسر طبعا) :

لا تستخدم الطريقة الأوتوماتيكية في تعين معالج الحدث لزر معين وذلك بالنقر المزدوج على الزر , أو من مربع النص الخاص بة في ضابط الكائنات , .

ولا تستخدم أسماء قياسية مثل " RegButtonClick ,

بل قم بكتابة شفرة الزر في مكان ما من البرنامج , (على شكل إجراء مثلا )أو ربما في وحدة أخرى غير البرنامج الرئيسي .

ثم قم بنسبة يدويا إلى الزر بإستخدام كود مثل :

RegButton.OnClick := RButtonClick;

على إفتراض سميتها RbuttonClick , (يفضل إستخدام أسماء لاتدل على عملها)

طبعا يجب وضع هذا الكود بعد إنشاء الفورم FormCreate ( ولكن ليس بعد إستدعائة) .

بهذة الطريقة لن يسرد إسم الروتين عند إستخدام برامج تجسس الأشكال , وسيصبح العثور على إسم الروتين الخاص أصعب بكثير من الحالة السابقة ... وبالتأكيد طالما لم يستطع الهاكر العثور على مكان الشفرة التي يبحث عنها لن يستطيع فعل شي ذا قيمة ...

مثال على نسب الحدث في زمن التشغيل ((النسب الديناميكي)):

ننشيء مشروع دلفي جديد , ونضع زر على الفورم .

ما نريدة الآن هو تعيين حدث للزر عند النقر علية ولكننا لا نريد إستخدام الطريقة العادية بتحديد OnClick من ضابط الكائنات , أو بالنقر المزدوج على الزر .

لذلك سنقوم بنسبة في زمن التشغيل إلى الحدث المناسب .

لنقم أولا بإنشاء إجراء بسيط يظهر عبارة Hello world , ((ولكي يقبل النسب إلى TnotifyEvent يجب أن يحوي المتحول الوسيطي Sender )). إذن :

 
procedure TForm1.hi(Sender: TObject);
begin
showmessage('Hello World … ');
end;

ثم عند إنشاء الفورم نكتب

  
procedure TForm1.FormCreate(Sender: TObject);
begin
Button1.OnClick:=hi;
end;

نلاحظ بعد تشغيل البرنامج والضغط على الزر تظهر لنا عبارة Hello World وهكذا نكون حددنا الحدث المطلوب عند النقر على الزر في زمن التشغيل Run Time ,. تستخدم هذة الطريقة في بعض الحالات التي تختلف فيها إستجابة العنصر (زر مثلا) حسب شروط معينة يحددها المستخدم أثناء التشغيل , وبالتالي يمكن تغيير إستجابة عنصر معين حسب الشروط أثناء تشغيل البرنامج . كما أنها مفيدة في حالات أخرى مثل حالتنا هذة .

الشفرة الكاملة :

  
unit Unit1;

interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
   private
 procedure hi(Sender: TObject);
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation
{$R *.dfm}

procedure tform1.hi(Sender: TObject);
begin
showmessage('how are you');
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Button1.OnClick:=hi;
end;
end.

عروة علي عيسى

www.orwah.net

#4

السلام عليكم شكرا أخ عروه ولكن كيف يتم إدخال البيانات داخل الريسورس الخاص بالبرنامج بيحيث تصبح كلمة السر جزى من البرنامج و يريت تضعلنا مثال نعمل به لتعم الفائدة

أوكي

أقوى عروض الإستضافة على الإطلاق

عروض تبدئ من 1.99 $ في الشهر

أدخل على صقر هوست و سترى بنفسك

#5

سلام ...

اقتباس
وهذة بعض الخربشات كنت قد أعدتها منذ زمن ,.

الله لايحرمنا من خربشاتك اخي عروة و يكثر منها .. وجاري قراءة الموضوع .. :)

بنت اليمن ،،

لا اله الا الله .. محمد رسول الله

(* ربِ اجعلني مقيم الصلاة و من ذريتي ، ربنا و تقبل دعـاء *)

يا حيّ يا قيـوم ... برحمتك استغيث ... اصلح لي شأني كله و لا تكلني الى نفسي طرفة عين

#6

حسنا هذا مثال يظهر حالتين ..

الأولى بسيطة يكسرها مبتديء مثلي بثانية

الثانية أفضل منها بكثير .

ملاحظة لست مضطر لحفظ كلمة المرور في ملف الموارد بإمكانك إستخدام عمليات على السلاسل لتجميع كلمة مرور من سلسله محرفيه .. (لاحظ المثال وستعجبك الفكرة)

حمايه.zip

#7
s:='abcdef';

s[1]='a'

s[2]='b'

s[3]='c'

s[1]+s[2]='ab'

وهكذا

#8

شكرا اخي عروة

ولكن عندي برنامج مرتبط بid

للكمبيوتر وللاسف عجزت عن كسره

ياريت لمن عنده علم في ذلك ان يسهب في الشرح

وشكرا

اصحيح ان العرب في هذه الحياة.......هذا بالاسم فقط

لالالالابالاحلام ....او..لاكمال العدد؟؟؟؟؟؟

#9

يا أخي زاهر نحن نبحث عن حل لنمنع الكسر ليس لندعمه لأني أنا لو أعطيتك الطريقة اليوم يمكن أن يستعملها أي أحد آخر ضدي و أنا آسف لعم إفادتك في هذا الموضوع

أقوى عروض الإستضافة على الإطلاق

عروض تبدئ من 1.99 $ في الشهر

أدخل على صقر هوست و سترى بنفسك

#10

طيب

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

ولكن اعتذر؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟

اصحيح ان العرب في هذه الحياة.......هذا بالاسم فقط

لالالالابالاحلام ....او..لاكمال العدد؟؟؟؟؟؟

#11

الا احد يمكن ان يعلمني هذه الطريقة

غريب

اصحيح ان العرب في هذه الحياة.......هذا بالاسم فقط

لالالالابالاحلام ....او..لاكمال العدد؟؟؟؟؟؟

#12

يااخواني

اهذه المعلومات ةالتي اطلبها من الامن القومي؟؟؟؟؟؟؟؟؟؟؟؟

ابعثوها ىلي على الايميل اذا.........

هذا هو عنواني

اذا كنتم لاتعرفون ........... اخبروني

abd-said@scs-net.org

zahersaid@maktoob.com

اصحيح ان العرب في هذه الحياة.......هذا بالاسم فقط

لالالالابالاحلام ....او..لاكمال العدد؟؟؟؟؟؟

#13

أنصحك بمنتدى الأسمبلي ,

ستجد فيه دروس رائعه عن البرمجه العكسيه . وخاصه مقالات الأخ jazz رائعه .

#14

ساعمل بنصيحتك اخي عروة شكرا

اصحيح ان العرب في هذه الحياة.......هذا بالاسم فقط

لالالالابالاحلام ....او..لاكمال العدد؟؟؟؟؟؟

#15

مشكور اخي جدا جدا وارجو منك المزيد

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

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