Как я могу назвать функции Windows API из двоичного кода Linux внутри подсистемы Windows для Linux (WSL)? Я почти уверен, что нет документального способа сделать это, но, тем не менее, может быть интересно попробовать.Вызвать Win32/NT-Native API из подсистемы Windows для Linux-процессов?
Я заинтересован в вызове функций Win32, или если это невозможно, по крайней мере, для Windows NT API (Nt *, Zw *). Собственные API-интерфейсы должны быть как минимум доступными, поскольку компонент, который запускает процессы Linux (lxss), зависит от этих API.
Может потребоваться создать пользовательскую функцию LoadLibrary для загрузки DLL-файлов Windows. Другая идея заключалась бы в поиске памяти процесса для известных частей функций ядра (то есть их точек входа в пользовательский режим).
Кто-нибудь экспериментировал с этим и хотел бы поделиться решением?
Эта презентация - https://github.com/ionescu007/lxss/blob/master/The%20Linux%20kernel%20hidden%20inside%20windows%2010.pdf - предлагает (по крайней мере для меня), что процессы linux -called pico обработал, что у них нет ntdll, сопоставленных с их адресным пространством. Кроме того, все системные вызовы обрабатываются поставщиком процессов pico для WSL (я ожидаю, что они просто используют таблицу диспетчеризации системных служб, поэтому системные вызовы NT недоступны из пользовательского пространства). –