#!/bin/bash # Попытка выгрузить библиотеку, загруженную через gdb/dlopen в процессе hl_linux. # Для этого ищем путь модуля в /proc//maps и вызываем dlclose через gdb. GAME_PID=$(pidof hl_linux | awk '{print $1}') if [ -z "$GAME_PID" ]; then echo "[-] Ошибка: процесс hl_linux не запущен." exit 1 fi LIB_PATH=$(grep -Eo '/tmp/libahc_rs_[^ ]+\.so|.*/libahc_rs\.so' /proc/$GAME_PID/maps | head -n 1) if [ -z "$LIB_PATH" ]; then echo "[-] Не удалось найти загруженную библиотеку libahc_rs в процессе $GAME_PID." echo " Убедитесь, что вы сначала загрузили библиотеку через load.sh." exit 1 fi GDB_CMD=$(mktemp) cat > "$GDB_CMD" <<'EOF' attach $GAME_PID set $h = (void*)dlopen("$LIB_PATH", 4) if $h call (int)dlclose($h) end detach quit EOF sudo gdb -batch -x "$GDB_CMD" RESULT=$? rm -f "$GDB_CMD" if [ $RESULT -eq 0 ]; then echo "[+] Выгрузка библиотеки завершена." else echo "[-] Ошибка при выгрузке. Проверьте вывод gdb и права sudo." fi