Всем привет немогу вызвать длл мейн без создания потоков сейчас делаю вот так но ловлю краши винду все NTSTATUS не имеют ошибок если не вызывать длл мейн то крашей нету
С каких пор DllMain возвращает NTSTATUS? Процесс валится или бсод? И надо бы наверное весь кодец посмотреть, а не его урывки, которые еще и без форматирования грузишь.
Попробуйте отключить SMEP/SMAP для начала, хотя не уверен что это поможет, ибо пользовательский код должен выполняться на другом уровне привилегий. Раз уж есть доступ в ядро, стоит рассмотреть вариант с перехватом контекста потока приложения, хотя проще создать новый поток.
Код (Text): // Define driver initialization routine type. // typedef NTSTATUS (*PDRIVER_INITIALIZE) ( IN struct _DRIVER_OBJECT *DriverObject, IN PUNICODE_STRING RegistryPath ); Код (Text): typedef NTSTATUS(WINAPI* FnDllEntryPoint)(HINSTANCE, DWORD, LPVOID); Это получается прямая передача управления из ядра на юзер код. Если там что то отличное от возврата константы, это и должно упасть, даже не учитывая nx(smep etc). Это же передача управления вникуда. Во первых окружение разное, сегменты
Пытаюсь через перехват контекста но у меня почему то структура контекста по нулям я выделил память в игре через PsGetContextThread получил контекст без ошибок все но почему то там все пусто оч редко бывает один регистр заполнен тестировал на разных приложения x64 останавливал приложени перед получение контекста потоки брал не застопленые и др а которые работают
accord, Код бы глянуть, в данной теме ничего предсказать нельзя. Зачем вообще вызывать EP ? Загрузка из памяти через настройку образа ядром ? В чужом потоке такое делать нельзя, вероятно он отвалится после возврата контекста. Это нужно делать в новом потоке, причём если защиты нет(аверы античиты и тп).
Да ставил Приду домой скину код вот и сама суть там анти чит а потоки не хочу создавать из за него но я тестил на своем приложении но там тоже по нулям контекст а само приложение видит контекст
Васм постепенно превращается в анноунчитс или в подобные форумы. Чет много тем про читы в последнее время.
accord, Любой норм античит отслеживает потоки. Перехватываются события создания потоков, при этих событиях потоки маркируются/добавляются в доверенные списки, те доверенный поток может быть создан только доверенным. А далее при выполнении какой то апи/кода/события проверяется является ли текущий поток доверенным. Поэтому если вызвать dll-EP в не доверенном потоке, то управление пойдёт вне целевой длл, всякие апи и это приведёт скорее всего к проверке читом текущего потока. Конечно лучше get/set-ctx использовать. Хотя тоже сомнительно, античиты проверяют загрузку длл аналогично как и потоки. Нужно либо локально решать для конкретного чита, либо тз пересматривать, те не грузить какие то длл не понятно зачем.
Rel, > Чет много тем про читы в последнее время. Потому что виксы в комерц целях уже не актуальны, да и на данный момент там техники слишком сложны для реализации, впрочем как и защита. Сейчас читы популярны, спрос огромный, а простота реализации доступна полным нуби, так как античиты примитивны, это набор патчей. Эта тема яркий тому пример.
Indy_, он все регистры видит как пустые а в приложении если чекать этот же контект то он имеет значения в регистрах при том что в драйвере ошибок нету не каких
accord, Код (Text): PsLookupThreadByThreadId(hThread, &thread); Во первых ID обьекта это не его HANDLE. А во вторых я не вижу у вас что есть hThread.
поток не остановлен и работает Код (Text): hThread = pInfo->Threads[i].ClientId.UniqueThread; --- Сообщение объединено, 12 фев 2020 --- Не понял что с кодом не так
получаю ошибку C0000001 вроде все как надо Код (Text): CONTEXT* ctx = (CONTEXT*)ExAllocatePoolWithTag(NonPagedPool, sizeof(CONTEXT), 'enoN'); ... status = GetContextThread(thread, ctx, KernelMode);