В AHK вообще не шарю, умею только по кнопке в чат написать, можете кто то сделать/подсказать как делать инжектор для кс и других игр?
То есть при открытии, будет типо "скрытый инжект", без выбора путя и тд. Просто чтобы это было в коде. При запуске сразу инжект, и ни каких окон.
Много хочу, сам понимаю, но помогите пж)
#Persistent
#NoEnv
#SingleInstance Force
; Убедитесь, что скрипт работает с правами администратора
If !A_IsAdmin
{
MsgBox, Скрипт должен быть запущен с правами администратора!
ExitApp
}
; Путь к DLL, которую мы будем инжектировать
dllPath := "C:\MeCode.dll"
; Проверка наличия процесса Notepad.exe
Process, Exist, Notepad.exe
if (ErrorLevel = 0) {
MsgBox, Процесс Notepad.exe не найден!
ExitApp
}
pid := ErrorLevel ; PID найденного процесса
MsgBox, Процесс game.exe найден, PID: %pid%
; Получаем хэндл процесса
hProcess := DllCall("OpenProcess", "uint", 0x1F0FFF, "int", 0, "uint", pid, "ptr")
if (hProcess = 0) {
MsgBox, Не удалось получить хэндл процесса. Ошибка: %ErrorLevel%
ExitApp
}
; Выделение памяти для записи пути к DLL
dllPathAddr := DllCall("VirtualAllocEx", "ptr", hProcess, "ptr", 0, "uint", StrLen(dllPath) + 1, "uint", 0x1000, "uint", 0x40, "ptr")
if (dllPathAddr = 0) {
MsgBox, Не удалось выделить память. Код ошибки: %ErrorLevel%
DllCall("CloseHandle", "ptr", hProcess)
ExitApp
}
; Запись пути к DLL в память
WriteProcessMemory(hProcess, dllPathAddr, dllPath)
; Получаем адрес LoadLibraryA
loadLibraryAddr := DllCall("GetProcAddress", "ptr", DllCall("GetModuleHandle", "str", "kernel32.dll"), "str", "LoadLibraryA", "ptr")
if (loadLibraryAddr = 0) {
MsgBox, Не удалось получить адрес LoadLibraryA.
DllCall("CloseHandle", "ptr", hProcess)
ExitApp
}
; Создаём удалённый поток для загрузки DLL
hThread := DllCall("CreateRemoteThread", "ptr", hProcess, "ptr", 0, "uint", 0, "ptr", loadLibraryAddr, "ptr", dllPathAddr, "uint", 0, "ptr", 0)
if (hThread = 0) {
MsgBox, Не удалось создать удалённый поток. Код ошибки: %ErrorLevel%
DllCall("CloseHandle", "ptr", hProcess)
ExitApp
}
; Ожидаем завершения потока
DllCall("WaitForSingleObject", "ptr", hThread, "uint", 0xFFFFFFFF)
; Закрываем хэндлы
DllCall("CloseHandle", "ptr", hProcess)
DllCall("CloseHandle", "ptr", hThread)
; Если инжекция прошла успешно, проигрываем звук
SoundPlay, C:\Windows\Media\notify.wav
MsgBox, Инжекция завершена успешно!
ExitApp
; Функция записи в память процесса
WriteProcessMemory(hProcess, address, data) {
VarSetCapacity(buf, StrLen(data), 0)
StringPutChar, buf, data
DllCall("WriteProcessMemory", "ptr", hProcess, "ptr", address, "ptr", &buf, "uint", StrLen(data), "ptr", 0)
}