PDA

View Full Version : سوال: تشخیص کلاینت دست کاری شده



omidd1315
سه شنبه 21 مرداد 1393, 06:12 صبح
با سلام یه بازی به زبان سی پلاس هست که به صورت کلاینت سرور نوشته شده. از اونجایی که کدهای کلاینت اوپن سورسه بعضیا واسه این بازی بات ساختن و وارد بازی میشن و خراب کاری می کنن. یه سری افراد هم کلاینت عادی با یه سری امکانات معمولی که مشکلی ایجاد نمیکنه ساختند. حالا دنبال روشی هستم که بشه نوع کلاینت رو شناخت. فایل اجرایی کلاینت های عادی و بدون مشکل در دسترس هست(exe) ولی سورسشون نیست. به نظرتون راهی هست که بشه از اون فایل اجرایی واسه کلاینت های عادی یک کدی چیزی بیرون کشید که یونیک باشه(وابسته به کامپایلش روی کامپیوتر خاص-نوع کامپایلر و ... )؟ ببخشید که به اندازه یه داستان طول کشید d:

کامبیز اسدزاده
سه شنبه 21 مرداد 1393, 07:52 صبح
با سلام یه بازی به زبان سی پلاس هست که به صورت کلاینت سرور نوشته شده. از اونجایی که کدهای کلاینت اوپن سورسه بعضیا واسه این بازی بات ساختن و وارد بازی میشن و خراب کاری می کنن. یه سری افراد هم کلاینت عادی با یه سری امکانات معمولی که مشکلی ایجاد نمیکنه ساختند. حالا دنبال روشی هستم که بشه نوع کلاینت رو شناخت. فایل اجرایی کلاینت های عادی و بدون مشکل در دسترس هست(exe) ولی سورسشون نیست. به نظرتون راهی هست که بشه از اون فایل اجرایی واسه کلاینت های عادی یک کدی چیزی بیرون کشید که یونیک باشه(وابسته به کامپایلش روی کامپیوتر خاص-نوع کامپایلر و ... )؟ ببخشید که به اندازه یه داستان طول کشید d:

علیک سلام

منظورتون نوع کلاینت رو بشناسه یعنی چی ؟
مثلا چه اطلاعاتی از کلاینت لازم دارید؟

plus
سه شنبه 21 مرداد 1393, 08:54 صبح
سرور تنها اطلاعاتی رو میگیره که کلاینت بهش ارسال کنه، من از کدهای کلاینت خبر ندارم ولی بعید هست که کلاینت چیزی مثل checksum خودش رو برای سرور بفرسته.بهرحال میتونید کدهای کلاینت رو بررسی کنید ببینین چیز بدرد بخوری ارسال میشه یا نه. اما همونطور که گفتم، تا کلاینت چیزی در مورد خودش ارسال نکنه سرور در مورد کدهای اجرایی که داده ارسال میکنن چیزی نمیتونه بدست بیاره...نهایت اطلاعاتی که سرور میگیره اطلاعات مربوط به شبکه هست (مثل IP Address و مثل این...).

omidd1315
سه شنبه 21 مرداد 1393, 09:09 صبح
علیک سلام

منظورتون نوع کلاینت رو بشناسه یعنی چی ؟
مثلا چه اطلاعاتی از کلاینت لازم دارید؟


منظورم اینه که توی سرور باید یه کدی اضافه کنیم که هر کلاینی که وارد گیم میشه تشخیص بده که اون کلاینه کدهاش دست کاری شده یا نه؟
فعلن تنها چیزی که در دسترسه فایل اجراییه کلاینت هایی هست که از نظر ما دست کاری نشدند.

نکتش اینجاس که ما فایل سورس کلاینها رو نداریم که یه کدی جاسازی کنیم و سرور بتونه تشخیص بده.

شاید گیج کننده باشه یا اصلا عملی نباشه ولی دنبال راه حلی هستم که یه سری اطلاعات از فایل کلاینتا بگیرم و تشخیص بدم دست کاری شدند یا نه؟

یه مثال کوچیک میزنم تا مو ضوع روشن تر شه.

فرض کنیم یه کلاینت اوپن سورس داریم با ورژن 0.6.2
حالا این کلاینتو دیگران برداشتن دست کاری کردن و مثلا با نام های vbot ( که یک بات محسوب میشه) و ddrace (که یک کلاینت معمولیه )فایل اجرایی دادن بیرون و سورسشون موجود نیست. حالا میخوام سرور تشخیص بده کدوم وارد شده. البته ممکنه کلاینت های بات دیگه ای هم باشن ولی ما فعلن اون کلاینتایی که معمولین رو در اختیار داریم.

پیدا کنید پرتقال فروش را .

omidd1315
سه شنبه 21 مرداد 1393, 09:15 صبح
با سلام یه بازی به زبان سی پلاس هست که به صورت کلاینت سرور نوشته شده. از اونجایی که کدهای کلاینت اوپن سورسه بعضیا واسه این بازی بات ساختن و وارد بازی میشن و خراب کاری می کنن. یه سری افراد هم کلاینت عادی با یه سری امکانات معمولی که مشکلی ایجاد نمیکنه ساختند. حالا دنبال روشی هستم که بشه نوع کلاینت رو شناخت. فایل اجرایی کلاینت های عادی و بدون مشکل در دسترس هست(exe) ولی سورسشون نیست. به نظرتون راهی هست که بشه از اون فایل اجرایی واسه کلاینت های عادی یک کدی چیزی بیرون کشید که یونیک باشه(وابسته به کامپایلش روی کامپیوتر خاص-نوع کامپایلر و ... )؟ ببخشید که به اندازه یه داستان طول کشید d:

ممنون دوست عزیز بررسی می کنم ببینم چه اطلاعاتی به سرور ارسال میشه.

کامبیز اسدزاده
سه شنبه 21 مرداد 1393, 09:18 صبح
منظورم اینه که توی سرور باید یه کدی اضافه کنیم که هر کلاینی که وارد گیم میشه تشخیص بده که اون کلاینه کدهاش دست کاری شده یا نه؟
فعلن تنها چیزی که در دسترسه فایل اجراییه کلاینت هایی هست که از نظر ما دست کاری نشدند.

نکتش اینجاس که ما فایل سورس کلاینها رو نداریم که یه کدی جاسازی کنیم و سرور بتونه تشخیص بده.

شاید گیج کننده باشه یا اصلا عملی نباشه ولی دنبال راه حلی هستم که یه سری اطلاعات از فایل کلاینتا بگیرم و تشخیص بدم دست کاری شدند یا نه؟

یه مثال کوچیک میزنم تا مو ضوع روشن تر شه.

فرض کنیم یه کلاینت اوپن سورس داریم با ورژن 0.6.2
حالا این کلاینتو دیگران برداشتن دست کاری کردن و مثلا با نام های vbot ( که یک بات محسوب میشه) و ddrace (که یک کلاینت معمولیه )فایل اجرایی دادن بیرون و سورسشون موجود نیست. حالا میخوام سرور تشخیص بده کدوم وارد شده. البته ممکنه کلاینت های بات دیگه ای هم باشن ولی ما فعلن اون کلاینتایی که معمولین رو در اختیار داریم.

پیدا کنید پرتقال فروش را .

خب شما نمیتونید مستقیما از طرف سرور اطلاعات کلاینت رو بگیرید مگر روش خاصی استفاده کنید.
مثلا میتونید توسط API از طرف کلاینت اطلاعاتی رو برای سرور بیس ارسال کنید و اگرنا اینکه سرور بیاد اطلاعات کلاینت رو بگیره امکانپذیر نیست.
و با توجه به اینکه فایل سورس کلاینت بیس رو ندارید این کار امکانپذیر نیست توسط سروربیس به تنهایی نمیشه اطلاعات کلاینت رو گرفت اگر دقت کنید حتی برنامه های جاسوسی حداقل یک فایلی چیزی رو به طرف کلاینت آپلود میکنند که بتونن اطلاعاتی بگیرند حالا برنامه شما هم حتما باید چیزی روی کلاینت داشته باشه واگرنا امکانپذیر بودنش رو من مطمئن نیستم.

negative60
سه شنبه 21 مرداد 1393, 14:12 عصر
از يک طرف ميگيد کلاينت اوپن سورس هست از طرف ديگه ميگيد سورس کلاينت رو نداريد؟
بايد تغييراتی تو پروتکل ارتباطی کلاينت/سرور انجام بديد که لاگين کردن و ارسال پکت برای ديگران سخت بشه تغييرات بايد به گونه اي باشه که با اسنيف کرن يا مهندسی معکوس نشه از ماهيت پکت ها با خبر شد که اين هم لازمش دسترسی به سورس کلاينت و سرور هست.
البته با روش های نه چندان معقول و آسون ميتونيد سوکت کلاينت رو هوک کنيد و کنترل ارتباط با سرور رو در دست بگيريد و تغييراتی که لازم هست رو ايجاد کنيد .