Доброго времени, форум!) Делаю эксперименты с попытками вызовоф winapi функций через sycall, получается вот что: на вин10 все вызовы проходят успешно, на вин11 проходят успешно не все Например NtSetInformationFile правильно работает, а NtCreateSection не работает, ошибка - нет доступа с0000005. Код один и тот де, х64. Кто нибудь подскажет?
Ты не понял, номера сервисов от версии к версии Венды могут меняться, дизассемблируй NtCreateSection в ntdll.dll на 11ой Венде и сравни номер сервиса, который ты вызываешь с номером сервиса, который вызывает функция. --- Сообщение объединено, 13 июл 2022 --- Вообще, слышал в какой-то презе на какой-то конфе про такой алгоритм, чтобы мол не хардкодить номера сервисов: нужно взять все Zw* функции, отсортировать их по имени, и порядковый номер функции в отсортированном массиве будет соответствовать номеру сервиса, никто не проверял, так ли это на самом деле?
Да, я знаю. Но в данном случае не менялись. Например NtReadVirtualMemory номер 63, как в 10 так и в 11. Я думаю, может какая защита появилась?
piligmindo, код надо, или семпл, иначе это угадывание. --- Сообщение объединено, 13 июл 2022 --- не пробовал, надо глянуть; но там парсить в памяти/с диска элементарно, и не надо хардкодить. Ищем все апи Zw (Nt), смотри первый байт, если это 0xB8 (mov ), то значит сискол, копируем номер после оного. Работает и на 32 бит и на 64 .
Это обычный код, который можно найти на гипхабе или в интернете, думаю, что нет смысла его выкладывать..
У аверов на повторное чтение ntdll с диска может привстать шишка, в памяти эти байты уже могут быть переписаны хуком, так что альтернативный вариант пригодится.
у меня лично NtCreateFile работает на 11, а гуглить где-то конкретно секции как то лень; нет так нет, сидите со своими приватами.
Ды дело не в приватах, я просто на гитхабе нашел и пытаюсь копилировать. Если есть возможность проверить - проверь NtCreateSection пожалуйста, потому что NtCreateFile у меня тоже работает
Хз, у меня все отработало и на 10 и на 11. --- Сообщение объединено, 13 июл 2022 --- мб неправильно понял задачу, но номера никак не связаны с алфавитом - две функции на А вначале, но и другие тоже. Вин10.
piligmindo, тут игра в экстрасенсов, но раз приват семплы / сорцы не показываешь, то как иначе? могу сказать только то, что на последней обновленной вин11 вызов Код (C++): pNtCreateSection(&hSection, SECTION_MAP_READ | SECTION_MAP_WRITE | SECTION_MAP_EXECUTE, NULL, (PLARGE_INTEGER)&sz, PAGE_EXECUTE_READWRITE, SEC_COMMIT, NULL); с правами юзера через сискол возращает 0L (suxxess) и секция создается. А там дальше уже смотрите.
piligmindo, на 7ке пашет нормульно, правда в цикле поиска номера сискола есть бажинка (функция GetSysCallNumber)