Софт Ahk2Dll

Статус
В этой теме нельзя размещать новые ответы.

#Rin

Известный
Автор темы
Всефорумный модератор
1,214
1,035
Ahk2Dll
Компилятор AHK в DLL.
И можно инжектнуть ахк скрипт в любой процесс.
Для GTA SA, можно поменять расширение на .asi и закинуть в папку с игрой.
Скачать можно во вложении.

Нововведения:
  • Функция reload не действует в DLL, из-за проблем с очисткой памяти и GUI.​
  • Функция ExitApp в DLL переделана под закрытие потока, а не процесса.​
  • Добавлена встроенная переменная A_IsDll, содержит 1 (true) если код исполняется в dll'ке, и 0 (false) в противоположном случае.​
  • Для DLL добавлены переменные A_DllName, A_DllDir, A_DllPath (Аналог A_ScriptName, A_ScriptDir, A_ScriptFullPath), так как переменные по типу A_ScriptName и т.п содержат название процесса в который инжекнута DLL.​

AHK Injector
Пример кода для инжекта dll в процесс:
AutoHotKey:
Process, Exist, gta_sa.exe
PID := ErrorLevel
if (PID != 0)
    InjectDll(PID, A_WorkingDir "\AHK.dll")

InjectDll(PID, DllPath)
{
    static PROCESS_ALL_ACCESS     := 0xFFFFF
        , MEM_COMMIT            := 0x00001000
        , MEM_RESERVE            := 0x00002000
        , PAGE_READWRITE         := 0x04
   
    Size := VarSetCapacity(DllFile, StrLen(DllPath))
    StrPut(DllPath, &DllFile)
   
    ; Получаем доступ к процессу.
    if (!pHandle := DllCall("OpenProcess", "UInt", PROCESS_ALL_ACCESS, "Int", FALSE, "UInt", PID))
        goto Error
    ; Ищем kernel32.dll.
    if (!pModule := DllCall("GetModuleHandle", "Str", "kernel32.dll"))
        goto Error
    ; Ищем LoadLibrary (Суффикс A означает что работаем в ANSI, один байт на символ).
    if (!pFunc := DllCall("GetProcAddress", "Ptr", pModule, "AStr", "LoadLibraryA"))
        goto Error
    ; Выделяем память под аргумент LoadLibrary, а именно - строку с адресом инъектируемой DLL.
    if (!pLibrary := DllCall("VirtualAllocEx", "Ptr", pHandle, "Ptr", NULL, "Ptr", Size, "UInt", MEM_RESERVE | MEM_COMMIT, "UInt", PAGE_READWRITE))
        goto Error
    ; Пишем байты по указанному адресу.
    if (!pWrite := DllCall("WriteProcessMemory", "Ptr", pHandle, "Ptr", pLibrary, "Ptr", &DllFile, "Ptr", Size, "Ptr", NULL))
        goto Error
    ; Создаем поток, передаем адрес LoadLibrary и адрес ее аргумента.
    if (!hThread := DllCall("CreateRemoteThread", "Ptr", pHandle, "UIntP", NULL, "UInt", NULL, "Ptr", pFunc, "Ptr", pLibrary, "UInt", NULL, "UIntP", NULL))
        goto Error
    DllCall("CloseHandle", "UInt", pHandle)
    return true
Error:
    DllCall("CloseHandle", "UInt", pHandle)
    return false
}
 

Вложения

  • Ahk2Dll.exe
    1.3 MB · Просмотры: 277
Последнее редактирование:

Dimic

Новичок
15
2
Error at line 7.

Line Text: G
Error: This line does not contain a recognized action.

The program will exit.
 

Dimic

Новичок
15
2
I downloaded your Ahk2Dll.exe

071uNMM.png
 

Smer4

Известный
424
51
Я так думаю что то типо moonloader не за горами с такими успехами
 

BASS_DEVSOFTWARE

Известный 🇺🇦
Друг
264
567
Есть возможность открыть такой dll?
И вопрос, ответом на который будет ответ на вопрос выше ( :facepalm: ) - можно ли узнать, этот dll замаскированный ahk или нет?
 

#Rin

Известный
Автор темы
Всефорумный модератор
1,214
1,035
Есть возможность открыть такой dll?
Да, но если это AHK Protector то нет.
можно ли узнать, сделан ли этот dll на AHK?
Сигнатуры. Бинарники почти идентичны.
P.S. Простой способ это посмотреть в раздел RCDATA.
 

0x544

Новичок
2
0
Как всегда превосходно от данного юзера.
Пошли думы о возвращении в AHK.
 
Статус
В этой теме нельзя размещать новые ответы.