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

::: الـبـرمــــجـة بلـغة الآلــة مـن خـلال لـغـة C :::

بدأه The Hidden Ghost في 22 نوفمبر 2012 · 3 رد · 1,667 مشاهدة · في لغة C و ++C
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

الــسلام عليكم ورحمة الله تعالــــى و بـركاتــه ،،،

smile.gif

بسم الله الرحمــــــــان الرحــيــــــــــــــــــــــــــم ،،،

اقتباس

عذرا يا عقلي، ما لك من غبي سواي

فكلما حلمت بالتفكير تجدني مفعما بالغباوة !

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

هدموا الصبا و ما علمونا إلا مرارة الهراوة

عذرا، فما لقنونا شيئا سوى أن قالوا حروف العلة "واي"

وقالوا ادرسوا التشريح ففي السوق أسماك في قمة الطراوة

عذرا، فليس العيب في وما خذلوا سوى أبواي

أوهمونا بكثرة المدارس و المعاهد ، وما رأينا غير الحفاوة ؟

عذرا، فما شاهدت في مناهجنا غير الخرافات و خير دليل أحجيات الساموراي

وفي النهاية ، يتساءلون : لماذا تشبع التلاميذ بالشقاوة ؟

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

وحتما ستدركون من المسؤول عن تفشي الغباوة !!!

عندما عزمت على تعلم البرمجة، لم أكن واثقا من هذا الأمر فكل ما أعرفه عنها بدأ في السنة الأولى من التعليم الثانوي حيث درسنا القليل القليل عن الخوارزميات و بعض الخزعبلات عن لغة الباسكال ، كان عمري أنذاك 16 سنة . وبما أنه لا يوجد معاهد حقيقية لتعلم البرمجة في بلدنا ( المغرب dry.gif ) فكان لزاما علي أن أكمل المشواي لوحدي ضاربا بكل التخوفات عرض الحائط . عندما كان يمر يوم وقد تعلمت شيئا جديدا أحس بفرحة غامرة لأني أنذاك كنت أعلم علم اليقين أنني أنا من فعل هذا و بعزيمتي استطعت أن أتعلم هذا ، لكن كما قال الأخ مصطفى في مقالته : ~ البرمجة بالأدوات المتوفرة لا تساوي الإبداع ~ . وليعلم أنني متوفق و مؤيد لهذه الفكرة ، فالبرمجة بدون إبداع كالشمس بلا شعاع laugh.gif ...

كنت أطمح دائما إلى أن أبرمج دوالا خاصة بي مثل دوال الطباعة و الإدخال ... إلخ ، لكن مع مرور الوقت تطورت أمنياتي و تكونت عندي أفكار جنونية smile.gif تمث في كيفية البرمجة بلغة الآلة أي 0 و 1 . سيظن البعض أنني مخبول و مجنون ، لكن الحقيقة هي هذه لقد تمكنت من برمجة برنامج بلغة الآلة من خلال دالة أنشأتها بلغة السي تحول سلسلة حرفية مكون من الأصفار و الأحاد إلى الديسمال و من تم كتابة التعليمة في تطبيق com.* أو exe.*

اعتمدت على طريقة في غاية البساطة لإنشاء برنامج بلغة الآلة وفي نفس الوقت للحصول على برنامج صغير الحجم

لا يحتوي على تلك المعلومات الزائدة التي نجدها جلية عندما نترجم برامجا بمترجمات مايكروسوفت ، أتحث هنا عن تلك العابرة اللئيمة التي نغصت علينا حلمنا في الحصول على تطبيق صغير الحجم و التي ما فتئت تزيد الطينة بلة و تجعل من PE HEADER وحشا ضاريا يهدد مستقبلنا البرمجي . تلك العبارة هي "This Program can't Run in DOS "

فأسأل نفسي لماذا يكدسون برامجنا بهذه العبارة الغبية التي تشغل عدة بايتات محترمة من تطبيقنا ؟ wink.gif سأضيف هذه

العبارة إلى قاموس التراكمات الدماغي . لأنني قد شاهدت أحد المواقع تطلب منك إدخال Captcha و عندما تدخلها بلين و رقة تفاجئك بالضغط على زر إسمة أنا إنسان "Iam Human " و هل أنا حيوان ؟

ولكي لا نخرج عن سياق الموضوع ، فسأسهب في شرح فحوى الموضوع smile.gif

- التحويل بين الهكس و البيناري :

لا يخفى على أحد منا أن تعليمات لغة الأسمبلي مثل التعليمة mov يمكن تمثليها بالهكس على الشكل الآتي : B8

وبما أن B8 بالبيناري هي 10111000 فإن التعليمة mov بلغة الآلة هي 10111000 . جيد، الآن كل ما علينا هو معرفة

طريقة التحويل من الهكس إلى لغة الآلة ،،، و هو ما سنعرفه بعد قليل .

نعلم أن لغة الآلة أي اللغة التي تتعامل بالنظام الثنائي تقبل 0 و 1 و بالتالي فلكل منها 1بت و نعلم أن 1 بايت يساوي

8 بت :


1byte = 8 bits

يعني الرقم 1 يجب أن يمثل هكذا : 00000001 أي 8 بت لأن كل تعليمة تأخد 1 بايت ، حسنا الآن لكي نستطيع التحويل من الهكس إلى البيناري يجب على أن نقسم الرقم (بالهكس) إلى شطرين أو ما يعرف بالنيبل و يساوي نصف بايت أي 4 بت :


nibble = half byte = 4bits

smile.gif

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

52gkQ.png

فكما يبدو فهو سهل الحفظ ، و لتوضيح مدى سهولة التحويل نستدل بهذا المثال التوضيح ،،،

لدينا الرقم B8 و الذي هو التعليمة mov بالأسمبلي ، نريد تحويل هذا الرقم إلى البيناري ، إذا علينا تقسيمه إلى نصفين لأنه مكون من رقمين (إذا كان الرقم مكون من أكثر من رقمين فنقسمه على عددها أي نضع كل رقم لوحده ) .

الآن أصبح لنا رقمان هما B و 8 نذهب إلى الجدول ونأخذ مقابل كل رقم كالتالي :


Number B in Hex = 1011 in Binary
Number 8 in Hex = 1000 in Binary
Then B8 in Hex = 10111000 in Binary

laugh.gif

كل شيء واضح حتى الآن ،،،،

بقي لنا الآن أن ننجز دالة تحاول سلسلة حرفية من أرقام البيناري إلى الديسمال أو الهكس ، لأنه في النهاية ستتحول

البايتات المكتوبة في البرنامج إلى لغة الآلة . و ها هي ذي دالتنا الموعودة المجنونة الخارقة للعادة واسمها

BINARY__ laugh.gif


#include <stdio.h>

/* 00000000 ax => MOV AX,something => B8 something AX
00100000 cx => MOV CX,something => B9 something CX
01000000 dx => MOV DX,something => BA something DX
01100000 bx => MOV BX,something => BB something BX
10000000 sp
10100000 bp
11000000 si
11100000 di
*/

int power(int n,int pow);
int To_Dec(char binary[]);
int strlen(char *src);

int strlen(char *src)
{
int pcount = 0;
while( pcount[src] != '\0' )
pcount++;
return pcount;
}
int power(int n,int pow)
{
int p = 1;
int ret = 1;
if(pow == 0)
return 1;
else{
for(p;p<=pow;p++)
ret = ret * n;
}
return ret;
}

int __BINARY(char binary[])
{
int len = strlen(binary);
int dec = 0;
int i = 0;
while(i<len)
{
if(binary == '0')i++;
else {
dec += 1 * power(2,len-(i+1));
i++;
}
}
return dec;
}

هناك تعليق في السورس نسيت ذكره سابقا وهو أن مسجلات المعالج لديها كود بالبناري خاص بها كما هو موضح في

التعليق أعلاه ،،،

الآن ، سأذكر بعض المسلمات الجاري بها العمل و هي كالتالي ،،،

التعليمة INT في الأسمبلي عندما تحول إلى الهكس تصبح CD و لمعرفة المزيد فعليكم باستعمال الHex Editor فقط .

إلى هذه الساعة لم نقدم شيئا جديدا ، فكل ما ذكرناه آنفا هو تحويلات هستيرية تحاول العودة بنا إلى زمن مبرمجي ما قبل الحاسوب ، وكيف كانت معاناتهم قاسية عندما يكتبون برنامجا يطبع * أنا حمزة * مثلا wacko.gif

الآن سننجز برنامجا بتعليمات لغة الآلة فاستعدوا جيدا laugh.gif ما كل هذا التهويل؟؟؟

برنامجنا البدائي يطبع بيكسل باللون الأخضر على الشاشة smile.gif ، أولا نستدعي ملفنا الرأسي الذي يحوي دالتنا ثم بعد ذلك نشرع في كتابة Writing باللغة الحاسوبية الثنائية ...

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

QQcWR.png

الآن لم يبقى لنا إلا أن نكتب برنامجا على هذا المنوال :

#include <stdio.h>
#include "MachineCode.C" // for My __BINARY() Function

//10111000 0xB8 /* MOV 16 bit*/
//10110010 0xB4 /* MOV High 8 bit */
//10110010 0xB2 /* MOV Low 8 bit */
//00010011 0x13 /* 13h */
//00000000 0x00 /* AX */
//11001101 0xCD /* INT */
//00010000 0x10 /* 10h */

int main(){
   	FILE *fw = fopen("ShowPixel.exe","wb");
if(fw != NULL){

   	fprintf(fw,"%c",__BINARY("10111000")); // MOV B8
   	fprintf(fw,"%c",__BINARY("00010011")); // 13h
   	fprintf(fw,"%c",__BINARY("00000000")); // AX register
   	fprintf(fw,"%c",__BINARY("11001101")); // INT
   	fprintf(fw,"%c",__BINARY("00010000")); // 10h */

   	fprintf(fw,"%c",__BINARY("10111000")); // MOV B8
   	fprintf(fw,"%c",__BINARY("00000010")); // ax,02h
   	fprintf(fw,"%c",__BINARY("00001100")); // ax,0ch

   	fprintf(fw,"%c",__BINARY("10111011")); // MOV BB
   	fprintf(fw,"%c",__BINARY("00000001")); // bx,01h
   	fprintf(fw,"%c",__BINARY("00000000")); // AX register
   	fprintf(fw,"%c",__BINARY("10111001")); // MOV B9
   	fprintf(fw,"%c",__BINARY("00010000")); // cx,10h
   	fprintf(fw,"%c",__BINARY("00000000")); // AX register
   	fprintf(fw,"%c",__BINARY("10111010")); // MOV BA
   	fprintf(fw,"%c",__BINARY("00010000")); // dx,10h
   	fprintf(fw,"%c",__BINARY("00000000")); // AX register
   	fprintf(fw,"%c",__BINARY("11001101")); // INT
   	fprintf(fw,"%c",__BINARY("00010000")); // 10h */

   	fprintf(fw,"%c",__BINARY("10111000")); // MOV
   	fprintf(fw,"%c",__BINARY("00000000")); // getchar
   	fprintf(fw,"%c",__BINARY("00000000")); // AX register
   	fprintf(fw,"%c",__BINARY("11001101")); // INT
   	fprintf(fw,"%c",__BINARY("00010110")); // 16h
   	fprintf(fw,"%c",__BINARY("11001101")); // INT
   	fprintf(fw,"%c",__BINARY("00100000")); // 20h 

}
fclose(fw); 
printf("File is Generated !!!");
getchar();
return 0;
}

الكود يعبر عن نفسه ، فتحنا التطبيق تم كتبنا فيه البايتات التي نحبها و من تم أغلقنا البرنامج

wink.gif

و أبشركم أن حجم البرنامج لا يتعدى 26Octets مما يجعله برنامج صغير الحجم مقارنة بالبرامج التي يترجمها المجمع nasm على سبيل المثال mad.gif ...

و هنا تطبيق آخر من العصر الحجري يطبع الحروف ABCDEF :


#include <stdio.h>
#include "MachineCode.C"

int main(){
FILE *fw = fopen("ABCDEF_Binary.exe","wb");
if(fw != NULL){


//char Alphabet[] = "1011010000000010101100100100000111001101001000011011001001000010110011010010000110110010010000111100110100100001101100100100010011001101001000011011001001000101110011010010000110110010010001101100110100100001";
// This Program in HEX : B402B241CD21B242CD21B243CD21B244CD21B245CD21B245CD21B80000CD16CD20

fprintf(fw,"%c",__BINARY("10111000")); // MOV B8
fprintf(fw,"%c",__BINARY("00010011")); // 13h
fprintf(fw,"%c",__BINARY("00000000")); // AX register
fprintf(fw,"%c",__BINARY("11001101")); // INT
fprintf(fw,"%c",__BINARY("00010000")); // 10h

fprintf(fw,"%c",__BINARY("10110100")); // MOV B4
fprintf(fw,"%c",__BINARY("00000010")); // 02h write a character on screen
fprintf(fw,"%c",__BINARY("10110010")); // MOV B2
fprintf(fw,"%c",__BINARY("01000001")); // A
fprintf(fw,"%c",__BINARY("11001101")); // INT
fprintf(fw,"%c",__BINARY("00100001")); // 21
fprintf(fw,"%c",__BINARY("10110010")); // MOV B2
fprintf(fw,"%c",__BINARY("01000010")); // B
fprintf(fw,"%c",__BINARY("11001101")); // INT
fprintf(fw,"%c",__BINARY("00100001")); // 21
fprintf(fw,"%c",__BINARY("10110010")); // MOV B2
fprintf(fw,"%c",__BINARY("01000011")); // C
fprintf(fw,"%c",__BINARY("11001101")); // INT
fprintf(fw,"%c",__BINARY("00100001")); // 21
fprintf(fw,"%c",__BINARY("10110010")); // MOV B2
fprintf(fw,"%c",__BINARY("01000100")); // D
fprintf(fw,"%c",__BINARY("11001101")); // INT
fprintf(fw,"%c",__BINARY("00100001")); // 21
fprintf(fw,"%c",__BINARY("10110010")); // MOV B2
fprintf(fw,"%c",__BINARY("01000101")); // E
fprintf(fw,"%c",__BINARY("11001101")); // INT
fprintf(fw,"%c",__BINARY("00100001")); // 21
fprintf(fw,"%c",__BINARY("10110010")); // MOV B2
fprintf(fw,"%c",__BINARY("01000110")); // F
fprintf(fw,"%c",__BINARY("11001101")); // INT
fprintf(fw,"%c",__BINARY("00100001")); // 21

fprintf(fw,"%c",__BINARY("10111000")); // MOV
fprintf(fw,"%c",__BINARY("00000000")); // getchar
fprintf(fw,"%c",__BINARY("00000000")); // AX register
fprintf(fw,"%c",__BINARY("11001101")); // INT
fprintf(fw,"%c",__BINARY("00010110")); // 16h
fprintf(fw,"%c",__BINARY("11001101")); // INT
fprintf(fw,"%c",__BINARY("00100000")); // 20h



/*********** this Program in Hex *************/
//fprintf(fw,"%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c",
//0xB4,0x02,0xB2,0x41,0xCD,0x21,0xB2,0x42,0xCD,0x21,0xB2,0x43,0xCD,0x21,0xB2,0x44,0xCD,0x21,0xB2,0x45,0xCD,0x21,0xB2,0x46,0xCD,0x21,0xB8,0x00,0x00,0xCD,0x16,0xCD,0x20);

/********** EOF **********/
}
fclose(fw);
printf("File is Generated !!!");
getchar();
return 0;
}

يمكن كتابة نفس البرنامج بتعليمة واحدة لا غير :


fprintf(fw,"%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c",0xB4,0x02,0xB2,0x41,0xCD,0x21,0xB2,0x42,0xCD,0x21,0xB2,0x43,0xCD,0x21,0xB2,0x44,0xCD,0x21,0xB2,0x45,0xCD,0x21,0xB2,0x46,0xCD,0x21,0xB8,0x00,0x00,0xCD,0x16,0xCD,0x20);

laugh.gif ...

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

وفي الختام لم يبقى لي سوى أن أشكركم على حسن المتابعة و إلى اللقاء

Machine Language Project By Hamza Qdider.zip

2
rS3eY.png
#2

كلمة واحدة فقط تصف الموضوع .... رائع ..

أنت تفتح لي أبواب الآهات القديمة يا حمزة الخطير wink.gif ....

هل تعلم ماذا فعلت لحل مشكلة ال PE HEADER قمت بنسخه وحفظه في مصفوفة ... ثم صرت أكتب التعليمات التي أريدها بعد ذلك ,,,

وبعد أن فتحت خردة برامجي القديمة وجدت ما أبحث عنه .,..

أولا هذا برنامج يقوم بتفصيص ملفات exe و تحويلها إلى hex ولكنه لا يكتفي بهذا بل هو يكتب برنامجا يقوم بإنتاج الملفexe من جديد ... بطريقة مشابهة جدا لطريقتك ...

أرجو أن يعجبك ...

#include<iostream.h>
#include<fstream.h>
void main()
{
	ofstream out("out.cpp");
	ifstream in ("1.exe",ios::binary);
	out<<"#include<fstream.h>\n#include<iostream.h>\nvoid main(){\nofstream exe(\"2.exe\",ios::binary);\nchar your_exe[]={";
	for(int i=0;!in.eof();i++)
	{
		out<<"0x"<<hex<<(in.get());
		out<<',';
		if(i%23==0)out<<endl;
	}
	out.seekp(-1,ios::cur);
	out<<"};\n";
	out<<"exe.write(your_exe,sizeof(your_exe));\n}";
}

وإليك محاولتي منذ سنة تقريباً ... لا أعرف إذا كان هذا البرنامج لا يزال يعمل أو لا ... ولكن فيه تفصيص لل PEHEADER ثم مصفوفة خاصة لتكتب كودك بلغة الآلة ...

أرجو أن تستفيد منه ( اقرأه فقط .. وستستفيد بإذن الله )

#include<fstream.h>
#include<iostream.h>
void main(){
ofstream exe("3.exe",ios::binary);
char your_exe[]={
0x4d,0x5a,0x90,0x0,0x3,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0xff,0xff,0x0,0x0,0xb8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,/*offset to pe signature*/0xa8,0x0,0x0,0x0/**/,0xe,0x1f,0xba,0xe,0x0,0xb4,
0x9,0xcd,0x21,0xb8,0x1,0x4c,0xcd,0x21,0x54,0x68,0x69,0x73,0x20,0x70,0x72,0x6f,0x67,0x72,0x61,0x6d,0x20,0x63,0x61,
0x6e,0x6e,0x6f,0x74,0x20,0x62,0x65,0x20,0x72,0x75,0x6e,0x20,0x69,0x6e,0x20,0x44,0x4f,0x53,0x20,0x6d,0x6f,0x64,0x65,
0x2e,0xd,0xd,0xa,0x24,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x5d,0x17,0x1d,0xdb,0x19,0x76,0x73,0x88,0x19,0x76,0x73,
0x88,0x19,0x76,0x73,0x88,0xe5,0x56,0x61,0x88,0x18,0x76,0x73,0x88,0x52,0x69,0x63,0x68,0x19,0x76,0x73,0x88,0x0,0x0,
0x0,0x0,0x0,0x0,0x0,0x0,/*PE*/0x50,0x45,0x0,0x0/*start PE Signature*/,0x4c,0x1,0x1,0x0,0x99,0xf2,0xc7,0x4f,0x0,0x0,0x0,0x0,0x0,
0x0,0x0,0x0,0xe0,0x0,0xf,0x1,0xb,0x1,0x5,0xc,0x0,0x2,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
/*address of entry point*/0xa,0x10,0x0,0x0/**/,0x0,0x10,0x0,0x0,0x0,0x20,0x0,0x0,/*image base*/0x0,0x0,0x1,0x0/**/,0x0,0x10,0x0,0x0,0x0,0x2,0x0,
0x0,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20,0x0,0x0,0x0,0x2,
0x0,0x0,0x0,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x0,0x0,0x10,0x0,0x0,0x10,0x0,0x0,0x0,0x0,0x10,0x0,0x0,
0x10,0x0,0x0,0x0,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
0x0,/*.text.*/0x2e,0x74,0x65,0x78,0x74,0x0,0x0,0x0/*text Section*/,/*VitualSize*/0x2e,0x0,0x0,0x0/**/,
/*Virtual Address*/0x0,0x10,0x0,0x0/**/,0x0,0x2,0x0,0x0,0x0,0x2,
0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20,0x0,0x2,0x60,0x0,0x0,0x0,0x0,0x0,
0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
0x0,0x0,0x0,0x0,0x0};
char your_assembly_code[]={
0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0};
exe.write(your_exe,sizeof(your_exe));
exe.write(your_assembly_code,sizeof(your_assembly_code));
}

في النهاية أرجو لك التوفيق من كل قلبي ... أخوك مصطفى wink.gif

اقتباس

كنت أريد كتابه بعض الأبيات هنا ..ولكن مخي اتقفل خلاص laugh.giflaugh.gif

_______________________________________________________

كتعليق فني على موضوعك ... بالنسبة للمقاطعات : أظن أنها لم تعد موجودة في حواسيب 32 بت ... فقط في 16 وما قبل (هذا ما أذكره من آخر مرة قرأت فيها أسمبلي wink.gif)

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

ولكن كمحاولة بالفعل رائعة .. جزاك الله خيراً ..

بالتوفيق أخي الحبيب

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

1
#3

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

rS3eY.png
#4

أولا شكرا لك أخي مصطفى على الرد الأكثر من رائع صراحة laugh.gif ...

لقد حفظت سورساتك الذكية لأستفيذ منها لاحقا ، عندما أختلي بها لوحدها ههههsmile.gif

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

شكرا لك مرة أخرى أخي الحبيب مصطفى ،،،

والسلام عليكم ورحمة الله تعالى وبركاته ،،، smile.gif

rS3eY.png

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