Что нового

[Мышь, клавиатура] Экранная клавиатура и GameGuard

Tyr

Новичок
Сообщения
43
Репутация
4
C2H5OH
Код:
Sleep(5000)
Send("{g down}") 
Sleep(100)
Send("{g up}") 
 Send("{e down}") 
Sleep(100)
Send("{e up}")

Вот так... просто нажатие не работало, поэтому скриптом опускаю и поднимаю
 

Bagora

Новичок
Сообщения
1
Репутация
0
Как зарегистрировать winio64.dll в W7x64?
Писал в от админа в cmd.exe "regsvr32 winio64.dll", выдало что Модуль загружен, но точка входа DllregisterServer не найдена.
В тест моде винды все работало, но использовать его не вариант.
 
Автор
L

lirikmel

Продвинутый
Сообщения
226
Репутация
84
к сожелению в x64 системах цифровая подпись требует денег , :scratch:...хотя (я не пробывал) может стоит подписать драйвер сторонней утилитой , но опять же это только для вашей машины , ...ну или пользоваться на x32 системе , там вы не столкнетесь с такой проблемой :smile:
 

bugaj

Знающий
Сообщения
140
Репутация
11
lirikmel сказал(а):
последние версии Gameguard пошли уже и с x64 драйвером , поэтому раньше проблем и не было , GG просто не функционировал как надо.
насчет эмуляции в порте , не думаю что можно это сделать на autoit. Что касаемо с PS/2 то пример выше, но и такой вариант не проходит в данный момент хотя часто выручал меня с другими анти-чит системами.
Но в таком случае как работает программная клавиатура вопрос?
.у Самого этот вопрос висит , но немогу найти ответ

какие успехи в этой теме?

я тут начал ковыряться с драйверами и чую дело это не быстрое (а потому и думаю может это взять да и не париться), я уже даже научился делать драйверы которые ничего полезного не делают ) кстати в том числе нашел статью как сделать драйвер по записи инфы в порт....правда там пишут в LPT порт.

Эти dll насколько я понимаю и есть прямая запись в порт, судя по ужасам в исходном коде. А во вторых чтобы эту библиотеку установить нужно установить драйвер(судя по всему драйвер работы с портами), видимо который и фигачит в порт, т.е. получается что хоть пиши свой фильтр драйвер на мышь или клаву, что тут драйвер, все равно косяк с подписями. Видимо в длл содержатся процедуры работы с драйвером и т.е. на уровне приложения мы вызываем команды драйвера, а они уже в порт пишут. Короче косяк в том, что и так и сяк есть драйвер который можно спалить защитой и у которого нет подписи ) хотя это не проблема насколько я понял что ее нет.


Добавлено:
Сообщение автоматически объединено:

lirikmel сказал(а):
к сожелению в x64 системах цифровая подпись требует денег , :scratch:...хотя (я не пробывал) может стоит подписать драйвер сторонней утилитой , но опять же это только для вашей машины , ...ну или пользоваться на x32 системе , там вы не столкнетесь с такой проблемой :smile:

контроль подписей легко вырубить :scratch: Либо как то через Hid.dll или ее обертки - но я так и не разобрался как. Либо через уже установленный драйвер, но это АСМ и системное программирование 99 лвла, я даже не надеюсь осилить )


Добавлено:
Сообщение автоматически объединено:

nowost сказал(а):
не знаю подойдет или нет, но недавно наткнулся на вот это, мышка у меня работает в неактивном окне, клавиши шлются только Ф1-Ф12 (Винда 7Х64)

это обычные API функции, ибо в user32 они и содержатся, т.е. это посылка сообщения окну, и в скрытое окно оно посылает, но ни от какого гейм гварда это не спасет.


Добавлено:
Сообщение автоматически объединено:

C2H5OH сказал(а):
По поводу защиты.
У меня вот такой простенький скрипт приводит к крашу клиента по причине "protection error" (не сразу, скрипт успевает поработать несколько минут)

Клиент в окне 800х600, просто смотрю красную полоску жизни моба. Даже не посылаю ничего!
Я не пойму как вообще создают темы и начинают обсуждать ботов к Linage. А защиту как вы обходите?

ну это потому что ты обращаешься прям к окну игры, если бы ты просто делал скриншоты хрен знает зачем и чего то на них искал, то гварду было бы параллельно, но то что ты используешь API функции применительно к тому что он защищает, он это и палит.
 

bugaj

Знающий
Сообщения
140
Репутация
11
ау, есть кто живой? А кто нить может объяснить механизм работы маус клика в этой теме? почему там тысяча повторяющихся строк? )
 
Автор
L

lirikmel

Продвинутый
Сообщения
226
Репутация
84
не часто здесь появляюсь но все довольно просто , да вы абсолютно правы насчет того что запись идет через эти длл прямо в порт , поэтому и столько строк в маузклике открыти отправка положение закрытие и тп прочитайте просто про ps2 порт все станет ясно. опять же работает только в тест моде для некоторых видов защит это уже достаточно и они блокирут работу таких утилит. данный вариант позволял отправлять нажатия в аллоды но при этом геймгуард блочил их на корню
 

nowost

Знающий
Сообщения
178
Репутация
17
Хотелось бы немного оживить тему, а не пробовал ли кто нибудь эмулировать через DirectInput. В блокнот клавиши отлично уходят надо бы проверить в игре с ГГ
Код не мой. я только разместил объяву как говорится...
Код:
#include <WinAPI.au3>
#include <Memory.au3>

Global Const $KEYEVENTF_KEYUP = 2
Global Const $KEYEVENTF_UNICODE = 4
Global Const $INPUT_KEYBOARD = 1
Global Const $iInputSize = 28

;Global Const $MEM_COMMIT=0x00001000
;Global Const $PAGE_EXECUTE_READWRITE = 0x40

Global Const $tagKEYBDINPUT = _
    'ushort wVk;' & _
    'ushort wScan;' & _
    'dword dwFlags;' & _
    'dword time;' & _
    'ulong_ptr dwExtraInfo'

Global Const $tagINPUT = _
    'dword type;' & _
    $tagKEYBDINPUT & _
    ';dword pad;' & _
    'dword pad;'

Global $hDll = DllOpen('user32.dll')
Global $sString = "abcde abcde abcde abcde abcde "

HotKeySet("{HOME}", "__send")
HotKeySet("{END}", "exiter")

Run("notepad.exe")
;WinWait("Untitled - Notepad")
;WinActivate("Untitled - Notepad")
;$timer2=''
Sleep (1000)
_SendEx("DD")
;While 1
   ; $timer=TimerInit()
  ;  if $timer2='' Then
     ;   $timer2=TimerInit()
   ; EndIf

   ; if TimerDiff($timer2)>1000 Then
    ;    _SendEx("00")
    ;    $timer2=''
   ; EndIf
;WEnd



func __send()
    _SendEx("AA")
EndFunc

func exiter()
    Exit
EndFunc

Func _SendInputKB_NewThread($iINPUTs, $pINPUTs, $iSize, $fFreeRes = False)

    If @AutoItX64 Then Return SetError(1, 0, 0) ; your code wouldn't work for x64
    Local $aCall
    Local Static $pSpace, $pSendInput

    If $pSpace Then
        If $fFreeRes Then
            _MemVirtualFree($pSpace, 0, $MEM_RELEASE)
            $pSpace = 0
            $pSendInput = 0
        EndIf
    Else
        $aCall = DllCall("kernel32.dll", "ptr", "GetProcAddress", _
                "handle", _WinAPI_GetModuleHandle("user32.dll"), _
                "str", "SendInput")
        If @error Or Not $aCall[0] Then Return SetError(1, 0, 0)
        $pSendInput = $aCall[0]
        $pSpace = _MemVirtualAlloc(0, 23, $MEM_COMMIT, $PAGE_EXECUTE_READWRITE)
    EndIf
    Local $tCodeBuffer = DllStructCreate("byte[23]", $pSpace)

    DllStructSetData($tCodeBuffer, 1, _
            "0x" & _
            "68" & Hex(BinaryMid($iSize, 1, 4)) & _              ; push cbSize
            "68" & Hex(BinaryMid($pINPUTs, 1, 4)) & _            ; push pInputs
            "68" & Hex(BinaryMid($iINPUTs, 1, 4)) & _            ; push nInputs
            "B8" & Hex(BinaryMid($pSendInput, 1, 4)) & _         ; mov eax, [SendInput]
            "FFD0" & _                                           ; call eax
            "C3" _
            )

    $aCall = DllCall("kernel32.dll", "handle", "CreateThread", _
            "ptr", 0, _
            "dword", 0, _
            "ptr", $pSpace, _
            "ptr", 0, _
            "dword", 0, _
            "dword*", 0)
    If @error Or Not $aCall[0] Then Return SetError(8, 0, "")

    Return $aCall[0] ; Thread handle (to be able to close it at some point)

EndFunc

Func _SendInputKB($iInputs, $pInputs, $iSize, $hDll = 'user32.dll')
    Local $aRet = DllCall($hDll, 'uint', 'SendInput', 'uint', $iInputs, 'ptr', $pInputs, 'int', $iSize)
    If @error Or Not $aRet[0] Then Return SetError(1, 0, False)
    Return SetError(0, 0, True)
EndFunc

Func _SendEx($sString)
    Local $tINPUTs, $pINPUTs, $iINPUTs
    Local $sStruct
    Local $iFlags, $iStrLen

    $iFlags = BitOR($KEYEVENTF_UNICODE, $KEYEVENTF_KEYUP)
    $iStrLen = StringLen($sString)

    $sStruct = ''

    For $i = 1 To $iStrLen * 2
        $sStruct &= $tagINPUT
    Next

    $tINPUTs = DllStructCreate($sStruct)
    $pINPUTs = DllStructGetPtr($tINPUTs)
    $iINPUTs = $iStrLen * 2

    For $i = 0 To $iStrLen-1
        Local $Temp = AscW(StringMid($sString, $i+1, 1))
        Local $iOffsetDown = $i * 8
        Local $iOffsetUp   = $i * 16

        DllStructSetData($tINPUTs, $iOffsetDown+1, $INPUT_KEYBOARD)
        DllStructSetData($tINPUTs, $iOffsetDown+3, $Temp)
        DllStructSetData($tINPUTs, $iOffsetDown+4, $KEYEVENTF_UNICODE)

        DllStructSetData($tINPUTs, $iOffsetUp+9, $INPUT_KEYBOARD)
        DllStructSetData($tINPUTs, $iOffsetUp+11, $Temp)
        DllStructSetData($tINPUTs, $iOffsetUp+12, $iFlags)
    Next
    _SendInputKB_NewThread($iINPUTs, $pINPUTs, $iInputSize, False)
   ;_SendInputKB($iINPUTs, $pINPUTs, $iInputSize, $hDll)
EndFunc

DllClose($hDll)
Exit
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Этот способ дошел до нас еще из каменного века. Прекрасно работал в Diablo II. Из-за его древности, ГГ стали блокировать его самым первым. Хотя в некоторых играх (EVE Online), чья жизнеспособность напрямую зависит от наличия ботов, с частичными ограничениями (клик куда бы он не посылался, происходит только по краю окна) он работал.
 

bugaj

Знающий
Сообщения
140
Репутация
11
Я сделал драйвер, который двигает и кликает УСБ мышку, но пока ни на чем защищенном не тестил. Подписывать драйвер не вариант, т.к. его быстро добавят в ГГ, так что в любом случае деньги на ветер. Вариант с PS/2 у меня не прокатил просто потому, что мне тупо нечего воткнуть в Ps/2, а без этого порт не ведет себя нужным образом. кстати если кто шарит, оч. нужна помощь, автоматический инсталлятор драйвера не могу сделать (

кстати на счет тестового режима, там вроде только инсталлировать драйвер без подписи запрещено, поэтому если драйвер 1 раз инсталлируется и торчит, то достаточно 1 раз отрубить контроль цифровых подписей, а потом уже можно в обычном режиме фигачить, у меня такой драйвер, а тот что в winIO загружается и сносится в приложении, впрочем если даже не сносить, он после ребута наверное не загрузится уже. Одна беда не могу свой поставить автоматом. Есть правда и другая беда - курсор мыши не двигается вообще, а движения и клики делаются :-D хотя может это и не беда
 

nowost

Знающий
Сообщения
178
Репутация
17
Видимо необходимо двигаться в сторону микроконтроллеров. Не сочтите за рекламу, например продают готовое устройство ___http://usb2kbd.info
 

bugaj

Знающий
Сообщения
140
Репутация
11
nowost сказал(а):
Видимо необходимо двигаться в сторону микроконтроллеров. Не сочтите за рекламу, например продают готовое устройство ___http://usb2kbd.info

угу и как в виртуальной машине в несколько окон колбасить при помощи микроконтроллера? ) такие девайсы уже делают, не знаю может даже продают. Чтобы отправлять микроконтроллеру команды понадобится драйвер, драйвер потребует цифровой подписи, все упирается в них, куда не пойди
 

nowost

Знающий
Сообщения
178
Репутация
17
не совсем так. подобные устройства определяется как HID и использует родные виндовые драйвера.
 

Вложения

  • hid.jpg
    hid.jpg
    6.9 КБ · Просмотры: 28

bugaj

Знающий
Сообщения
140
Репутация
11
не совсем так. подобные устройства определяется как HID и использует родные виндовые драйвера.

я не это имел ввиду, кто и как будет отправлять устройству инфу о том куда мышь двигать? драйвер мыши только получает инфу от устройства, а кто ее туда будет посылать?
 

bonik2020

Новичок
Сообщения
11
Репутация
1
простите за вопрос новичка:
кто может скинуть готовый скрипт, как с помощью данной методики послать, скажем, нажатия F1 F2, чтоб система думала, что набирает USB клавиатура (для обхода защиты)
так как я не смог разобраться в наборе кодов, выложенных выше
 

Raspopov

Новичок
Сообщения
5
Репутация
0
простите за вопрос новичка:
кто может скинуть готовый скрипт, как с помощью данной методики послать, скажем, нажатия F1 F2, чтоб система думала, что набирает USB клавиатура (для обхода защиты)
так как я не смог разобраться в наборе кодов, выложенных выше
Пока что никаких ответов по этому поводу нет, единственный рабочий варик запуска скрипта это через удалённое подключение..
 
Верх