• 0
GamingMasteR

Qt Internals & Reversing

سؤال

السلام عليكم .

موضوع شيق لـ Daniel Pistelli يأخذك فيه الى اعماق Qt .

Introduction

Half of the text of this article comes from my larger paper "Dynamic C++ Proposal". I decided that it was useful to take the part about Qt internals, put it into another article and extend it by adding a reversing part. Because of its nature, this is not the usual kind of article I write. In fact, I wrote the reversing part in less than a day. So, this is a very easy one. However, I think it is useful for people who need to reverse a Qt application and certainly wouldn't consider reading my other paper about Dynamic C++, which doesn't sound like a paper about Qt and, in fact, isn't a paper about Qt: the paragraph about Qt is only one among many others. Moreover, I haven't seen serious articles about this subject.

The first thing which needs to be considered when reversing Qt applications is what Qt brought to the C++ language. Events (inside the Qt framework) are just virtual functions, so nothing new there. This is not a C++ reversing guide. What is new in Qt are signals and slots, which rely on the dynamism of the Qt framework.

So, first thing I'm going to show how this dynamism works. The second part focus on reversing and, at that point, I will show how to obtain all the metadata one needs when disassembling a "Q_OBJECT" class.

أقرأ المزيد ...

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

13 إجابة على هذا السؤال .

  • 0

حتى هنا موجودة الهندسة العكسية :rolleyes:

جاري الاطلاع على الرابط ،،

و مشكور يا GM على الموضوع

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

هنا وفي كل مكان :D

الهندسة العكسية للكائنات شيقة .. خاصة اذا كنت تقوم بعمل Reversing على كائنات انت الذي كتبتها او لديك السورس لها .. يجعلك تفهم عمل المترجمات بشكل أعمق .

هناك كتاب جيد يتكلم عن هذا الموضوع اسمه : Reverse Engineering of Object Oriented Code .

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0
الهندسة العكسية للكائنات شيقة

اجمل شيء مع الهندسة العكسية ،، برامج الدوت نت فهي سهلة و واضحة .. طبعا اذا لم تكن مشوشة :lol:

هناك كتاب جيد يتكلم عن هذا الموضوع اسمه : Reverse Engineering of Object Oriented Code .

هل الكتاب مفيد؟؟

عموما جاري تحميل الكتاب الان.

تعديل:

رغم اني لا اعلم متى سأقرءة فالوقت مزدحم

تم تعديل بواسطه الاخير زمانه
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

ما يهمنى الان هو امشى مع الطريق فى Qt و ليس العكس :D ،، لكن جزء المقالة التى كتبتها اخى GM شيقة جداً

جارى القراءة

تم تعديل بواسطه Omar Eladel
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

قرأت الجزء الأول فقط من المقالة أعتقد اني بحاجة لخلفية بسيطة للهندسة العكسية و asm وشكرا لك .

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

مرسى على المقاله مستر GM

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

شكرا لكم .

الموضوع الذي ذكره في بداية المقالة سيتم طرحه خلال اسبوع او اثنين, أعتقد انه سيكون مقال فريد من نوعه عن خبايا الـOOP وبالأخص الـ++C .

سأقوم بالمتابعة لوضعه هنا حين يخرج الى النور, في حين أني نسيت فتفقدّوه على ntcore.com ;)

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0
المقال جاد جداّ :

Dynamic C++ Proposal

مشكور GM ،

قمت بطباعة المقال .. صراحة لم افهم شيء ،، لكن كانت القراءة مستعجلة و ليست بتركيز تام

ربما في المرة العاشرة سأعرف عن ماذا تتحدث المقالة :lol:

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

هكذا هي مقالاته من أدسم المقالات التي يمكن ان تراها .

اذا كنت مهتم بالـDotNET فراجع مقالاته ايضا عنها فمحتواها ذو جودة عالية .

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم و رحمة الله و بركاته,

شكراً للأخ GamingMasteR على الإشارة إلى هذا المقال الرائع :)

الحقيقة المقال دسم قليلاً, لأنه ما يقترحه الكاتب ليس برنامجاً أو أداة, بل إنه تطوير "للغة" ++C بإضافة الـ Dynamism, و لكن الكاتب (يعجبني رأيه في هذا الموضوع) اشترط أن التطوير الحاصل لا يجب أن ينتج لغة جديدة, و لكن يجب أن يكون تحت تصرف المبرمج كما تفعل Qt هذا الأمر :)

الـ Dynamism ؟؟؟

قبل أن أقول لك ما هو دعني أسألك سؤالاً ؟

كم عدد المكتبات المبرمجة بلغة C التي مرت عليك في حياتك البرمجية ؟

بالنسبة لي, رأيت عدداً لا يحصى, و ربما أكثر من عدد شعر رأسي :)

لغة C هي اللغة الأساسية في عالم الحاسوب لإنتاج المكتبات البرمجية. لأنها توفر model بسيط جداً للـ Compiled Code, مثال على ذلك لو ترجمنا أي دالة بأي مترجم C, فسنرى أن هيكلية الدالة التي ترجمت إلى لغة Assembly بسيطة جداً, لذلك تستطيع معظم لغات الـ scritpting استدعاء هذه المكتبات. لا تنسى أن Windows و Linux و Unix ووووووووووووووووووووووووووووووووووووووووووووووووووووووو كلهم تتم برمجتهم (حتى الآن) بلغة C. و لا يوجد فرع من فروع البرمجة إلا و تجد أكثر من مكتبة للغة C حاضرة فيه.

هيكلية كود الأسمبلي الناتج أو لنقل بشكل أصح هيكيلية البرنامج بعد الترجمة و وقت تشغيله في الذاكرة واضحة و بسيطة و يطلق على الهيكلية هذه Application Binary Interface ABI ,,

++C لا تختلف عن C في هذه المجال و حسب و لكن هذا يعتبر أحد عوامل القصور في هذه اللغة, فالأصناف على سبيل المثال class يختلف الكود الناتج عن ترجمتها من مترجم لآخر و حتى بين الإصدارات المختلفة للمترجم نفسه :)

في الحقيقة لا تستطيع القول بأنه قصور فلغة مثل ++C صممت لتتجاوز حالات القصور عن طريق تطبيق مفهوم الـ Tradeoffs أو المقايضات.

لغة ++C هي لغة شديدة الكبر في قلبها على عكس C و لكنها مع C في أنها لا توفر إلا أدوات لطرق البرمجة, فـ C توفر البرمجة الإجرائية, و ++C توفر ذلك أيضاً, و لكنها تقدم Models أخرى و هي الـ OOP و الـ Generic Programming,

و يمكنك كمبرمج استخدام احداها في برمجتك أو مزج الطرق الثلاثة سوياُ, و ++C تسمح لك بمزج برمجة الـ Low level و الـ High Level داخل هذه الـ Models أيضاُ, لذلك يتم تقديم التطويرات المقترحة في ++C على شكل library و ليس كـ Language Extenstion,

الكاتب بكل بساطة يقوم بإضافة واجهة موحدة للـ Objects, لغة Java مثلاً جميع الكائنات فيها ترث الكائن الأم Object.

في ++C يتجاوز المبرمجون مساوئ الأداء في لغة ++C عن طريق الـ Generic Programming و هذا ما تقوم به Qt, و استخدم الكاتب واجهة الكائن في Qt أصلاً.

لا أدري ماذا بعد :lol:

عموماً حتى الـ GC Garbage Collector صممت للغة ++C بنفس المفهوم و لكن مبرمجي ++C المحترفين لا يعتمدون عليها كثيراً لأن هناك الـ Profilers التي ستحل المشكلة بطريقة أفضل برأي معظمهم.

تحياتي ,,

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0
هكذا هي مقالاته من أدسم المقالات التي يمكن ان تراها .

اذا كنت مهتم بالـDotNET فراجع مقالاته ايضا عنها فمحتواها ذو جودة عالية .

شكرا اخي على التنويه ،، فعلا اطلعت على مقالاته ، من العناوين يبدو انها شيقة.

قمت بالاحتفاظ بها على الحاسب لقراءتها في اقرب فرصة ان شاء الله

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

جزاكم الله خيرا على الموضوع

شكرا لك اخى Khaled.Alshaya على مشاركتك القيمة جدا وجزاك الله كل خير

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .