<?php
$loginService = 'http://127.0.0.1/login.php';
$clientService = 'http://127.0.0.1/login.php';
$rsa = '9B646903B45B07AC956568D87353BD7165139DD7940703B03E6DD079399661B4A837AA60561D7CCB9452FA0080594909882AB5BCA58A1A1B35F8B1059B72B1212611C6152AD3DBB3CFBEE7ADC142A75D3D75971509C321C5C24A5BD51FD460F01B4E15BEB0DE1930528A5D3F15C1E3CBF5C401D6777E10ACAAB33DBE8D5B7FF5';
$file = file_get_contents('client.exe');
// https://otland.net/threads/disable-battlEye-error-12-20.266831/
$battlEye1 = "\x84\xC0\x74\x04\xC6\x47\x05\x01";
$battlEyeReplacement1 = "\x84\xC0\x90\x90\xC6\x47\x05\x01";
$battlEye2 = "\xC6\x45\xD7\x00\xC6\x45\xCF\x00";
$battlEyeReplacement2 = "\xC6\x45\xD7\x00\xC6\x45\xCF\x00";
$battlEye3 = "\x8D\x8D\x70\xFF\xFF\xFF\x75\x0E";
$battlEyeReplacement3 = "\x8D\x8D\x70\xFF\xFF\xFF\xEB\x0E";
$result = '';
$matches = [];
$lines = explode("\r\n", $file);
foreach ($lines as $line) {
if(strpos($line, 'loginWebService=') === 0) {
$oldLoginService = substr($line, strlen('loginWebService='));
$fillBytes = strlen($oldLoginService) - strlen($loginService);
$result .= 'loginWebService=' . $loginService . str_repeat("\x20", $fillBytes);
echo 'LOGIN WEB SERVICE REPLACED' . PHP_EOL;
echo 'Found: ' . $oldLoginService . PHP_EOL;
echo 'Replaced with: ' . $loginService . PHP_EOL;
} elseif(strpos($line, 'clientWebService=') === 0) {
$oldClientService = substr($line, strlen('clientWebService='));
$fillBytes = strlen($oldClientService) - strlen($clientService);
$result .= 'clientWebService=' . $clientService . str_repeat("\x20", $fillBytes);
echo 'CLIENT WEB SERVICE REPLACED' . PHP_EOL;
echo 'Found: ' . $oldClientService . PHP_EOL;
echo 'Replaced with: ' . $clientService . PHP_EOL;
} elseif(strpos($line, $battlEye1) !== false) {
$result .= str_replace($battlEye1, $battlEyeReplacement1, $line);
echo 'BATTLEYE ERROR DISABLED' . PHP_EOL;
} elseif(strpos($line, $battlEye2) !== false) {
$result .= str_replace($battlEye2, $battlEyeReplacement2, $line);
echo 'BATTLEYE ERROR DISABLED' . PHP_EOL;
} elseif(strpos($line, $battlEye3) !== false) {
$result .= str_replace($battlEye3, $battlEyeReplacement3, $line);
echo 'BATTLEYE ERROR DISABLED' . PHP_EOL;
} elseif (preg_match('/[0-9A-F]{256}/', $line, $matches)) {
foreach($matches as $possibleRSA) {
$possibleRsaWithNulls = "\x00" . $possibleRSA . "\x00";
if (strpos($line, $possibleRsaWithNulls) !== false) {
$newRsaWithNulls = "\x00" . $rsa . "\x00";
$line = str_replace($possibleRsaWithNulls, $newRsaWithNulls, $line);
echo 'RSA KEY REPLACED' . PHP_EOL;
echo 'Old RSA: ' . $possibleRSA . PHP_EOL;
echo 'New RSA: ' . $rsa . PHP_EOL;
}
}
$result .= $line;
} else {
$result .= $line;
}
$result .= "\r\n";
}
file_put_contents('client_ots.exe', $result);