Mehmet Berkay Miyasaoğlu
Modern MMORPG (Örn: Knight Online) ve FPS oyunlarında kullanılan gelişmiş üçüncü parti hile koruma yazılımları, işletim sistemi seviyesinde çalışan yazılımsal giriş simülasyonlarını kanca (hooking) ve imza analizi yöntemleriyle tespit ederek hesapları kalıcı olarak uzaklaştırmaktadır.
Bu projenin temel amacı; anti-cheat algoritmalarını tamamen donanımsal seviyede (Hardware-level) devre dışı bırakan bir makro robotu geliştirmektir. Projede kullanılan ATmega32U4 çipli mikrodenetleyici, yerleşik USB denetleyicisine sahiptir. Bu sayede bilgisayara bağlandığı an işletim sistemi tarafından harici bir yazılım olarak değil, %100 orijinal ve fiziksel bir USB İnsan Arayüz Cihazı (USB HID Standart Klavye) olarak tanınır.
Sistem, bir adet Arduino Leonardo ve mikrodenetleyicinin dijital pinine bağlı fiziksel bir pull-up bilyeli buton kombinasyonundan oluşur. Algoritma şu şekilde işlemektedir:
Fiziksel butona ilk basıldığında bir kesme (interrupt) veya durum kontrol mekanizması tetiklenir ve sistem "Aktif" moduna geçer. Aktif modda cihaz, MMORPG mekaniklerindeki asenkron saldırı veya boss kesim süreçlerini otomatize etmek amacıyla her 0.9 saniyede bir (900 milisaniye) işletim sistemine ham klavye tanımlayıcısı üzerinden 'R' tuş sinyali enjekte eder.
Cihaz içerisine gömülen ve USB standardında veri paketleri üreten kararlı C++ kaynak kod bloğu aşağıda dökümante edilmiştir:
#include <Keyboard.h>
const int buttonPin = 2;
bool isMacroActive = false;
int lastButtonState = HIGH;
unsigned long lastActionTime = 0;
const unsigned long interval = 900;
void setup() {
pinMode(buttonPin, INPUT_PULLUP);
Keyboard.begin();
}
void loop() {
int currentButtonState = digitalRead(buttonPin);
if (currentButtonState == LOW && lastButtonState == HIGH) {
isMacroActive = !isMacroActive;
delay(200);
}
lastButtonState = currentButtonState;
if (isMacroActive) {
unsigned long currentTime = millis();
if (currentTime - lastActionTime >= interval) {
Keyboard.press('r');
delay(50);
Keyboard.release('r');
lastActionTime = currentTime;
}
}
}