• XSS.stack #1 – первый литературный журнал от юзеров форума

Недокряканый Antidetect VirtualBox September 2024

G100M

(L2) cache
Пользователь
Регистрация
08.05.2008
Сообщения
490
Реакции
5
Состоит из:
1. Loader для загрузки либы, чтобы подменить auth server
2. Сама либа
3. Auth server на go

Софт успешно запускается, все логинится, но при попытке создать или запустить виртуальную машину происходят дополнительные проверки(по сути те же, просто уже после запуска и перехвата начальных, они переинициализируются), которые не получается перехватить. Это вам и предлагается сделать. Особо важно: все файлы подписаны цифровой подписью и используют верификацию валидности через инструментарий windows, поэтому нет возможности файлы просто патчить. Нужно как-то перехватывать запуск виртуальной машины и там тоже подменять auth server. Задача вполне под силу кому-то, кто не такой глупый как я.

Может кому-то будет полезно.

 
Последнее редактирование:
ты ждал целых 11 лет, чтобы сегодня для нас опубликовать этот "замечательный" продукт? советую 100 раз подумать прежде, чем запускать. admin будьте любезны, проверьте человека, возможно взломан
 
ты ждал целых 11 лет, чтобы сегодня для нас опубликовать этот "замечательный" продукт? советую 100 раз подумать прежде, чем запускать. admin будьте любезны, проверьте человека, возможно взломан
Мои приблуды не скомпилированы, а хэш exe ВМ можно сверить с автором, если есть желание. Заглянул бы сначала, дружинник.
 
Рекомендую присмотреться к open-source разработкам автора и попробовать самому сделать такую приблуду с нуля ( скомпилировать если простыми словами ):


Нужна будет помощь - пиши, подскажу.
 
Рекомендую присмотреться к open-source разработкам автора и попробовать самому сделать такую приблуду с нуля ( скомпилировать если простыми словами ):



Нужна будет помощь - пиши, подскажу.
У этого пакета прикольная фича есть - принудительнони проксирование, ну и сам по себе комбайн удобнее кучи кубиков на клею.

В моей недоделке осталось сделать только повторный перехват DLL на лету, все остальное - готово. Люди, которые умеют работать с этими всеми программируваниями наверняка быстро справятся, так как весь рнд и даже мвп уже готов. Я выложил не затем что мне нужно, у меня уже надобность отпала, скажу только что не откажусь от решения, даже если его опишут словами, я просто не понимаю(л) как дальше.
 
Дак а в чем проблема выпилить проверку цифровой подписи? А затем уже патчить
 
Дак а в чем проблема выпилить проверку цифровой подписи? А затем уже патчить
1753078103343.png

кажется, что файлы можно просто через sigthief прогнать и этого хватит :/
 
~snip~
VirtualBox.exe!TrustedMain -> call UICommon.dll!isValidLicense export
IsValidLicense interesting strings: license.vbox-antidetect, License check failed, FINGERPRINT_SCOPE_MISMATCH, NO_MACHINES, ENTITLEMENTS_MISSING
inside isValidLicense:
Код:
  if ( !*(_DWORD *)(*(_QWORD *)a1 + 4LL) )
      QString::operator=(a1, "License check failed");
UICommon.dll!isValidLicense -> call UIErrorString::formatLicenseCode
Код:
void *__fastcall UIErrorString::formatLicenseCode(void *a1, int a2)
{
  const char *v4; // rdx

  QString::QString(a1);
  if ( a2 > -9 )
  {
    if ( (unsigned int)(a2 + 3) <= 1 )
    {
      v4 = "unexpected server response";
    }
    else
    {
      if ( (unsigned int)(a2 - 1) > 2 )
        return a1;
      v4 = "bad license file";
    }
LABEL_22:
    QString::operator=(a1, v4);
    return a1;
  }
  if ( a2 == -9 )
  {
    v4 = "invalid license";
    goto LABEL_22;
  }
  switch ( a2 )
  {
    case -899:
      v4 = "network error";
      goto LABEL_22;
    case -897:
      v4 = "unexpected cURL error configure the proxy";
      goto LABEL_22;
    case -896:
      v4 = "the remote host couldn't be resolved";
      goto LABEL_22;
    case -895:
      v4 = "proxy couldn't be resolved";
      goto LABEL_22;
    case -894:
      v4 = "request was redirected";
      goto LABEL_22;
    case -893:
      v4 = "aborted";
      goto LABEL_22;
    case -892:
      v4 = "certificate cannot be authenticated with the given CA certificates";
      goto LABEL_22;
    case -891:
      v4 = "CAcert is missing or has the wrong format";
      goto LABEL_22;
    case -890:
      v4 = "SSL connect error";
      goto LABEL_22;
    case -889:
      v4 = "couldn't connect to the server (proxy?)";
      goto LABEL_22;
    case -888:
      v4 = "HTTP 400 Bad Request";
      goto LABEL_22;
    case -887:
      v4 = "HTTP 403 Forbidden";
      goto LABEL_22;
    case -886:
      v4 = "HTTP 404 Not Found";
      goto LABEL_22;
    default:
      return a1;
  }
  return a1;
}
Код:
private: static bool UICommon::m_isValidLicense
also there is some code inside VBoxRT.dll!CheckSerial -> sub_1801BABA0((__int64)"29755df0-2dab-4f4e-8ecb-6ff176fc1238", (__int64)v18, (__int64)v35, &v24, &v28);
sub_1801BABA0:

Код:
swprintf(v31, (const wchar_t *)0x80, "https://api.keygen.sh/v1/accounts/%s/licenses/actions/validate-key", a1);
  swprintf(
    v39,
    (const wchar_t *)0x190,
    "{ \"meta\": { \"key\": \"%s\", \"scope\": { \"fingerprint\": \"%s\", \"policy\": \"%s\" } } }",
    a2,
    a3,
    "7af35fb0-cac3-403c-aa48-ed194453615f");
^^ just hook the json & return correct response
написал на английском просто из-за удобства для себя, можешь нанять какого нибудь геймхакера / разраба читов, при очень большом желании можно за 1 ночь управиться, но скорее всего придется писать несколько модулей: тот, что перехватит загрузку VBoxRT (или хукнутся в импорт который вызывает энтрик и чекать ретаддр), потом хукать комку client <--> srv, байтпатчить JSON чеки, а дальше мне впадлу писать уже
весь код ничем не обфусцирован и можно сказать открыт
gl
 
VirtualBox.exe!TrustedMain -> call UICommon.dll!isValidLicense export
IsValidLicense interesting strings: license.vbox-antidetect, License check failed, FINGERPRINT_SCOPE_MISMATCH, NO_MACHINES, ENTITLEMENTS_MISSING
inside isValidLicense:
Код:
  if ( !*(_DWORD *)(*(_QWORD *)a1 + 4LL) )
      QString::operator=(a1, "License check failed");
UICommon.dll!isValidLicense -> call UIErrorString::formatLicenseCode
Код:
void *__fastcall UIErrorString::formatLicenseCode(void *a1, int a2)
{
  const char *v4; // rdx

  QString::QString(a1);
  if ( a2 > -9 )
  {
    if ( (unsigned int)(a2 + 3) <= 1 )
    {
      v4 = "unexpected server response";
    }
    else
    {
      if ( (unsigned int)(a2 - 1) > 2 )
        return a1;
      v4 = "bad license file";
    }
LABEL_22:
    QString::operator=(a1, v4);
    return a1;
  }
  if ( a2 == -9 )
  {
    v4 = "invalid license";
    goto LABEL_22;
  }
  switch ( a2 )
  {
    case -899:
      v4 = "network error";
      goto LABEL_22;
    case -897:
      v4 = "unexpected cURL error configure the proxy";
      goto LABEL_22;
    case -896:
      v4 = "the remote host couldn't be resolved";
      goto LABEL_22;
    case -895:
      v4 = "proxy couldn't be resolved";
      goto LABEL_22;
    case -894:
      v4 = "request was redirected";
      goto LABEL_22;
    case -893:
      v4 = "aborted";
      goto LABEL_22;
    case -892:
      v4 = "certificate cannot be authenticated with the given CA certificates";
      goto LABEL_22;
    case -891:
      v4 = "CAcert is missing or has the wrong format";
      goto LABEL_22;
    case -890:
      v4 = "SSL connect error";
      goto LABEL_22;
    case -889:
      v4 = "couldn't connect to the server (proxy?)";
      goto LABEL_22;
    case -888:
      v4 = "HTTP 400 Bad Request";
      goto LABEL_22;
    case -887:
      v4 = "HTTP 403 Forbidden";
      goto LABEL_22;
    case -886:
      v4 = "HTTP 404 Not Found";
      goto LABEL_22;
    default:
      return a1;
  }
  return a1;
}
Код:
private: static bool UICommon::m_isValidLicense
also there is some code inside VBoxRT.dll!CheckSerial -> sub_1801BABA0((__int64)"29755df0-2dab-4f4e-8ecb-6ff176fc1238", (__int64)v18, (__int64)v35, &v24, &v28);
sub_1801BABA0:
Код:
swprintf(v31, (const wchar_t *)0x80, "https://api.keygen.sh/v1/accounts/%s/licenses/actions/validate-key", a1);
  swprintf(
    v39,
    (const wchar_t *)0x190,
    "{ \"meta\": { \"key\": \"%s\", \"scope\": { \"fingerprint\": \"%s\", \"policy\": \"%s\" } } }",
    a2,
    a3,
    "7af35fb0-cac3-403c-aa48-ed194453615f");
^^ just hook the json & return correct response
написал на английском просто из-за удобства для себя, можешь нанять какого нибудь геймхакера / разраба читов, при очень большом желании можно за 1 ночь управиться, но скорее всего придется писать несколько модулей: тот, что перехватит загрузку VBoxRT (или хукнутся в импорт который вызывает энтрик и чекать ретаддр), потом хукать комку client <--> srv, байтпатчить JSON чеки, а дальше мне впадлу писать уже
весь код ничем не обфусцирован и можно сказать открыт
gl
1753129325053.png

патчер делать не буду, но в итоге - кряк занял около 4ех часов при условии что я постоянно отвлекался на аниме на втором экране
весь кряк состоит из около 4ех патчей - 1х развертывание логики проверки (вместо значения регистра ставить 1 после проверки всегда)
и потом 3х подстановка jnz на jz условные чтобы логика отрабатывала так-же как будто оно прогрузило файл и он валидный
(дальше скрин без патченных проверок)
1753129672572.png
 
патчер делать не буду, но в итоге - кряк занял около 4ех часов при условии что я постоянно отвлекался на аниме на втором экране
весь кряк состоит из около 4ех патчей - 1х развертывание логики проверки (вместо значения регистра ставить 1 после проверки всегда)
и потом 3х подстановка jnz на jz условные чтобы логика отрабатывала так-же как будто оно прогрузило файл и он валидный
(дальше скрин без патченных проверок)
Крассавчик, так и зарабатывают репутацию, а не выебонами о опыте команды и тд
 
Посмотреть вложение 109685
патчер делать не буду, но в итоге - кряк занял около 4ех часов при условии что я постоянно отвлекался на аниме на втором экране
весь кряк состоит из около 4ех патчей - 1х развертывание логики проверки (вместо значения регистра ставить 1 после проверки всегда)
и потом 3х подстановка jnz на jz условные чтобы логика отрабатывала так-же как будто оно прогрузило файл и он валидный
(дальше скрин без патченных проверок)
Посмотреть вложение 109686
Если не затруднит поделиться наработкой буду весьма благодарен
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх