Initial commit
This commit is contained in:
52
load.sh
Executable file
52
load.sh
Executable file
@@ -0,0 +1,52 @@
|
||||
#!/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
|
||||
Reference in New Issue
Block a user