بسيطة الفرس جافا بوت على سبيل المثال من لعبة World of Warcraft 3.3.5a

تم اختبار هذه الآلية حصريًا على خادم مُقرصن ، وبالتالي فإن أدائها على الخوادم الرسمية غير مضمون.

كل المحاولات لاستخدام - فقط على مسؤوليتك الخاصة والمخاطر.

يتم التنفيذ لأجهزة سطح مكتب Windows.

لذلك ، قم بإنشاء روبوت بسيط ، يكون الغرض منه:

1) أدخل اللعبة ؛
2) تسجيل الدخول إلى حسابك.
3) دخول عالم اللعبة.
4) فتح صندوق البريد.
5) إنشاء وإرسال رسالة إلى لاعب آخر.

1) أدخل اللعبة


من أجل الدخول إلى اللعبة ، نحتاج بالفعل إلى عميل لعبة تم تنزيله مسبقًا.
في عملنا ، نستخدم ملف exe Wow.exe. نكتب مساره على النحو التالي:

String WowPatch="D:/Wow/Wow.exe"; 

هنا سجلنا المسار إلى Wow القابل للتنفيذ. من المحتمل أن يكون هذا المسار مختلفًا بالنسبة لك.

الطريق جيد بالتأكيد ، لكن هذا لا يكفي لإطلاق اللعبة.

لتشغيل ، نحتاج هذا الرمز:

 String WowPatch="D:/Wow/Wow.exe"; File file =new File(WowPatch); try { Desktop.getDesktop().open(file); } catch (IOException e1) { e1.printStackTrace(); } 

نتيجة لتطبيق الرمز أعلاه ، يجب أن تبدأ WoW على جهاز الكمبيوتر الخاص بك.

أطلقنا WoW وواجهنا مشكلة جديدة على الفور - كيفية جعل الروبوت يدخل تلقائيًا اسم المستخدم وكلمة المرور من الحساب؟

2) تسجيل الدخول إلى حسابك


الان نحتاج إلى كتابة متغيرين نصيين آخرين.

 String Login="YourLogin"; String Password="YourPassword"; 

هنا قمنا بتسجيل الدخول وكلمة المرور من الحساب الذي سنقوم بإدخاله. ومع ذلك ، إذا استخدمنا فورًا بعد ذلك الجزء من الشفرة حيث ندخل اللعبة - فستكون هناك مشكلة. وكل ذلك لأن برنامج الروبوت الخاص بنا سوف ينفذ الكود بغض النظر عن ما إذا كان قد تم تشغيل Warcraft ، وستحتاج اللعبة إلى بعض الوقت للتحميل ، إذا كنت تعمل على جهاز كمبيوتر ضعيف ، فسيستغرق الأمر وقتًا أطول.

حتى لا يتم "تسجيل الدخول" وكلمة المرور في وقت مبكر ، فسنتوقف مؤقتًا في الكود الخاص بنا:

 String WowPatch="D:/Wow/Wow.exe"; File file =new File(WowPatch); try { Desktop.getDesktop().open(file); } catch (IOException e1) { e1.printStackTrace(); } Thread.sleep(20000); String Login="YourLogin"; String Password="YourPassword"; 

هنا توقفنا لمدة 20 ثانية. لدي أكثر من الوقت الكافي ل WoW للإقلاع. تجدر الإشارة إلى أنه بعد تحميل WoW مباشرة ، تم بالفعل تحديد حقل تسجيل الدخول الافتراضي. كل ما نحتاج إليه الآن هو نسخ تسجيل الدخول من المتغير الخاص بنا إلى الحافظة ولصقه في حقل تسجيل الدخول:

 Robot rb= new Robot(); StringSelection stringSelection = new StringSelection(Login); Clipboard clpbrd = Toolkit.getDefaultToolkit().getSystemClipboard(); clpbrd.setContents(stringSelection, null); rb.keyPress(KeyEvent.VK_CONTROL); rb.keyPress(KeyEvent.VK_V); rb.keyRelease(KeyEvent.VK_V); rb.keyRelease(KeyEvent.VK_CONTROL); 

هنا قمنا بنسخ تسجيل الدخول إلى الحافظة وتم محاكاة الضغط على Ctrl + V ، ولصق تسجيل الدخول في النافذة المقابلة.

الآن نحن بحاجة إلى التبديل إلى مربع كلمة المرور. هناك طريقتان للقيام بذلك:

- يمكننا محاكاة حركة الماوس والنقر على النافذة الثانية.
- يمكننا التبديل عن طريق محاكاة الضغط على زر Tab.

سنستخدم الخيار الثاني ، لأنه أبسط:

 rb.keyPress(KeyEvent.VK_TAB); rb.keyRelease(KeyEvent.VK_TAB); 

بعد ذلك ، انسخ كلمة المرور إلى الحافظة والصقها:

 StringSelection stringSelection2 = new StringSelection(Password); Clipboard clpbrd2 = Toolkit.getDefaultToolkit().getSystemClipboard(); clpbrd2.setContents(stringSelection2, null); rb.keyPress(KeyEvent.VK_CONTROL); rb.keyPress(KeyEvent.VK_V); rb.keyRelease(KeyEvent.VK_V); rb.keyRelease(KeyEvent.VK_CONTROL); 

الصيحة !!! دخلنا قائمة اختيار الشخصية. الآن تحتاج إلى دخول عالم اللعبة.

3) أدخل عالم اللعبة


الآن نرى قائمة اختيار الشخصيات على الشاشة. ربما لن نفرز حقًا ونذهب إلى الشخصية الأولى التي تظهر.

للدخول ، يمكننا استخدام خيارين مختلفين:

- حرك مؤشر الماوس إلى زر "تسجيل الدخول" ومحاكاة نقرة.
- محاكاة الضغط على زر Enter.

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

 Thread.sleep(5000); rb.keyPress(KeyEvent.VK_ENTER); rb.keyRelease(KeyEvent.VK_ENTER); 

أنا 5 ثوانى. مفقود برأس.

يا معجزة ، بدأ تحميل لعبة العالم!

4) افتح صندوق البريد


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

- تكبير الكاميرا ؛
- كن جبينًا في صندوق الوارد الخاص بك ؛

من أجل فتح صندوق بريد ، يجب عليك الصراخ باستخدام زر الماوس الأيمن. للقيام بذلك ، سنقوم بتحريك مؤشر الماوس ومحاكاة نقرة:

 Thread.sleep(30000); rb.mouseMove(700, 350); rb.mousePress(InputEvent.BUTTON3_MASK); rb.mouseRelease(InputEvent.BUTTON3_MASK); 

ضع في اعتبارك أن موضع الماوس الذي أشرت إليه مصمم لضبط دقة الشاشة 1366 × 768.
BUTTON3 هو بالضبط زر الماوس الأيمن.

فتحنا صندوق البريد ، انتقل الآن إلى علامة التبويب "إرسال":

 rb.mouseMove(200, 550); rb.mousePress(InputEvent.BUTTON1_MASK); rb.mouseRelease(InputEvent.BUTTON1_MASK); 

نحن هنا لا نقوم فقط بتقليد حركة الماوس على الشاشة ، ولكن أيضًا النقر بزر الماوس الأيسر.

الآن هو الوقت المناسب لملء وإرسال بريد إلكتروني!

5) شكل وإرسال رسالة إلى لاعب آخر


الآن نحن بحاجة لملء النقاط:

- اسم المستلم ؛
- موضوع الرسالة.
- نص الرسالة.

 String Name="Name"; String Theme="Theme"; String Text="Text"; 

أولاً ، ضع على الحافظة اسم الشخصية ولصقها في العمود المناسب:

 StringSelection stringSelection3 = new StringSelection(Name); Clipboard clpbrd3 = Toolkit.getDefaultToolkit().getSystemClipboard(); clpbrd3.setContents(stringSelection3, null); rb.keyPress(KeyEvent.VK_CONTROL); rb.keyPress(KeyEvent.VK_V); rb.keyRelease(KeyEvent.VK_V); rb.keyRelease(KeyEvent.VK_CONTROL); rb.keyPress(KeyEvent.VK_TAB); rb.keyRelease(KeyEvent.VK_TAB); 

لقد أدخلنا اسم المستلم وانتقلنا إلى عمود آخر. أنت الآن بحاجة إلى إدراج موضوع الرسالة:

 StringSelection stringSelection4 = new StringSelection(Theme); Clipboard clpbrd4 = Toolkit.getDefaultToolkit().getSystemClipboard(); clpbrd4.setContents(stringSelection4, null); rb.keyPress(KeyEvent.VK_CONTROL); rb.keyPress(KeyEvent.VK_V); rb.keyRelease(KeyEvent.VK_V); rb.keyRelease(KeyEvent.VK_CONTROL); rb.keyPress(KeyEvent.VK_TAB); rb.keyRelease(KeyEvent.VK_TAB); 

لقد أدخلنا موضوع الرسالة وانتقلنا إلى العمود الثالث - نص الرسالة:

 StringSelection stringSelection5 = new StringSelection(Text); Clipboard clpbrd5 = Toolkit.getDefaultToolkit().getSystemClipboard(); clpbrd5.setContents(stringSelection5, null); rb.keyPress(KeyEvent.VK_CONTROL); rb.keyPress(KeyEvent.VK_V); rb.keyRelease(KeyEvent.VK_V); rb.keyRelease(KeyEvent.VK_CONTROL); 

إدراج نص الرسالة. كل ما تبقى الآن هو النقر على زر "إرسال":

 rb.mouseMove(200, 520); rb.mousePress(InputEvent.BUTTON1_MASK); rb.mouseRelease(InputEvent.BUTTON1_MASK); 

حرك المؤشر وانقر بزر الماوس الأيسر على "إرسال".

هذا كل شيء. آمل أن يكون من المفيد لشخص على الأقل. آمل حقًا ألا يتم قبول هذه المقالة كدليل للعمل ولن تؤدي إلى زيادة حجم البريد العشوائي في اللعبة.

Source: https://habr.com/ru/post/ar434218/


All Articles