Перейти к содержанию
Авторизация  
nedix

[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 к скилу. Мне нужно просто самому вызвать этот же код.

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

Поделиться сообщением


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

@partoftheworlDесли ты об этом, спасибо, буду изучать

 

Поделиться сообщением


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

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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
48 минут назад, nedix сказал:

если ты об этом, спасибо, буду изучать

нет, про 

 

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

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
35 минут назад, srg91 сказал:

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
3 минуты назад, nedix сказал:

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
8 минут назад, srg91 сказал:

 

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
1 минуту назад, nedix сказал:

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

 

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

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

Поделиться сообщением


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

×

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

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