• 0
KnownH3

محاكاة السيرفرات " الالعاب الاونلاين "

سؤال

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

 

أصحاب الخبرة سؤال بسيط

 

من فين نقدر نبدأ بعد تعلم أساسيات البرمجة لـمعرفة محاكاة السيرفرات او Server Emulation

 

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

 

اللي اعرفه نظريا فقط ان بيتم معرفة الـ Packets المرسلة للسيرفر وتحليلها

 

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

 

هل يوجد شرح لها ؟

 

او اي شئ نبدأ به ؟

0

شارك هذا الرد


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

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

  • 0
من فين نقدر نبدأ بعد تعلم أساسيات البرمجة لـمعرفة محاكاة السيرفرات او Server Emulation

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

ثانيا: لابد ان تعرف اللعبة التى تريد محاكاتها.

ثالثا: تقوم بعمل Reserving Engineering للعبة لمعرفة المحتويات التى يتم إرسالها للسرفر و الهيئة التى تكون عليها فبعض الألعاب تقوم بضغط المحتويات او إهمال بعضها عند الإرسال لتقليل الكمية المرسلة.

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

خامسا: معرفتك بنوع البيانات التى يتم إرسالها و إستقبالها يعنى انه اصبح لديك واجهة الإتصال بين اللعبة و السرفر ح ينها يمكنك برمجة سرفر ليقوم بإستقبال تلك البيانات و إرسال الأخرى بناءا على ما تعلمت.

سادسا: كيفية عمل السرفر و كيف سينظم محتوياته و كيف سيقوم بإداراتها هو أمر يعود إليك طالما ان واجهة الإتصال مع اللعبه صحيحة.

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

 

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

 

هذا المقال يشرح ماهية الـ server emulator.

 

 

و الله ولي التوفيق

2

شارك هذا الرد


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

مثال متواضع

struct SPlayer{	DWORD PID;	DWORD X;	DWORD Y;	DWORD Z;	BYTE Classe;	char name[255];};SPlayer Player[500]={0};struct SMob{	DWORD MID;	DWORD X;	DWORD Y;	DWORD Z;	BYTE Classe;	DWORD HP;};SMob Mob[500]={0};
if (packet[2] == 0x32){	//player appear	DWORD id;	memcpy((void*)&id,(void*)((DWORD)packet+3),4);	char name[255]={0};	memcpy((void*)&name,(void*)((DWORD)packet+7),16);	printf("Player: [ID: %d Name: %s]\n",id,name);	//ADD PLAYER	int i;		for (i=0;i<500;i++)		{			//check if x =0			if (Player[i].X == 0)			{				memcpy((void*)&(Player[i].name),(void*)&name,16);				Player[i].PID=id;				int aftername;				aftername=strlen(Player[i].name);				//insert COORDINATES				memcpy((void*)&(Player[i].Classe),(void*)((DWORD)packet+7+aftername+1),1);				memcpy((void*)&(Player[i].X),(void*)((DWORD)packet+7+aftername+2),4);				memcpy((void*)&(Player[i].Y),(void*)((DWORD)packet+7+aftername+2+4),4);				memcpy((void*)&(Player[i].Z),(void*)((DWORD)packet+7+aftername+2+4+4),4);				printf("C: %d X: %d Y:%d Z:%d\n",Player[i].Classe,Player[i].X,Player[i].Y,Player[i].Z);				playerx+=1;				break;			}		}}if (packet[2] == 0x33){//mob apear	int i;	for (i=0;i<500;i++)	{		//check if x =0		if (Mob[i].X == 0)		{			DWORD id;			memcpy((void*)&id,(void*)((DWORD)packet+3+2),4);			Mob[i].MID=id;			memcpy((void*)&(Mob[i].Classe),(void*)((DWORD)packet+3),2);			memcpy((void*)&(Mob[i].X),(void*)((DWORD)packet+3+4+2),4);			memcpy((void*)&(Mob[i].Y),(void*)((DWORD)packet+3+4+2+4),4);			memcpy((void*)&(Mob[i].HP),(void*)((DWORD)packet+3+4+2+4+4+1+1),2);			printf("Mob: %d X %d Y %d Z %d HP %d\n",Mob[i].Classe,Mob[i].X,Mob[i].Y,Mob[i].Z,Mob[i].HP);			mobsx+=1;			break;		}	}}return 0;}
تم تعديل بواسطه 3mr
0

شارك هذا الرد


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

شكرا لك ..

 

لكن حضرتك لم تجب عمـا أريد

0

شارك هذا الرد


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

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

ثانيا: لابد ان تعرف اللعبة التى تريد محاكاتها.

ثالثا: تقوم بعمل Reserving Engineering للعبة لمعرفة المحتويات التى يتم إرسالها للسرفر و الهيئة التى تكون عليها فبعض الألعاب تقوم بضغط المحتويات او إهمال بعضها عند الإرسال لتقليل الكمية المرسلة.

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

خامسا: معرفتك بنوع البيانات التى يتم إرسالها و إستقبالها يعنى انه اصبح لديك واجهة الإتصال بين اللعبة و السرفر ح ينها يمكنك برمجة سرفر ليقوم بإستقبال تلك البيانات و إرسال الأخرى بناءا على ما تعلمت.

سادسا: كيفية عمل السرفر و كيف سينظم محتوياته و كيف سيقوم بإداراتها هو أمر يعود إليك طالما ان واجهة الإتصال مع اللعبه صحيحة.

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

 

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

 

هذا المقال يشرح ماهية الـ server emulator.

 

 

و الله ولي التوفيق

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

0

شارك هذا الرد


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

 

سادسا: كيفية عمل السرفر و كيف سينظم محتوياته و كيف سيقوم بإداراتها هو أمر يعود إليك طالما ان واجهة الإتصال مع اللعبه صحيحة.
0

شارك هذا الرد


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

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

فما اعتقد انك تستفيد من المحاكاة

الا بحالة انك فكيت التشفير و حماية البياتات

وهذا امر اعتقد انه صعب

!

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
زوار
This topic is now closed to further replies.

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

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