release ver
This commit is contained in:
38
unload.sh
Executable file
38
unload.sh
Executable file
@@ -0,0 +1,38 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Попытка выгрузить библиотеку, загруженную через gdb/dlopen в процессе hl_linux.
|
||||
# Для этого ищем путь модуля в /proc/<pid>/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
|
||||
Reference in New Issue
Block a user