Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нём некорректно. Вам необходимо обновить браузер или попробовать использовать другой.
Однако, ты как всегда пропизделся, "мега-хуцкер" всея раста, как ты один раз заявил в ДИСКОРДЕ. "Ходите просите деньги у мамки", вот с этого орнул нихуево, человек просит у всех в беседе по 15 рублей на веб-хостинг. Мне интересно, ты вообще из дома выходишь? Тупой овощ, который сидит и только выебывается, ебучий интернет герой. Зубы то восстановил?) Помню пару месяцев назад чел который вышел из машины тебе их выбил :((((
*ПЭСЭ - ГДЕ МОИ МАНИ?
Однако, ты как всегда пропизделся, "мега-хуцкер" всея раста, как ты один раз заявил в ДИСКОРДЕ. "Ходите просите деньги у мамки", вот с этого орнул нихуево, человек просит у всех в беседе по 15 рублей на веб-хостинг. Мне интересно, ты вообще из дома выходишь? Тупой овощ, который сидит и только выебывается, ебучий интернет герой. Зубы то восстановил?) Помню пару месяцев назад чел который вышел из машины тебе их выбил :((((
*ПЭСЭ - ГДЕ МОИ МАНИ? Посмотреть вложение 43725
Ну во первых я тебе нихуя не должен, во вторых у меня на руках сотня тысяч и ты это видел, ну и на последок - Попробуй воспользоваться поиском в Гугле по схожим картинкам, пожалуй байт на левый ебальник удался, кст могу твой слить :-)
Ахх да я гуляю стабильно 10-12ч в сутки чего достаточно в отличие от ваших 5м до школы :-)
Ну во первых я тебе нихуя не должен, во вторых у меня на руках сотня тысяч и ты это видел, ну и на последок - Попробуй воспользоваться поиском в Гугле по схожим картинкам, пожалуй байт на левый ебальник удался, кст могу твой слить :-)
Ахх да я гуляю стабильно 10-12ч в сутки чего достаточно в отличие от ваших 5м до школы :-)
ну это хорошо, даже очень, что ты можешь дойти от школы до дома быстрее чем за 5м! Только гуляешь ты час в день, от силы) ибо выебываешься ты от ПК 24/7. Беда..
Переквалифицировал тему из 'истории эмулятора' во что-то типа пособие по GameWer.
Время от времени информация будет пополняться. В данный момент прикреплен распакованный билд GameWer для изучения.
Переквалифицировал тему из 'истории эмулятора' во что-то типа пособие по GameWer.
Время от времени информация будет пополняться. В данный момент прикреплен распакованный билд GameWer для изучения.
Как починить самому:
В последних версиях строки передаются побайтово с нативного лоадера, и выглядят вот так:
Чтобы их выловить, можно использовать 2 варианта:
1-ый(самый легкий) - это найти функцию расшифровки этих байтов в самом нативном лоадере, а потом просто их вставить как на первом фото.
2-ой - пропатчить на точке входа в clr.dll наш .NET файл прямо байтами на File.WriteAllBytes(...) самую первую функцию. Я разбирал уже такой метод.
Вот кстати места, можете составить паттерн и найти это место, ну или RVA = 0x1D4B;
И тут можете уже получить и аргументы в .NET файл, а также его расшифроку(самого файла .NET, начиная с MZ..)
Далее, когда вы уже успешно подготовили файл, сдампили его(из окна дампа сохранили байты), когда уже подставили аргументы(как на 1-ом фото), тогда просто пошагово выполняете дешифровку, и копируете расшифрованные строки из окна "Локальные переменные", т.к. все эти байты сразу заменятся на полные строки. Интуитивно разобраться на сложно
Далее все поля нужно проинициализировать этими строками. К сожалению, этот скрипт потерялся, но регулярками это в notepad++ делается минут за 30-40)
Второй скрипт, который позволяет автоматически заменить все ldsfld опкоды на ldstr:
C#:
public class OnlyOneFieldKill
{
private ModuleDef moduleDef { get; }
private Assembly assemblyDef { get; }
public OnlyOneFieldKill(ref ModuleDef moduleDef, ref Assembly assemblyDef)
{
this.moduleDef = moduleDef;
this.assemblyDef = assemblyDef;
Decrypt();
}
void Decrypt()
{
foreach (var typeDef in moduleDef.GetTypes())
{
foreach (var methodDef in typeDef.Methods)
{
if (methodDef.Body == null) continue;
for (int i = 0; i < methodDef.Body.Instructions.Count(); i++)
{
if (methodDef.Body.Instructions[i].OpCode.Name == "ldsfld")
{
var operand_ldsfld = methodDef.Body.Instructions[i].Operand as FieldDef;
if (operand_ldsfld != null)
{
if (operand_ldsfld.FullName.Contains("ArgValue"))
{
string fieldString = GetStringFromField(operand_ldsfld.Name);
methodDef.Body.Instructions[i] = new Instruction(OpCodes.Ldstr, fieldString); ;
methodDef.Body.OptimizeBranches();
methodDef.Body.SimplifyBranches();
}
}
}
}
}
}
}
string GetStringFromField(string fieldName)
{
return (string)assemblyDef.GetModule("Alkad.exe").GetType("GameWer.DeProtectType").GetField(fieldName).GetValue(null);
}
}
Там есть баг после этого скрипта, в нескольких методах нужно пофиксить 3-4 прыжка br ручками, но это дело 2-ух минут.
Результат:
Чтобы их выловить, можно использовать 2 варианта:
1-ый(самый легкий) - это найти функцию расшифровки этих байтов в самом нативном лоадере, а потом просто их вставить как на первом фото.
2-ой - пропатчить на точке входа в clr.dll наш .NET файл прямо байтами на File.WriteAllBytes(...) самую первую функцию. Я разбирал уже такой метод.
Вот кстати места, можете составить паттерн и найти это место, ну или RVA = 0x1D4B;
И тут можете уже получить и аргументы в .NET файл, а также его расшифроку(самого файла .NET, начиная с MZ..) Посмотреть вложение 99494
Далее, когда вы уже успешно подготовили файл, сдампили его(из окна дампа сохранили байты), когда уже подставили аргументы(как на 1-ом фото), тогда просто пошагово выполняете дешифровку, и копируете расшифрованные строки из окна "Локальные переменные", т.к. все эти байты сразу заменятся на полные строки. Интуитивно разобраться на сложно
Далее все поля нужно проинициализировать этими строками. К сожалению, этот скрипт потерялся, но регулярками это в notepad++ делается минут за 30-40)
Второй скрипт, который позволяет автоматически заменить все ldsfld опкоды на ldstr:
C#:
public class OnlyOneFieldKill
{
private ModuleDef moduleDef { get; }
private Assembly assemblyDef { get; }
public OnlyOneFieldKill(ref ModuleDef moduleDef, ref Assembly assemblyDef)
{
this.moduleDef = moduleDef;
this.assemblyDef = assemblyDef;
Decrypt();
}
void Decrypt()
{
foreach (var typeDef in moduleDef.GetTypes())
{
foreach (var methodDef in typeDef.Methods)
{
if (methodDef.Body == null) continue;
for (int i = 0; i < methodDef.Body.Instructions.Count(); i++)
{
if (methodDef.Body.Instructions[i].OpCode.Name == "ldsfld")
{
var operand_ldsfld = methodDef.Body.Instructions[i].Operand as FieldDef;
if (operand_ldsfld != null)
{
if (operand_ldsfld.FullName.Contains("ArgValue"))
{
string fieldString = GetStringFromField(operand_ldsfld.Name);
methodDef.Body.Instructions[i] = new Instruction(OpCodes.Ldstr, fieldString); ;
methodDef.Body.OptimizeBranches();
methodDef.Body.SimplifyBranches();
}
}
}
}
}
}
}
string GetStringFromField(string fieldName)
{
return (string)assemblyDef.GetModule("Alkad.exe").GetType("GameWer.DeProtectType").GetField(fieldName).GetValue(null);
}
}
Там есть баг после этого скрипта, в нескольких методах нужно пофиксить 3-4 прыжка br ручками, но это дело 2-ух минут.
Результат: Посмотреть вложение 99495