53 lines
2.0 KiB
Bash
Executable File
53 lines
2.0 KiB
Bash
Executable File
#!/bin/bash
|
||
|
||
# Путь к скомпилированной библиотеке
|
||
LIB_NAME="libahc_rs.so"
|
||
LIB_PATH="$(pwd)/target/i686-unknown-linux-gnu/release/$LIB_NAME"
|
||
|
||
if [ ! -f "$LIB_PATH" ]; then
|
||
echo "[-] Ошибка: Файл $LIB_PATH не найден."
|
||
echo "[!] Сначала скомпилируйте проект: cargo build --release --target i686-unknown-linux-gnu"
|
||
exit 1
|
||
fi
|
||
|
||
# Поиск процесса игры
|
||
GAME_PID=$(pidof hl_linux)
|
||
|
||
if [ -z "$GAME_PID" ]; then
|
||
echo "[+] Игра не запущена. Запуск через LD_PRELOAD..."
|
||
echo "[!] Убедитесь, что вы находитесь в папке с игрой или укажите полный путь."
|
||
|
||
# Пример запуска (путь может отличаться в зависимости от установки Steam)
|
||
# LD_PRELOAD="$LIB_PATH" ./hl.sh -game cstrike
|
||
|
||
echo "Введите команду для запуска CS 1.6 (например, ./hl.sh -game cstrike):"
|
||
read -r RUN_CMD
|
||
LD_PRELOAD="$LIB_PATH" eval "$RUN_CMD"
|
||
else
|
||
# Копируем библиотеку в /tmp с уникальным именем для форсированной перезагрузки
|
||
TIMESTAMP=$(date +%s)
|
||
TMP_LIB="/tmp/libahc_rs_$TIMESTAMP.so"
|
||
cp "$LIB_PATH" "$TMP_LIB"
|
||
chmod 777 "$TMP_LIB"
|
||
|
||
echo "[+] Инъекция: $TMP_LIB"
|
||
|
||
# Создаем временный файл команд для gdb
|
||
GDB_CMD=$(mktemp)
|
||
echo "attach $GAME_PID" > "$GDB_CMD"
|
||
echo "call (void*)dlopen(\"$TMP_LIB\", 2)" >> "$GDB_CMD"
|
||
echo "detach" >> "$GDB_CMD"
|
||
echo "quit" >> "$GDB_CMD"
|
||
|
||
# Запускаем gdb
|
||
sudo gdb -batch -x "$GDB_CMD"
|
||
|
||
rm "$GDB_CMD"
|
||
|
||
if [ $? -eq 0 ]; then
|
||
echo "[+] Sucsess injected"
|
||
else
|
||
echo "[-] Ошибка при инъекции. Проверьте, установлен ли gdb и есть ли права sudo."
|
||
fi
|
||
fi
|