// В DLL
extern "C" __declspec(dllexport) void UseObject(MyClass* obj);
// В основной программе
typedef void (__stdcall *UseObjectFunc)(MyClass*);
HMODULE hModule = LoadLibrary("MyDll.dll");
if (hModule) {
UseObjectFunc UseObject = (UseObjectFunc)GetProcAddress(hModule, "UseObject");
if (UseObject) {
MyClass myObject;
UseObject(&myObject);
}
FreeLibrary(hModule);
}
// В DLL
extern "C" __declspec(dllexport) void UseObject(MyClass* obj) {
if (obj) {
obj->SomeMethod();
}
}
// В DLL
class __declspec(dllexport) MyClass {
public:
void SomeMethod();
};
// В основной программе
class __declspec(dllimport) MyClass {
public:
void SomeMethod();
};
я узнал что веб сокету тебя в примере НЕ websocket!
$port = (int) rand(1000, 9999);
при этом кто то умудрился подключиться, если не ты, и отправить какие то данные, потому что $line = socket_read($connect, 8129);
не должен возвращать что либо, если никто не подключился$connect = socket_accept($this->_socket);
я бы лучше сравнивал с !==false для надежности, и для отладки, вывел бы сообщение об ошибке если ===false echo json_encode($line,JSON_UNESCAPED_UNICODE)
, тогда только не читаемые символы будут отображены экранированным кодом, а остальные - текстом.# uname -r
5.15.0-91-generic
# cat /proc/filesystems | grep fat
vfat
# grep EXFAT /boot/config-5.15.0-91-generic
CONFIG_EXFAT_FS=m
CONFIG_EXFAT_DEFAULT_IOCHARSET="utf8"
Пример - в linux с издавних пор существовала утилита chroot, ее единственная задача - подмена системных вызовов доступа к файлам с целью обмануть запускаемое приложение и подсунуть корневую файловую систему, отличающуюся от основной. Т.е. единственное что она делает, это удаляет начало пути ко всем файлам, т.е. если указать ей запустить программу с новым root /mnt/disk то /mnt/disk/usr/bin/... становится /usr/bin/... и эта простая подмена дает огромные возможности по изоляции приложений в своей песочнице, но так как многим приложениям требуется доступ к служебным файловым системам /proc и /sys, для них эти файловые системы монтировались как копия (mount bind), т.е. приложение, запущенное из chroot имеет доступ к хост системе /proc и /sys а при наличии root доступа (уровень привилегий с помощью chroot не менялся) получается доступ к буквально любому процессу (в /proc/$pid) и оперативной памяти (/proc/mem)
lxc это развитие этого подхода, на основе cgroup, который позволяет более точно определить права доступа, но все еще не полностью (на сколько я понял тут больше функционала по настройке сети). Я читал что возможна такая конфигурация lxc контейнера, что возможности выйти наружу не будет, но и приложения внутри контейнера будут иметь меньше привилегий (условный root там уже не получишь)