Перейти к содержанию

Имитация однократного нажатия клавиши в СЕ ассемблер


Рекомендуемые сообщения

тогдааа... это будет выглядеть так:

push 0x71 ;VK_F2call [GetAsyncKeyState]cmp [kOptionA+1],ahjz @fmov [kOptionA+1],ahtest ah,ahjz @fcmp [kOptionA],0jnz kkk1push 0push 1push 0push 0x4B ;Kcall [keybd_event]push 0push 2push 0push 0x4B ;Kcall [keybd_event]mov [kOptionA],1jmp @fkkk1:push 0push 1push 0push 0x45 ;Ecall [keybd_event]push 0push 2push 0push 0x45 ;Ecall [keybd_event]mov [kOptionA],0@@:

kOptionA это db 0,0

Изменено пользователем NullAlex
  • Плюс 1
Ссылка на комментарий
Поделиться на другие сайты

kOptionA это db 0,0

я так не могу, в случае пользователя, это конкретный статичный адрес.

и потом возможно, что будет так:

условие 1 - клавиша А

условие 2 - клавиша Б

 

Т.е. в игре будет допустим так 1,1, что ещё,           2, 1,  2,  2, что ещё. 

Т.е. нужно программное одноразовое нажатие на клавиши.

                                                    А, А, ненажимаем, Б, А. Б, Б, не нажимаем.

Ссылка на комментарий
Поделиться на другие сайты

пред. посл. куске кода

Ты про этот?

 

Если про него, то я его пока не тестил, думаю как его приспособить под нужды игры. я писал уже, что в игре kOptionA это статичный адрес.

 

Я понял что нужно сделать флаг, отдельный. Вот сейчас сижу и думаю как это сделать.

 

Вот я тормоз, второй флаг и всё работает. Попозже выложу результат.

 

 

gmz, может в курсе, с чем может быть связан глюк:

Когда писал скрипт строчка call keybd_event компилировалась СЕ.

А теперь, если копирнуть скрипт и в новой таблице его попробовать добавить, строчка не компилируется. 

 

 

Как и обещал выкладываю скрипт, он работает у пользователя в игре:

Но с ним какие-то странные глюки - он не хочет теперь компилироваться СЕ, если создать новую таблицу и в неё вставить скрипт.

Предположение почему не компилирует СЕ, чтобы не повторятся здесь.

{ Game   : ePSXe ENG.exe  Version:  Date   : 2016-02-02  Author : User  This script does blah blah blah}[ENABLE]aobscan(INJECT,88 1C 08 81 E2 FC FF 1F 00) // should be uniquealloc(newmem,$1000)label(code)label(code1)label(return)label(flagUp)registersymbol(INJECT)newmem:  cmp [00A47010],1  jne code1  cmp [flagUp],0  jne code1  pushad  push 0  push 0  push 0  push #36             // Home  call keybd_event  push 0  push 2  push 0  push #36  call keybd_event  mov [flagUp],1  popad  jmp codecode1:  cmp [00A47010],0  jne code  cmp [flagUp],1  jne code  pushad  push 0  push 0  push 0  push #35             // End  call keybd_event  push 0  push 2  push 0  push #35  call keybd_event  mov [flagUp],0  popadcode:  mov [eax+ecx],bl  and edx,001FFFFC  jmp returnflagUp:dd 0INJECT:  jmp newmem  nop  nop  nop  nopreturn:[DISABLE]INJECT:  db 88 1C 08 81 E2 FC FF 1F 00unregistersymbol(INJECT)dealloc(newmem){// ORIGINAL CODE - INJECTION POINT: 02C802B402C8028B: 81 FA 00 00 80 1F     -  cmp edx,1F80000002C80291: 74 62                 -  je 02C802F502C80293: 8B 0D 84 0A 51 00     -  mov ecx,["ePSXe ENG.exe"+110A84]02C80299: F7 C1 00 00 01 00     -  test ecx,1000002C8029F: 75 53                 -  jne 02C802F402C802A1: 8B C8                 -  mov ecx,eax02C802A3: 89 C2                 -  mov edx,eax02C802A5: C1 E9 10              -  shr ecx,1002C802A8: 25 FF FF 00 00        -  and eax,0000FFFF02C802AD: 8B 0C 8D 40 AF 82 00  -  mov ecx,[ecx*4+"ePSXe ENG.exe"+42AF40]// ---------- INJECTING HERE ----------02C802B4: 88 1C 08              -  mov [eax+ecx],bl02C802B7: 81 E2 FC FF 1F 00     -  and edx,001FFFFC// ---------- DONE INJECTING  ----------02C802BD: BB 20 00 E9 02        -  mov ebx,02E9002002C802C2: 03 DA                 -  add ebx,edx02C802C4: 8B 03                 -  mov eax,[ebx]02C802C6: 3D 40 00 C8 02        -  cmp eax,02C8004002C802CB: 75 01                 -  jne 02C802CE02C802CD: C3                    -  ret02C802CE: B8 40 00 C8 02        -  mov eax,02C8004002C802D3: 8B 0C 10              -  mov ecx,[eax+edx]02C802D6: B8 20 00 12 03        -  mov eax,0312002002C802DB: 8B 04 10              -  mov eax,[eax+edx]}  
Изменено пользователем Garik66
Ссылка на комментарий
Поделиться на другие сайты

почему не компилирует СЕ и как мне удалось сделать этот скрипт - ответ 

 

Изменено пользователем Garik66
Ссылка на комментарий
Поделиться на другие сайты

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.