• Я зарабатываю 100 000 RUB / месяц на этом сайте!

    А знаешь как? Я всего-лишь публикую (создаю темы), а админ мне платит. Трачу деньги на мороженое, робуксы и сервера в Minecraft. А ещё на паль из Китая. 

    Хочешь так же? Пиши и узнавай условия: https://t.me/alex_redact
    Реклама: https://t.me/yougame_official

CrackMe .NET CrackMe 2/10

ldloc.s <d0t.net> stloc.s <Reversed>
Пользователь
Пользователь
Статус
Оффлайн
Регистрация
21 Окт 2018
Сообщения
219
Реакции
338
CrackMe для тех кому крякнуть c# - не просто открыть dnSpy)
Задача найти пароль, и рассказать как работает эта программа. Ключ под хайд

VirusTotal:
Пожалуйста, авторизуйтесь для просмотра ссылки.

Download:
Пожалуйста, авторизуйтесь для просмотра ссылки.
 
1754494898186.png
 

Пожалуйста, зарегистрируйтесь или авторизуйтесь, чтобы увидеть содержимое.


Короче теперь я понял как оно работает

в ресурсах хранится зашифрованый Token
по которому потом он переходит потом не смог в Runtime снять снял в статике ресурыс раздекриптил

0x06000002 - token 1
0x06000003 - token 2
0x06000004 - token 3

Короче было прикольно иниересно

и подскажи пж есть какие нибудь обфускаторы под Unity Mono нормальные мне для софта надо internal на C# для игры Unturned Net.Framework 4.8V
1754509523005.png
 
Hidden content
Короче теперь я понял как оно работает

в ресурсах хранится зашифрованый Token
по которому потом он переходит потом не смог в Runtime снять снял в статике ресурыс раздекриптил

0x06000002 - token 1
0x06000003 - token 2
0x06000004 - token 3

Короче было прикольно иниересно

и подскажи пж есть какие нибудь обфускаторы под Unity Mono нормальные мне для софта надо internal на C# для игры Unturned Net.Framework 4.8V
Посмотреть вложение 312609
Чтобы победить этот анти-отладочный трюк нужно отключить два этих оптимизатора JIT-кода:
1754510324197.png
 
в <Module>.cctor() видим хук getJit(), а так же парсинг некоторых данных из ресурса в словарь (токен метаданных - байткод).
в хуке идет проверка: если пытается jit'нуться метод из словаря, подменить тело. из-за этого пароль "Hello" из ненастоящего крякми не подошел бы.

поняв алгоритм, можно написать программу, которая заменит тела некоторых методов на настоящие:

zalupa:
Expand Collapse Copy
using AsmResolver.DotNet;
using AsmResolver.DotNet.Code.Cil;
using AsmResolver.IO;
using AsmResolver.PE.DotNet.Cil;
using System.Text;

string input_path = @"C:\CrackMe.exe";
string output_path = @"C:\patched_CrackMe.exe";
string resource_name = @"6C2A4129";
string xor_key = @"YouCan";

string xor_string(string input)
{
    StringBuilder sb = new();
    for (int i = 0; i < input.Length; i++)
        sb.Append((char)(input[i] ^ xor_key[i % xor_key.Length]));
    return sb.ToString();
}

List<(int method_token, byte[] cil_bytes)> parse_resource_data(byte[] data)
{
    var enc_data = new List<(int, byte[])>();
    using var stream = new MemoryStream(data);
    using var reader = new BinaryReader(stream);

    int count = reader.ReadInt32();

    for (int i = 0; i < count; i++)
    {
        int method_token = reader.ReadInt32();
        string encoded_string = xor_string(reader.ReadString());
        byte[] cil_body = Convert.FromBase64String(encoded_string);
        enc_data.Add((method_token, cil_body));
    }

    return enc_data;
}

var module = ModuleDefinition.FromFile(input_path);
var resource = module.Resources.FirstOrDefault(r => r.Name == resource_name);

var resource_data = resource.GetData();
var encrypted_methods = parse_resource_data(resource_data);

foreach (var (method_token, cil_body) in encrypted_methods)
{
    var method = module.LookupMember(method_token) as MethodDefinition;

    var reader = new BinaryStreamReader(cil_body);
    var operand_resolver = new PhysicalCilOperandResolver(module, method.CilMethodBody);
    var disassembler = new CilDisassembler(reader, operand_resolver);
    var instructions = disassembler.ReadInstructions();

    method.CilMethodBody.Instructions.Clear();
    method.CilMethodBody.Instructions.AddRange(instructions);
}

module.Write(output_path);

далее открываем в декомпиляторе и радуемся жизни.
 
Назад
Сверху Снизу