Софт Vmprotect unpack

Начинающий
Начинающий
Статус
Оффлайн
Регистрация
9 Апр 2024
Сообщения
3
Реакции
1
В инете чит нашел, который просит ключ для доступа, крякнуть хотел, но там стоит вмпротект. Сам искал гайды на ютубе, наткнулся только на англоязычные видосы, делал все как в видосах и по всем гайдам выдавало одну и ту же ошибку. Кто нибудь знает, как можно анпактуть вмпротект?
saassa.png
 
В инете чит нашел, который просит ключ для доступа, крякнуть хотел, но там стоит вмпротект. Сам искал гайды на ютубе, наткнулся только на англоязычные видосы, делал все как в видосах и по всем гайдам выдавало одну и ту же ошибку. Кто нибудь знает, как можно анпактуть вмпротект?
saassa.png
скорее всего там последняя версия крякнутого вмп (3.8.1, 3.8.4), поэтому ты вряд-ли в интернете найдешь паблик анти дебаггер

можешь впринципе попробовать титанхайд какой-нибудь или гиперхайд (не уверен в том что говорю, ибо я не дебажил екзекютбл на котором висит вмп с анти дебаггером)
 
  • Мне нравится
Реакции: mj12
скорее всего там последняя версия крякнутого вмп (3.8.1, 3.8.4), поэтому ты вряд-ли в интернете найдешь паблик анти дебаггер

можешь впринципе попробовать титанхайд какой-нибудь или гиперхайд (не уверен в том что говорю, ибо я не дебажил екзекютбл на котором висит вмп с анти дебаггером)
Понял, а такой вопрос, я типо ваще пряник во всем этом, как вообще установить плагин титанхайд или гиперхайд? Скуллахайд легко устанавливается, а с другими по типу этих я ваще не понимаю че делать, очень много файлов, и я вообще хз.
 
  • Мне нравится
Реакции: mj12
В инете чит нашел, который просит ключ для доступа, крякнуть хотел, но там стоит вмпротект. Сам искал гайды на ютубе, наткнулся только на англоязычные видосы, делал все как в видосах и по всем гайдам выдавало одну и ту же ошибку. Кто нибудь знает, как можно анпактуть вмпротект?
saassa.png
just open idax64 and use hide plugins ????? thats easy
 
В инете чит нашел, который просит ключ для доступа, крякнуть хотел, но там стоит вмпротект. Сам искал гайды на ютубе, наткнулся только на англоязычные видосы, делал все как в видосах и по всем гайдам выдавало одну и ту же ошибку. Кто нибудь знает, как можно анпактуть вмпротект?
saassa.png
Чтобы помочь людям отвечу вам публично(а не в лс).
UM решение: я уже публиковал статью,насчётспособа обхода(с костылём,но вас это мало должно волновать)
Вам нужно заставить думать,что build number является ложным,чтобы заставить VMP мапить ntdll с диска,где уже можно просто обмануть.
KM решение: любой хук в ядре на обработку следующих моментов(это фикс для TitanHide,но я не буду расписывать как всё правильно делать,ибо спасибо никто не скажет):
PEB->BeingDebugged(просто перезапись в UM на FALSE)
NtQueryInformationProcess:ProcessDebugPort и ProcessDebugObjectHandle с bug check.
NtClose можно проверить HANDLE на 0XDEADC0DE и вернуть STATUS_INVALID_HANDLE.
KiDispatchException:STATUS_SINGLE_STEPдолжен обрабатывать дебаггер и нужно скрыть аппаратные точки остановы при обработке этого исключения.
Поскольку автор VMP идёт по следующему странному пути:"Любая симпатия – это ложная жалость, которую покупатели не примут в качестве оправдания."
В результате чего я публикую фикс для TitanHide,а именно обработку ProcessDebugObjectHandle (просто измените код):
C++:
Expand Collapse Copy
 // Handle ProcessDebugObjectHandle early
if(ProcessInformationClass == ProcessDebugObjectHandle &&
        ProcessInformation != nullptr &&
        ProcessInformationLength == sizeof(HANDLE) &&
        Hider::IsHidden(pid, HideProcessDebugObjectHandle))
{
    __try
    {
        ProbeForRead(ProcessInformation, ProcessInformationLength, 4);

        if (ReturnLength != NULL)
            ProbeForWrite(ReturnLength, sizeof(ULONG), 1);
    }
    __except(EXCEPTION_EXECUTE_HANDLER)
    {
        return GetExceptionCode();
    }

    PEPROCESS Process;
    NTSTATUS Status = ObReferenceObjectByHandle(ProcessHandle,
                      PROCESS_QUERY_INFORMATION,
                      *PsProcessType,
                      ExGetPreviousMode(),
                      (PVOID*)&Process,
                      nullptr);
    if(!NT_SUCCESS(Status))
        return Status;

    // (The kernel calls DbgkOpenProcessDebugPort here)

    ObDereferenceObject(Process);

    __try
    {
        *(PHANDLE)ProcessInformation = nullptr;

        if (ReturnLength != nullptr)
            *ReturnLength = sizeof(HANDLE);
    }
    __except(EXCEPTION_EXECUTE_HANDLER)
    {
        return GetExceptionCode();
    }
    return STATUS_PORT_NOT_SET;
}
P.S чтобы загрузить неподписанный драйвер включите Test Mode( bcdedit.exe -set TESTSIGNING ON) и отключите временно Secure Boot(а лучше выполняйте всё на VM).
Я лично не вижу особого смысла распаковывать приложение т.к можно попросту сделать runtime patch + вам потребуется больше времени(в зависимости от защиты)
 
Последнее редактирование:
 
Чтобы помочь людям отвечу вам публично(а не в лс).
UM решение: я уже публиковал статью,насчётспособа обхода(с костылём,но вас это мало должно волновать)
Вам нужно заставить думать,что build number является ложным,чтобы заставить VMP мапить ntdll с диска,где уже можно просто обмануть.
KM решение: любой хук в ядре на обработку следующих моментов(это фикс для TitanHide,но я не буду расписывать как всё правильно делать,ибо спасибо никто не скажет):
PEB->BeingDebugged(просто перезапись в UM на FALSE)
NtQueryInformationProcess:ProcessDebugPort и ProcessDebugObjectHandle с bug check.
NtClose можно проверить HANDLE на 0XDEADC0DE и вернуть STATUS_INVALID_HANDLE.
KiDispatchException:STATUS_SINGLE_STEPдолжен обрабатывать дебаггер и нужно скрыть аппаратные точки остановы при обработке этого исключения.
Поскольку автор VMP идёт по следующему странному пути:"Любая симпатия – это ложная жалость, которую покупатели не примут в качестве оправдания."
В результате чего я публикую фикс для TitanHide,а именно обработку ProcessDebugObjectHandle (просто измените код):
C++:
Expand Collapse Copy
 // Handle ProcessDebugObjectHandle early
if(ProcessInformationClass == ProcessDebugObjectHandle &&
        ProcessInformation != nullptr &&
        ProcessInformationLength == sizeof(HANDLE) &&
        Hider::IsHidden(pid, HideProcessDebugObjectHandle))
{
    __try
    {
        ProbeForRead(ProcessInformation, ProcessInformationLength, 4);

        if (ReturnLength != NULL)
            ProbeForWrite(ReturnLength, sizeof(ULONG), 1);
    }
    __except(EXCEPTION_EXECUTE_HANDLER)
    {
        return GetExceptionCode();
    }

    PEPROCESS Process;
    NTSTATUS Status = ObReferenceObjectByHandle(ProcessHandle,
                      PROCESS_QUERY_INFORMATION,
                      *PsProcessType,
                      ExGetPreviousMode(),
                      (PVOID*)&Process,
                      nullptr);
    if(!NT_SUCCESS(Status))
        return Status;

    // (The kernel calls DbgkOpenProcessDebugPort here)

    ObDereferenceObject(Process);

    __try
    {
        *(PHANDLE)ProcessInformation = nullptr;

        if (ReturnLength != nullptr)
            *ReturnLength = sizeof(HANDLE);
    }
    __except(EXCEPTION_EXECUTE_HANDLER)
    {
        return GetExceptionCode();
    }
    return STATUS_PORT_NOT_SET;
}
P.S чтобы загрузить неподписанный драйвер включите Test Mode( bcdedit.exe -set TESTSIGNING ON) и отключите временно Secure Boot(а лучше выполняйте всё на VM).
Я лично не вижу особого смысла распаковывать приложение т.к можно попросту сделать runtime patch + вам потребуется больше времени(в зависимости от защиты)
на 3.8.8 тоже будет работать? в ченджлогах есть импрув антидебага
 
на 3.8.8 тоже будет работать? в ченджлогах есть импрув антидебага
Я не смотрел всё,что автор изменил после публикации статьи. Одним из мемов стал sys_query_proc(NtQueryInformationProcess) т.к автор вызывает manual syscall, даже если переписать его в стеке на NULL(т.е там идёт доп.переменная,что мы получили вообще syscall_id), но это относится только к sys_query_proc и нужно думать,как он собирает manual syscall(вроде,автор добавил другой способ). Я не видел,чтобы он добавлял bug check,но просто измените хуки на прослушивание и проанализируйте полученный результат.
 
  • Мне нравится
Реакции: mj12
скорее всего там последняя версия крякнутого вмп (3.8.1, 3.8.4), поэтому ты вряд-ли в интернете найдешь паблик анти дебаггер

можешь впринципе попробовать титанхайд какой-нибудь или гиперхайд (не уверен в том что говорю, ибо я не дебажил екзекютбл на котором висит вмп с анти дебаггером)
P.S. в новых версиях вмп есть детект титан хайда(включить его можно с помощью User Mode + Kernel Mode)
 
  • Мне нравится
Реакции: mj12
Можно просто поставить execution бреакпоинт на всю секцию текст,как только он у тебя сработает все файл распоковался и началось выполнять оригинальный код.Ты уже на ентри поинте.Жмешь кнопку дамп в x64dbg и надеваешь праздничные трусики ты победил.

P.S.Можно и как парни сверху писали,но смысл заморачиваться если можно анпакнуть одним брейкпоинтом??????
 
Можно просто поставить execution бреакпоинт на всю секцию текст,как только он у тебя сработает все файл распоковался и началось выполнять оригинальный код.Ты уже на ентри поинте.Жмешь кнопку дамп в x64dbg и надеваешь праздничные трусики ты победил.

P.S.Можно и как парни сверху писали,но смысл заморачиваться если можно анпакнуть одним брейкпоинтом??????
Увы и ах,если виртуализация OEP стоит - вам это не поможет нормально в распаковке.
Не забываем о фиксе импортов и релоков + если используется VMP SDK(всё,кроме VMProtectIsProtected(вроде)) - вам нужно будет фиксить чтение памяти,иначе ваша программа уйдет в STATUS_ACCESS_VIOLATION.
Можно пойти специфическим путём,например,если программа в headers->OptionalHeader.Subsystem == IMAGE_SUBSYSTEM_WINDOWS_CUI/IMAGE_SUBSYSTEM_WINDOWS_GUI(IMAGE_FILE_DLL) и используется CRT - VMP,вроде,не совсем корректно обрабатывает scrt_common_main_seh и dllmain_dispatch(если исправили в последней версии - скажите),то можете просто поменять EP на scrt_common_main_seh или dllmain_dispatch. Это специфический случий,ибо такой халявы увидите,но не забываем про фикс VMP SDK,релоков и импортов.
Вроде,небольшой вспомогательный метод пофиксили(или нет т.к мне лень думать в час ночи) т.к делюсь инфой часто,хотя счастье любит тишину:
VMP вызывает NtProtectVirtualMemory (manual syscall ,если VMP поддерживает этот билд(или спарсил syscall) или вызывает в ntdll ,если что-то пошло не так).Нужно найти последний вызов NtProtectVirtualMemory и после его выполнения, нужно поставить bp(Guard hook ) на выполнение 1 секции VMP и .text секцию.
.text - вы в шоколаде ,а если .vmp0 - вы только найдёте виртуализированный код,но первоначальный код программы не будет выполнен(речь про код оригинальной программы, хотя я тестил только с int3(CC) и могу ошибиться).
 
P.S.Можно и как парни сверху писали,но смысл заморачиваться если можно анпакнуть одним брейкпоинтом??????
А если пользователь не допустит ту же ошибку, что показана на скриншоте? Описанный тобой метод эффективен только для приложений, где минимально задействован VMProtect.
1714976468241.png


Будет ли приложение функционировать после распаковки, если я защищу пользовательский код виртуализацией, например, main функцию? Кстати, ответ на этот вопрос был дан ещё два года назад: Unpack vmprotect 3.4 | Сайт читов, скриптов и кодов для онлайн игр - YouGame.Biz
 
  • Мне нравится
Реакции: mj12
/del
 
Последнее редактирование:
Ну да наверное мой способ сильно ограничен ну если заморачиваться не хочется или ты не шаришь можно попробовать вдруг прокатит
 
P.S. в новых версиях вмп есть детект титан хайда(включить его можно с помощью User Mode + Kernel Mode)
В новых это в каких?Я в 3.8.1 что слили спокойно анти дебаг с титанхайдом прохожу
 
Последнее редактирование:
  • Попкорн
Реакции: mj12
Назад
Сверху Снизу