lirikmel сказал(а):последние версии Gameguard пошли уже и с x64 драйвером , поэтому раньше проблем и не было , GG просто не функционировал как надо.
насчет эмуляции в порте , не думаю что можно это сделать на autoit. Что касаемо с PS/2 то пример выше, но и такой вариант не проходит в данный момент хотя часто выручал меня с другими анти-чит системами..у Самого этот вопрос висит , но немогу найти ответНо в таком случае как работает программная клавиатура вопрос?
lirikmel сказал(а):к сожелению в x64 системах цифровая подпись требует денег ,...хотя (я не пробывал) может стоит подписать драйвер сторонней утилитой , но опять же это только для вашей машины , ...ну или пользоваться на x32 системе , там вы не столкнетесь с такой проблемой
![]()
nowost сказал(а):не знаю подойдет или нет, но недавно наткнулся на вот это, мышка у меня работает в неактивном окне, клавиши шлются только Ф1-Ф12 (Винда 7Х64)
C2H5OH сказал(а):По поводу защиты.
У меня вот такой простенький скрипт приводит к крашу клиента по причине "protection error" (не сразу, скрипт успевает поработать несколько минут)
Клиент в окне 800х600, просто смотрю красную полоску жизни моба. Даже не посылаю ничего!
Я не пойму как вообще создают темы и начинают обсуждать ботов к Linage. А защиту как вы обходите?
#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
nowost сказал(а):Видимо необходимо двигаться в сторону микроконтроллеров. Не сочтите за рекламу, например продают готовое устройство ___http://usb2kbd.info
не совсем так. подобные устройства определяется как HID и использует родные виндовые драйвера.
Пока что никаких ответов по этому поводу нет, единственный рабочий варик запуска скрипта это через удалённое подключение..простите за вопрос новичка:
кто может скинуть готовый скрипт, как с помощью данной методики послать, скажем, нажатия F1 F2, чтоб система думала, что набирает USB клавиатура (для обхода защиты)
так как я не смог разобраться в наборе кодов, выложенных выше