DaVilka Опубликовано 4 апреля, 2018 Поделиться Опубликовано 4 апреля, 2018 Хочу сделать аналог Stealthedit на C++, но не могу понять как она работает, разжуйте плиз основной принцип ) Ссылка на комментарий Поделиться на другие сайты Поделиться
partoftheworlD Опубликовано 4 апреля, 2018 Поделиться Опубликовано 4 апреля, 2018 Когда копируешь выделенный участок кода который собираешься модифицировать по адресу ставится новая защита неисполняемого участка памяти и защитник страницы(который ты модифицировал/собираешься модифицировать), как только срабатывает первый бряк отладчик изменяет EIP на оригинальный участок кода(скопированный), а когда срабатывает второй бряк, то возвращает выполнение на модифицированную страницу. Типа того На с++ это так работает. Спойлер DWORD OldProt; SYSTEM_INFO system_info; GetSystemInfo(&system_info); VirtualProtect(reinterpret_cast<void*>(0xDEADBEEF), system_info.dwPageSize, PAGE_EXECUTE | PAGE_GUARD, &OldProt); LONG WINAPI UnhandledExceptionFilter(EXCEPTION_POINTERS *pExceptionInfo) { if (pExceptionInfo->ExceptionRecord->ExceptionCode == STATUS_GUARD_PAGE_VIOLATION) { if (pExceptionInfo->ContextRecord->Eip == 0xDEADBEEF) { pExceptionInfo->ContextRecord->Eip = reinterpret_cast<DWORD>(OrigCopy); } pExceptionInfo->ContextRecord->EFlags |= 0x100; return EXCEPTION_CONTINUE_EXECUTION; } if (pExceptionInfo->ExceptionRecord->ExceptionCode == STATUS_SINGLE_STEP) { DWORD OldProt; SYSTEM_INFO system_info; GetSystemInfo(&system_info); VirtualProtect(reinterpret_cast<void*>(0xDEADBEEF), system_info.dwPageSize, PAGE_EXECUTE | PAGE_GUARD, &OldProt); return EXCEPTION_CONTINUE_EXECUTION; } return EXCEPTION_CONTINUE_SEARCH; } Я мог что-то напутать или забыть, но можешь загуглить PageGuard Hooking, есть статьи где подробно расписано как это работает. 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
DaVilka Опубликовано 4 апреля, 2018 Автор Поделиться Опубликовано 4 апреля, 2018 (изменено) 9 часов назад, partoftheworlD сказал: Типа того Ааа, PAGE_GUARD не смогу поставить, защита не дает, а PAGE_NOACESS можно перехватывать? Изменено 5 апреля, 2018 пользователем Xipho Пункт 1.8 правил форума. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения