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

[GTA: San Andreas] Как вызвать функцию увеличения скилла мускулатуры без занятия на тренажерах?


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

Приветствую.

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

Используя Cheat Engine и его автоассемблер, хочу чтоб при нажатии хоткея посылался код, отвечающий за поднятие штанги.

 

В Cheat Engine я нашел адрес (единственный, статический) и выявил инструкции (их 4):

 

Спойлер

00467402 - DB 00  - fild dword ptr [eax]
00466456 - 8B 17  - mov edx,[edi]
00465FD9 - 8B 07  - mov eax,[edi]
00465F3F - 89 07  - mov [edi],eax


Я пытался по разному добавлять код одной из инструкций, но никаких результатов не дало.

Делал это через Template - AOB Injection и копировал в "newmem" содержимое 'code":

 

Спойлер

aobscanmodule(musk3,gta_sa.exe,89 07 5F 32 C0) // should be unique
alloc(newmem,$1000)

label(code)
label(return)

newmem:
  mov [edi],eax
  pop edi
  xor al,al

code:
  mov [edi],eax
  pop edi
  xor al,al
  jmp return

musk3:
  jmp newmem
return:
registersymbol(musk3)


Единственного результата добился, вылета, когда вставил все содержимое одной из инструкций:

 

Спойлер

newmem:
  mov edi,eax
  call gta_sa.exe+64790
  fild dword ptr [eax]
  jmp gta_sa.exe+6717B
  push 02
  jmp return

code:
  fild dword ptr [eax]
  jmp gta_sa.exe+6717B
  jmp return

 

 

 

 

Будьте добры, укажите на ошибки. Благодарю.

P.S. Вообще хочу подобное реализовать в мультиплеере.

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

16 часов назад, nedix сказал:

Вообще хочу подобное реализовать в мультиплеере.

Если значения/данные хранятся на сервере. То это дохлый номер.
 

 

16 часов назад, nedix сказал:

newmem:
  mov [edi],eax
  pop edi
  xor al,al

code:
  mov [edi],eax
  pop edi
  xor al,al
  jmp return

Так ты же ничего не поменял. Оно просто взяло и повторило то что и должно было быть сделано.
К примеру.
Если бы ты сделал:

newmem:
  add eax, #100
  mov [edi],eax
  pop edi
  xor al,al

Вот тогда, может быть, ты бы что-то получил.

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

6 часов назад, Yuzia сказал:

Если значения/данные хранятся на сервере. То это дохлый номер.

Ну фиг знает по идеи да, но как то же взламывают мп игры. 

 

6 часов назад, Yuzia сказал:

Так ты же ничего не поменял. Оно просто взяло и повторило то что и должно было быть сделано.

Ну так мне это и надо. Как бы определенное нажатие клавиш в игре вызывает код, который отвечает за +1 к скилу. Мне нужно просто самому вызвать этот же код. Возможно ошибаюсь.

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

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

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

Я не правильно понял направление разговора, в котором шла тема, поэтому перенес. 

Окей, я тогда перенесу обратно и удалю лишние сообщения, чтобы не смущать людей.

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

8 часов назад, nedix сказал:

Как бы определенное нажатие клавиш в игре вызывает код, который отвечает за +1 к скилу. Мне нужно просто самому вызвать этот же код.

Есть же статья на форуме по реверсу чит-кодов в гта.

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

35 минут назад, srg91 сказал:

Еще наверное может вот эту посмотреть: 

 

Я так понял, чтобы сделать что-то в игре кодом, нужно создать поток "createthread"?

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

3 минуты назад, nedix сказал:

Я так понял, чтобы сделать что-то в игре кодом, нужно создать поток "createthread"?

 

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

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

8 минут назад, srg91 сказал:

 

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

 

Можно спросить, почему в том коде нет "aobscanmodule()"?

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

1 минуту назад, nedix сказал:

Можно спросить, почему в том коде нет "aobscanmodule()"?

 

А зачем? Это обучение вызыва функций, а не туториал по всему cheat engine.

Научишься применять createthread, потом научишься применять aobscanmodule где-нибудь еще.

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

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

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

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