Всем шалом, решил выпустить маленькую статейку чтобы показать людям, которые не смогли его пройти как можно спокойно все обойти без патчей.
Возьмём за пример последнюю версию крякми, а именно v4.
Сам крякми накрыт вмпротектом, а читать ассемблерный код мешала только мутация, поэтому мы всё ещё можем закинуть файл в иду.
В файле были всякие разные антидебаг трюки по типу детекта титанхайда, хуков сциллыхайд, детекта бряков и прочая хрень. Мы не будем все это дело патчить, как некоторые люди которые мне доказывали что надо патчить все и вся, мы обойдемся лишь тем, что введем валидные данные и заберем длл. Ведь задача в этом и заключается, чтобы достать незашифрованную длл, а не в патчинге всей защиты.
После того как закинули файл в дизассемблер и нашли main функцию, начинаем искать проверку на валидные данные.
Итак, мы нашли функцию, которая принимала два аргумента в виде ника и пароля, а именно sub_140002AF0, сам алгоритм был настроен лишь на мутацию кода с помощью введенного никнейма.
Переходим к этой функции и копируем её полностью кроме последней проверки.
Теперь напишем консольку, которая будет выводить нам наш пароль с помощью никнейма.
Копируем нашу функцию с мутацией и вставляем в проект
На этом наш "генератор пароля" готов, давайте проверим как это дело будет выглядеть в консольке
Сам алгоритм у кодера вышел немного кривым, поэтому у некоторых будут непонятные символы.
Теперь проверим наш пароль на самом лоадере:
Сама дллка имеет права RWX, из-за чего она сильно палится в регионе памяти лоадера, поэтому думаю сдампить длл не составим никому труда.
На этом всё. Всем добра и позитива.
Возьмём за пример последнюю версию крякми, а именно v4.
Сам крякми накрыт вмпротектом, а читать ассемблерный код мешала только мутация, поэтому мы всё ещё можем закинуть файл в иду.
В файле были всякие разные антидебаг трюки по типу детекта титанхайда, хуков сциллыхайд, детекта бряков и прочая хрень. Мы не будем все это дело патчить, как некоторые люди которые мне доказывали что надо патчить все и вся, мы обойдемся лишь тем, что введем валидные данные и заберем длл. Ведь задача в этом и заключается, чтобы достать незашифрованную длл, а не в патчинге всей защиты.
После того как закинули файл в дизассемблер и нашли main функцию, начинаем искать проверку на валидные данные.
Итак, мы нашли функцию, которая принимала два аргумента в виде ника и пароля, а именно sub_140002AF0, сам алгоритм был настроен лишь на мутацию кода с помощью введенного никнейма.
Переходим к этой функции и копируем её полностью кроме последней проверки.
Теперь напишем консольку, которая будет выводить нам наш пароль с помощью никнейма.
Копируем нашу функцию с мутацией и вставляем в проект
На этом наш "генератор пароля" готов, давайте проверим как это дело будет выглядеть в консольке
Сам алгоритм у кодера вышел немного кривым, поэтому у некоторых будут непонятные символы.
C++:
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <string>
#include <Windows.h>
char nickname[64];
char password[64];
char mutate_password(const char* nickname, const char* password)
{
int j;
size_t v5;
char symbol[120];
if (strlen(nickname) < 4 || strlen(password) < strlen(nickname)) {
return 0;
}
for (int i = 0; i < strlen(nickname); ++i)
{
symbol[i] = nickname[i];
symbol[i] ^= 7u;
symbol[i] *= 16;
symbol[i] += nickname[i] & 0xF;
}
std::cout << "mutated password -> " << symbol << std::endl;
return 1;
}
int main()
{
printf("nick: ");
scanf("%s", nickname);
printf("pass: ");
scanf("%s", password);
mutate_password(nickname, password);
getchar();
return 0;
}
Теперь проверим наш пароль на самом лоадере:
Сама дллка имеет права RWX, из-за чего она сильно палится в регионе памяти лоадера, поэтому думаю сдампить длл не составим никому труда.
На этом всё. Всем добра и позитива.