وليه تنزل sro_client لما ممكن تعملها بنفسك فى ال sro_client بتاعك
تابع معايه الشرح وركز اوى لانه صعب عشان ده جزء من الهندسة العكسية :
1- عشان برضو تكون فاهم طبعا Silkroad بتعتمد اعتماد كلى على فيلات ال pk2 ده بالنسبة للclient
طب وايه هى ال pk2 ؟ .. ال pk2 بتنقسم لقسمين
- القسم الأول: ده المسئول عن ربط الحاجات العامة اللى مسئولة عن تشغيل اللعبة .. ومسئول عن الحاجات الظاهرية للعبة (GUI) .. ده غير اكبر شىء اللى هو ال packets
- القسم الثانى: هو ده بقى المسئول عن ال packets وال parsing بتاعها .. طب ايه هى ال packets ؟ دى اى شىء بيتم فى السيرفر بيكون ليه packet زى الشخصية وهى بتمشى .. ال login .. ال Attak الخ .. اى شىء بيتم
2- طب فهمنا ال pk2 هنعدل بقى على انهو قسم ؟ .. هنعدل على القسم الاول .. ليه عشان اللغة دى شىء ظاهرى زى مانا قولت
3- هتعوزعشان تعمل الموضوع ده : برنامج OllyDbg 1.10
4- اول شىء هتفتح ال sro_client فى البرنامج وتسيبو يحمل .. بعد كده دوس كليك يمين فى اى حته فاضية وهات “Search for -> All referenced text strings”.
5- هيظهرلك نافذة جديدة .. دوس Home عشان تطلع لأول سطر .. بعد كده دوس كليك يمين وهات “Search for text”.
6- هتكتب فيها كلمة English و OK .. أول نتيجة هتطلعلك هتدوس عليها Double Click
7- كده انت دلوقتى فى المكان اللى فيه اللغات بتاعت الجيم .. واللى مربوطة بالملف Type.txt فى الميديا
8- دلوقتى دور على العربى .. هتلاقى جمبو لاين اوله JNZ هتدوس على ال Spacebar وتغير ال JNZ دى ل JMP .. كده انت خليت ال Client اما يشوف ال Line ده يعملو SKIP بمعنى يسيبو منه .. بعد كده دوس Assemble هتلاقى ال Line اتغير
9- دلوقتى هتروح للمكان اللى فيه ال English هتلاقى لاين برضو اوله JNZ هتدوس مسطرة وتغيرها ل NOP بعد كده دوس Assembly
10- لحد كده نقدر نقول خلصنا نص الطريق .. دلوقتى ال Client بيقرا فيلات اللغة الانجليزية لكن عمليا لسه مش بيقرا ال opcodes اللى بتطلع اول ما بتنزل بال Char
11- نكمل .. بعد كده هتدوس على الأيكون اللى فوق فى البرنامج اللى عليها R عشان نرجع لنتائج ال Texts اللى بحثنا عنها بعد كده هتدوس Home عشان تطلع لأول سطر وتدوس كليك يمين و Search for text واكتب "CharSelect "
12- هتسيب أول نتيجة طلعتلك وتدوس CTRL + L عشان تروح للى بعديها .. بعد كده دوس على اللى روحتلو ده Double Click عشان يوديك لمكان استجابة ال Client
13- هتنزل لتالت CALL ده اللى بيقرا اعدادات الكلينت بالنسبة للغة .. بمعنى انت عندك فى السطر اللى بعديه EAX + 0x160 ده كده بيشوف هل اللغة English ولا لا .. فطبعا بما ان الكلينت بتاعك لغته متغيرة فهيديلك نتائج غلط وهتاخد كراش ومع ذلك مش هنغير شىء هنا ! هتفتهم بعدين
14- دوس على Icon ال R تانى ودوس على Home تانى و كليك يمين Search for text واكتب “Please Execute”
15- انزل تحت شوية لحد ما تلاقى دول
JNZ SHORT sro_clie.0729646
CALL sro_clie.00A46D60
CALL NEAR ESI
هما مش تحت بعض على طول لكن هتلاقيهم .. المهم هتدوس على JNZ SHORT sro_clie.0729646 ده كليك يمين وتدوس على Binary وبعد كده Fill with NOPs
16- دلوقتى نقدر نغير الجزء اللى قولت عليه ل English .. هتدوس على اللاين مسطرة وتكتب “CALL 0x04C3D80” .. بعد كده هتدوس على اللاين الفاضى اللى بعديه مسطرة وتكتب ” MOV DWORD PTR DS:[EAX+0x160], 2”
17- وبكده نقدر نقول ألف مبروك غيرت اللغة .. دلوقتى وقت ال Saving هتدوس كليك يمين فى الصفحة الرئيسية
وتختار “Copy to executable->All Modifications”. بعد كده هتظهرلك نافذة اختار منها Copy All.
18- هتظهرلك نافذة جديدة دوس كليك يمين ودوس save file بأى اسم غير sro_client وتروح لل sro_client الاساسى وتسميه sro_client.exe.bak بعد كده تسمى ال sro_client بتاعك باسم sro_client
19- إدخل الجيم .. والف مبروك عليك