$code = @'
using System;
using System.IO;
using System.Text;
public class FullPatcher {
public static void Patch() {
string fileIn = "GeometryDash.exe";
string fileOut = "GeometryDash_Mucho.exe";
if (!File.Exists(fileIn)) {
Console.WriteLine("[-] GeometryDash.exe не найден!");
return;
}
byte[] file = File.ReadAllBytes(fileIn);
// Список всех возможных вариаций URL, которые использует игра
string[] targets = new string[] {
"https://www.boomlings.com/database",
"http://www.boomlings.com/database",
"http://www.boomlings.com/database/",
"http://boomlings.com/database",
"https://boomlings.com/database"
};
byte[] replace = Encoding.ASCII.GetBytes("http://muchogdps.space");
int totalReplaced = 0;
foreach (var target in targets) {
byte[] search = Encoding.ASCII.GetBytes(target);
for (int i = 0; i <= file.Length - search.Length; i++) {
bool match = true;
for (int j = 0; j < search.Length; j++) {
if (file[i+j] != search[j]) {
match = false;
break;
}
}
if (match) {
// Записываем наш новый URL
for (int j = 0; j < replace.Length; j++) {
file[i+j] = replace[j];
}
// Забиваем остаток длины оригинального URL нулями
for (int j = replace.Length; j < search.Length; j++) {
file[i+j] = 0x00;
}
totalReplaced++;
Console.WriteLine("[+] Заменено совпадение для: " + target + " на позиции: 0x" + i.ToString("X"));
}
}
}
if (totalReplaced > 0) {
File.WriteAllBytes(fileOut, file);
Console.WriteLine("\n[+] УСПЕХ! Всего заменено вхождений: " + totalReplaced);
Console.WriteLine("[+] Создан готовый файл: " + fileOut);
} else {
Console.WriteLine("[-] Строки не найдены. Возможно, исходный .exe уже модифицирован или упакован/зашифрован.");
}
}
}
'@
Add-Type -TypeDefinition $code
[FullPatcher]::Patch()