![]() 4 / 4 / 6
Регистрация: 03.05.2014
Сообщений: 101
|
|||||||||||||||||||||
WIN32 API в Windows 7: как вызывать функцию NtCreateThread из ntdll.dll07.02.2016, 13:26. Показов 4954. Ответов 15
Метки нет Все метки)
(
Значит дело такое, решил я узнать, как вызывать функцию NtCreateThread из ntdll.dll
Прототип был найден
Я с ужасом обнаружил там заглушку на заглушку, отправляющую нас в api-ms-win-core-processthreads-l1-1-0.dll
P.S.: Немного оффтоп, но объясните мне, пожалуйста, какая из функций (Zw или Nt) выполняет валидацию параметров, а какая нет. А то я запутался. Добавлено через 7 минут Нашёл реализацию в kernelbase.dll Но всё-таки: как оно работает?
0
|
07.02.2016, 13:26 | |
Ответы с готовыми решениями:
15
Как исправить ошибку, связанную с atidxx32.dll и ntdll.dll Ошибка в ntdll.dll при игре в Diablo 1 на Windows XP SP2 При запуске своей проги на Windows 7, ругается на ntdll.dll |
Ушел с форума
![]() ![]() |
||||
07.02.2016, 15:10 | ||||
Нужные объявления можно найти в заголовках из Windows Driver Kits (WDK), а также (частично) в заголовке <winternl.h>. Для функций и структур, которые документированны, в MSDN есть описание. ntdll.dll - это лишь переходник, который загружает в eax номер соответствующего системного сервиса и делает вызов в ядро (sysenter/syscall). параметров и проверки безопасности выполняются всегда. Более того, Nt и Zw в режиме пользователя - одно и то же, у них адреса в ntdll.dll совпадают.
1
|
232 / 135 / 19
Регистрация: 10.11.2015
Сообщений: 305
|
||
07.02.2016, 15:29 | ||
PS: У Неббета кстати есть её описание.
0
|
![]() 4 / 4 / 6
Регистрация: 03.05.2014
Сообщений: 101
|
|||
07.02.2016, 22:56 [ТС] | |||
Убеждённый,
К сожалению всё что вы рассказали, я уже знал. Но спасибо. Я не понимал как эти параметры создать. Для OBJECT_ATTRIBUTES нашёл InitializeObjectAttributes, понел, что там указываются параметры nt объекта (как банально). Не было найдено масок для Desired Access. Так же не знаю как создать THREAD_CONTEX и INITIAL_TEB. Наверняка есть какие-нибудь функции, ткните носом пожалуйста. И всё-таки. Каким лесом вызываются эти функции? Там же одни заглушки.
0
|
Ушел с форума
![]() ![]() |
|||
08.02.2016, 10:52 | |||
Length - размер структуры, ObjectName - указатель на UNICODE_STRING с именем объекта, в Attributes - атрибуты, обычно OBJ_CASE_INSENSITIVE (в ядре еще OBJ_KERNEL_HANDLE). Все. Остальное undocumented. Примеры работы с этими структурами можно увидеть только в исходниках Windows (NT4/W2K/WRK), но никаких гарантий, разумеется, никто не даст. вызываешь ли ты Nt-функцию или Zw-функцию, т.к. у них одна и та же точка входа в ntdll.dll. Так что разницы никакой.
1
|
![]() 4 / 4 / 6
Регистрация: 03.05.2014
Сообщений: 101
|
||
10.02.2016, 10:23 [ТС] | ||
Добавлено через 10 часов 49 минут Но всё-таки. Как вызываются WINAPI функции в Windows Vista и старше? Наверное там какой-то код, который над таблицей импорта шаманит...
0
|
Ушел с форума
![]() ![]() |
||
10.02.2016, 10:26 | ||
На самом деле некоторое из того, что считается undocumented, не меняется годами.
Да, структуры дополняются, но новые поля, как правила, добавляются в конец. Кое-что можно найти по сигнатурам, если очень нужно. Кстати, это вполне рабочий метод, при условии, что сигнатура достаточно четкая. Я так ZwProtectVirtualMemory в ядре искал, к примеру, а также некоторые флаги внутри EPROCESS, которые по-другому ничем не вытащить. Так что не все потеряно, просто в таких вещах действовать нужно ну очень осмотрительно и сначала семь раз отмерить и все перепроверить. Вызываются также, как и на других версиях Windows.
1
|
![]() 4 / 4 / 6
Регистрация: 03.05.2014
Сообщений: 101
|
|
10.02.2016, 10:45 [ТС] | |
В этих версиях добавили кучу dll подходящх под маску api-ms-win-*
На эти dll и ссылаются все стандартные либы (по крайней мере kernel32.dll, advapi32.dll). По факту код kernel32.dll находится в kernelbase.dll Но в api-ms-win-* находятся заглушки return 0; Как управление передаётся kernelbase.dll?
0
|
Ушел с форума
![]() ![]() 16364 / 7677 / 1078
Регистрация: 11.11.2010
Сообщений: 13,743
|
|
10.02.2016, 11:04 | |
Убежденный,
подвох, наверное, в слове "и старше". Подразумевается скорее всего 64-разрядные Windows 7/Windows 8. Параметры в WinAPI передаются уже не только через стек, а через регистры RCX, RDX, R8, R9, через стек, вещественные через XMM0-XMM3
0
|
Ушел с форума
![]() ![]() |
||
10.02.2016, 11:48 | ||
![]() Решениефункций-заглушек из api-ms-win-xxx на реальные адреса из реальных dll. За отображение отвечает специальная dll-ка - apisetschema.dll: приложение/dll -> kernel32!некая функция -> api-ms-win-abcde[заглушка] -> somedll!реальная функция Каких именно dll - это пользователей Win32 API вообще не должно волновать. Ну то есть, API Sets - это вообще внутренний механизм системы для упрощения поддержки и организации совместимости, нас, программистов, он не касается, мы по-прежнему юзаем kernel32.dll, advapi32.dll, old32/combase.dll и т.д.
2
|
![]() 4 / 4 / 6
Регистрация: 03.05.2014
Сообщений: 101
|
||
10.02.2016, 14:47 [ТС] | ||
Добавлено через 6 минут Ладно, это оказалась полная пустышка. Может когда-нибудь мне удастся выяснить как оно работает. Это как-то сложно. А, гениально. Там же есть данные. Имена функций... Добавлено через 8 минут Сорри за оффтоп, но можно ли где-то найти хотя бы прототипы функций из BOOTVID.DLL? Гугл не помогает по вполне известным "ошибкам в BOTTVID.DLL"
0
|
Ушел с форума
![]() ![]() |
|
10.02.2016, 15:18 | |
1
|
Ушел с форума
![]() ![]() |
|
11.02.2016, 14:16 | |
Ну даже если .lib-файлов нету - это проблема?
Напиши свой драйвер-заглушку с таким же именем и точно такими же экспортами, как у bootvid.dll - получишь подходящий lib.
2
|
![]() 4 / 4 / 6
Регистрация: 03.05.2014
Сообщений: 101
|
|
11.02.2016, 22:08 [ТС] | |
0
|
11.02.2016, 22:08 | |
Помогаю со студенческими работами здесь
16
ntdll.dll и kernel32.dll - Реальные примеры работы на vb6 Win32 API, MFC, или Windows Forms? Как вызывать функции из DLL? Книга Юрий Щупак Win32 API. Разработка приложений для Windows Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Опции темы | |
|
Новые блоги и статьи
![]() |
||||
Мастер-класс по микросервисам на Node.js
Reangularity 21.06.2025
Node. js стал одной из самых популярных платформ для микросервисной архитектуры не случайно. Его неблокирующая однопоточная модель и событийно-ориентированный подход делают его идеальным для. . .
|
Управление Arduino из WPF приложения
Wired 21.06.2025
Зачем вообще связывать Arduino с WPF-приложением? Казалось бы, у Arduino есть собственная среда разработки, своя экосистема, свои способы управления. Однако при создании серьезных проектов. . .
|
Звёздная пыль
kumehtar 20.06.2025
Я просто это себе представляю: как создавался этот мир. Как энергия слипалась в маленькие частички. Как они собирались в первые звёзды, как во вселенной впервые появился Свет. Как эти звёзды. . .
|
Создание нейросети с PyTorch
AI_Generated 19.06.2025
Ключевое преимущество PyTorch — его питоновская натура. В отличие от TensorFlow, который изначально был построен как статический вычислительный граф, PyTorch предлагает динамический подход. Это. . .
|
JWT аутентификация в ASP.NET Core
UnmanagedCoder 18.06.2025
Разрабатывая веб-приложения, я постоянно сталкиваюсь с дилеммой: как обеспечить надежную аутентификацию пользователей без ущерба для производительности и масштабируемости? Классические подходы на. . .
|
Краткий курс по С#
aaLeXAA 18.06.2025
Здесь вы найдете все необходимые функции чтоб написать програму на C#
Задание 1:
КЛАСС FORM 1
public partial class Form1 : Form
{
Spisok listin = new Spisok();
. . .
|
50 самых полезных примеров кода Python для частых задач
py-thonny 17.06.2025
Эффективность работы разработчика часто измеряется не количеством написаных строк, а скоростью решения задач. Готовые сниппеты значительно ускоряют разработку, помогают избежать типичных ошибок и. . .
|
C# и продвинутые приемы работы с БД
stackOverflow 17.06.2025
Каждый . NET разработчик рано или поздно сталкивается с ситуацией, когда привычные методы работы с базами данных превращаются в источник бессонных ночей. Я сам неоднократно попадал в такие ситуации,. . .
|
Angular: Вопросы и ответы на собеседовании
Reangularity 15.06.2025
Готовишься к техническому интервью по Angular? Я собрал самые распространенные вопросы, с которыми сталкиваются разработчики на собеседованиях в этом году. От базовых концепций до продвинутых. . .
|
Архитектура Onion в ASP.NET Core MVC
stackOverflow 15.06.2025
Что такое эта "луковая" архитектура? Термин предложил Джеффри Палермо (Jeffrey Palermo) в 2008 году, и с тех пор подход только набирал обороты. Суть проста - представьте себе лук с его. . .
|