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

سؤال فى ال

مغلق
بدأه ahabdeen في 6 نوفمبر 2004 · 42 رد · 2,774 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#26

مرحبا ,,,

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

كتابة كود إسمبلي بداخل C#.net أو c++.net

رغم أني لم أستخدم .net بعد ولكن أعتقد أنة ممكن تضمين كود إسمبلي

بنفس الطريقة في لغة السي القياسية

__asm
{
كود إسمبلي
}

مع ملاحظة أن _ تكتب مرتين _ _

والسبب أن كل اللغات المتطورة من لغة السي لا تتغير بها كلمات اللغة المحجوزة

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

----

بالنسبة للصورة التي عرضها أخي طارق ,,

أعتقد أنها طريقة عرض الأخطاء في مرحلة تنقيح البرنامج

سأقوم بمراجعة الموضوع ,,, وأضيف أي ملاحظة أجدها

-

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>

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

#27
اقتباس
أعتقد أنها طريقة عرض الأخطاء في مرحلة تنقيح البرنامج

شكراً jaas انا عارف و لكن ما قصدته اوضحه محمد

اقتباس
Hexadecimal display

When selected, displays integers in hexadecimal format rather than binary format. For more information see Changing the Numeric Format of Source Windows.

Allow hexadecimal input without prefix

When selected, the debugger information windows accept input as hexadecimal as the default (without the 0x prefix).

Show disassembly if source is not available

When selected, automatically shows the disassembly window when you try to debug code for which source is unavailable. This setting is turned off by default

يعنى هل من الممكن تعديل الكود الناتج من ال disassembly

Technical Lead Developer

My LinkedIn Profile

اللهم قنى شر الجهل و الجهلاء

( اقْتَرَبَ لِلنَّاسِ حِسَابُهُمْ وَهُمْ فِي غَفْلَةٍ مَّعْرِضُونَ ) {الأنبياء:1}

#28

أخي Jaas، بالنسبة للـ #C، فلا أعتقد أنه يمكن تضمين أي كود آخر في المحرر الخاص به.

إن كنت تقصد الـ Unsafe block فهذا شيء آخر.

طارق، أعتقد أن ما بالتعليق(disassembly) يقصد التحويل للـ MSIL و في هذه الحالة يكون من الممكن التعديل به.

رأس الحكمة الإيمان بالله

#29

بصراحه اصبت بالصداع امس و انا ابحث فى هذا الموضوع

Using Unmanaged code and assembler in C#

Technical Lead Developer

My LinkedIn Profile

اللهم قنى شر الجهل و الجهلاء

( اقْتَرَبَ لِلنَّاسِ حِسَابُهُمْ وَهُمْ فِي غَفْلَةٍ مَّعْرِضُونَ ) {الأنبياء:1}

#30

المثال فى ال CodeProject عبارة عن استدعاء دوال فى ملف dll زى ال WindowsApi

هو الى اكيد ان ال Resources بتكون فى مكان محدد فى الملف ال exe و طبيعى من السهل قراتها بس المشكلة فى التعديل عليها او اضافة Resources جديدة

ahabdeen.jpg

<marquee>

مش موجود بصفة دايمة للامتحانات

</marquee>

#31

فى مقالة بردو نفس الكلام

لازم يكون فى nativeDll فيها ال Function الزمة

اما ال Asm فى ال C# مش ممكن:s

http://www.dotnet247.com/247reference/msgs/40/202045.aspx

ahabdeen.jpg

<marquee>

مش موجود بصفة دايمة للامتحانات

</marquee>

#32
اقتباس
المشكلة فى التعديل عليها او اضافة Resources جديدة

لو فى برنامجك سهله قم بانشاء plugin اما استخدام ال plugin فى غير برنامجك بالدوت نيت فلا اعلم

Creating Plugins

Technical Lead Developer

My LinkedIn Profile

اللهم قنى شر الجهل و الجهلاء

( اقْتَرَبَ لِلنَّاسِ حِسَابُهُمْ وَهُمْ فِي غَفْلَةٍ مَّعْرِضُونَ ) {الأنبياء:1}

#33

انا كنت بفكر فى المثال المشروح فى ال MSDN الى موجدو فى ردى

لو اعمل ملف exe من الأول بلغة ال IL من ملف جاهز

يعنى اخد كل ال Methods و المتغيرات فى الملف الجاهز و ازود عليها ال Resources الى انا عايزها و اعمل ملف جديد

بس مش عارف الطريقة دى ممكن تمشى ولا لأ؟؟؟؟

ahabdeen.jpg

<marquee>

مش موجود بصفة دايمة للامتحانات

</marquee>

#34

آسف، الرد جاء متأخر،

اقتباس
بصراحه اصبت بالصداع امس و انا ابحث فى هذا الموضوع

هذه هي ضريبة العلم :)

بالنسبة للمقالة يا طارق فهي تتحدث عن الـ PInvoke و استخدام ملف DLL مكتوب بالاسمبلي في الـ #C و هذا متفق عليه حتى الآن.

أما عن كتابة كود اسمبلي او أي كود آخر بداخل محرر الـ #C، فللمرة الثالثة أقول لا يجوز هذا، لأن الـ Compiler الخاص بالـ #C لن يستوعب أي كود غير #C.

اقتباس
#How to call assembly in C

#Let's do an experiment with inline assembly in a DLL. I can not call assembly language from C# but I know I can call unmanaged DLLs from C.

و بالنسبة للـ PInvoke و الـ CCW فيتم الاستدعاء بكود #C عادي.

أرجو أن أكون قد وضحت ما أقصد.

رأس الحكمة الإيمان بالله

#35

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

الظاهر إن الموضوع تشعب ؟! خلونا نبدأ نقطة ... نقطة !

اقتباس
انا كل الى عندى ملف exe من غير الكود بتاعه يعنى مش حاعرف اعمله Compile

والى انا عايزه هو ازاى اغير ال Resources المتخزنة فيه

زى طريقة برامج التعريب؟؟؟؟؟

النقطة الأولى : أن البرنامج النهائي exe وبأي لغة كان مكتوب فإن ترتيبة واحد

بمعنى مقدمة دوس

مقدمة البرنامج PE

قسم الشفرة

قسم البيانات والمصادر

طريقة التغيير في الملف التنفيذي ؟ ومثال ملف المصادر

لنفرض أنك تريد تغيير صورة في برنامج آخر بضغطة زر ؟

أول خطوة : قرائة مقدمة الملف التفيذي PE وتسخرج عنوان بداية جدول المصادر

ودالة القرائة هي ReadFile وبإستخدم .net أعتقد

System.IO.FileStream.Read

وأفضل القرائة بالبايت

System.IO.FileStream.ReadByte

بعد أن نستخرج عنوان بداية جدول المصادر نقوم بنقل مؤشر القرائة إلى عنوان جدول المصادر بإستخدام الدالة SetFilePointer وبإستخدام .net

System.IO.FileStream.Position

أو

System.IO.FileStream.Seek

من خلال المعلومات الموجودة في جدول المصادر تستطيع أن تستخرج

عدد المصادر في الملف وأسمائها وأنواعها واللغة المستخدمة وأهم شيء عنوان بياناتها

بعد أن تحدد إسم المصدر ونوعة صورة تستخرج عنوان بداية محتويات المصدر

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

عن طريق دوال القرائة والكتابة

والآن كيف تعرف هذة العناوين في الملف التنفيذي , الحل عن طريق معرفة تقسيم الملف

وهذا الموضوع يفي بالغرض ,, وبالأخص القسم 3 جدول المصادر

/index.php?showtopic=42961

وفي النهاية ستبقى مشكلة واحدة وهي

من النادر إستبدال صورة بصورة أخرى متساوية في الحجم ,, أكيد قد يختلف الحجم

والملف التنفيذي محدد لكل صورة حجم معين لا يتغير ؟ فما هو الحل

برامج التعريب لجأت لهذا الحل وأعتقد أنة الحل الوحيد

قرائة كامل الملف التنفيذي ونقلة للذاكرة .. تغيير الصورة كما هو موضح

وبعد ذلك تعيد ترتيب خصائص جدول المصادر للصورة فقط

تغيير حجم بيانات الصورة

تغيير حجم قسم البيانات والمصادر للبرنامج

وأخيرا إعادة كتابة البرنامج فوق الملف التنفيذي لينتج برنامج جديد

أما الطريقة المذكورة في أول كود في هذا الموضوع وهي

private void button1_Click(object sender, System.EventArgs e)
 {
  System.Reflection.Assembly a = System.Reflection.Assembly.LoadFile(Environment.CurrentDirectory + "\\"+ "ClassLibrary1.dll");
  Bitmap b = new Bitmap(a.GetManifestResourceStream("ClassLibrary1.Logo.jpg"));
  pictureBox1.Image = b;
 }

فهذة الطريقة لا تكتب في مكتبة الربط dll وهي عبارة عن تحميل للمكتبة بإستخدام

الدالة LoadLibrary وبعد ذلك بحث عن المصدر بإستخدام FindResource

وقرائة محتوى الصورة ونقلها إلى برنامجك

وأكيد مختصرين كل الدوال بالخدمة GetManifestResourceStream

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

لأنة يحتوي على عنوان الصورة + محتواها .. لماذا لا يتم التغيير مباشرة

السبب الأول أن العنوان هو فعلا عنوان الصورة .. ولكن في الذاكرة وليس في البرنامج

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

وفي النهاية لتغيير محتوى ملف تنفيذي يجب أن تعرف تفاصيل الملف exe

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

بالنسبة لكود الإسمبلي والسي#

أنا لا أملك مترجم سي# للتجربة ولكن توقعت أن تكون الكلمة __asm

محجوزة

عندما تكتب هذة الكلمة ؟ هل هي معرفة ؟ هل تظهر بلون مختلف

معنا ذلك أن المترجم يدعم الإسمبلي

أما إذا كانت غير معرفة فمعناة أنة لايدعم الكتابة بالإسمبلي

أو قد تكون لة تعريف آخر ,, الله أعلم

المهم : هل كلمة asm معرفة أم لا ,, يمكن نصل إلى نتيجة ..

-

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>

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

#36

شكرا على الرد

الفكرة شكلها كويسة بس صعبة جدا

انا مغرفش اى حاجة عن ال ASM

بس فى خا ممكن تعملها مكتبة dll و تبقى كده اسهل

هيا فكرة البرنامج زى برامج ال Setup

يعنى فى برنامج جاهز native exe معمول باى لغة برمجة المهم ان كل مرة يتغير الملفات المفروض يتعملها Setup فى ال Resources للملف الجاهز

و طبعا الملف فى بداية التنفيذ حيعمل extract لل Resources دى

ahabdeen.jpg

<marquee>

مش موجود بصفة دايمة للامتحانات

</marquee>

#37

مافيش اى جديد؟؟؟؟

ahabdeen.jpg

<marquee>

مش موجود بصفة دايمة للامتحانات

</marquee>

#38

من وجهة نظرى المتواضعه لا يوجد سوى استخدام الباتشات كما فى مقالة JAAs

Technical Lead Developer

My LinkedIn Profile

اللهم قنى شر الجهل و الجهلاء

( اقْتَرَبَ لِلنَّاسِ حِسَابُهُمْ وَهُمْ فِي غَفْلَةٍ مَّعْرِضُونَ ) {الأنبياء:1}

#39

ok

بس المشكلة مين الى يعرف Asm و ممكن يعمل مكتبة .dll?????

و يكون فيها دوال جاهزة لتغير ال res او للتعديل عليها؟؟؟؟

ahabdeen.jpg

<marquee>

مش موجود بصفة دايمة للامتحانات

</marquee>

#40

لم أقرأ الموضوع كاملا ولكن أعتقد أن الاقتراح الذي تفضل به jaas لتغيير الـresources لن ينجح..

بالفعل الملفات التنفيذية في دوت نيت تتبع PE Format ولكني لست متأكدا أن الـresources يتم ربطها بالملف التنفيذي بنفس الطريقة المتبعة في win32.. اللهم الا إذا كان الربط يتم مع .res بواسطة link.exe.. وفي هذه الحالة تسمى unmanaged resources ويمكن التعامل معها كما اقترح jaas..

الطريقة الثلى لتصميم البرامج في دوت نيت هي جعل الresource manager يقوم بتحميل الـresource الصحيح للـlocale الحالي.. من الممكن أ يتم ذلك بطريقة أوتوماتيكية، ولكن عندها لن يكون الحديث عن تغيير الـresources ولكن ربما عن كيفية تصميم برامج يمكن "مركزتها"

#41

طبيعى ان نستخدم Native Exe مش .net علشان تشتغل على كل الأجهزة

علشان كده انا بسأل عن ال asm???

ahabdeen.jpg

<marquee>

مش موجود بصفة دايمة للامتحانات

</marquee>

#42

زى مبدأ ال Self exteractor او ال Setup Files

بيبقى فى ملف واحد exe و بيعمل extract ل ال Resources Files

ahabdeen.jpg

<marquee>

مش موجود بصفة دايمة للامتحانات

</marquee>

#43
كيفية إضافة بيانات إلى الملف التنفيذى دون التأثير على عمل الملف

Technical Lead Developer

My LinkedIn Profile

اللهم قنى شر الجهل و الجهلاء

( اقْتَرَبَ لِلنَّاسِ حِسَابُهُمْ وَهُمْ فِي غَفْلَةٍ مَّعْرِضُونَ ) {الأنبياء:1}

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

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