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

[ CheatEngine ] Вызов функции в туториале.


ReWanet

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

Ребят не много тупости с моей стороны ->

Решил вызывать функцию создания объектов в игре но для начала пошел тренироваться на туторе CE x32. Передаю все вроде-то коротко вот код:

Скрытый текст

[ENABLE]
aobscanmodule(Health,Tutorial-i386.exe+23CC3,81xxxxxxxxxxxxxxxxxx75xx8bxxxxxxxxxxb2xx8bxxxxxxxxxx8bxxffxxxxxxxxxx8bxxxxxxxxxxb2xx8bxxxxxxxxxx8bxxffxxxxxxxxxxxxxx00xx00xxxx89)
alloc(newmem,$1000,Tutorial-i386.exe+23CC3)
label(code)
label(return)
label(pHealth)
globalalloc(pHealth,4)

newmem:
  mov [pHealth],ebx
  cmp [ebx+00000480],000003E8
  mov eax,#9999
code:
  jmp return
pHealth:
  dd 0

Health:
  jmp newmem
  db 90 90 90 90 90
return:
registersymbol(Health)
registersymbol(pHealth)

[DISABLE]
Health:
  db 81 BB 80 04 00 00 E8 03 00 00
unregistersymbol(Health)
unregistersymbol(pHealth)
dealloc(newmem)
dealloc(pHealth)

{
// ---------- INJECTING HERE -----------
Tutorial-i386.exe+23CC3: 81 BB 80040000 E8030000          - cmp [ebx+00000480],000003E8
// ---------- DONE INJECTING  ----------
}

 

Сам код:

Скрытый текст

[ENABLE]
alloc(MyCode,1024)
registersymbol(MyCode)
CreateThread(MyCode)

MyCode:
mov eax,#123456
mov ebx,[pHealth]
push ebx
push eax
call 00423B00
ret

[DISABLE]
unregistersymbol(MyCode)
dealloc(mycode)

 

Передаю точно все нужное скрипт активируется число пишется лавеха мутится но тутор дропается через 30-60 секунд. Возможно я что-то не так делаю :( ?

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

13 минуты назад, ReWanet сказал:

что-то

Это для какого шага туториала? 

что у тебя в [pHealth]? (если в другом скрипте объявляешь . то кинь сюда тоже

dealloc(mycode) почему my а не My?

call 00423B00  Мне кажется ты опкод разорвал:

Tutorial-i386.exe+23B02 - 89 C6                 - mov esi,eax

 

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

13 минуты назад, Garik66 сказал:

Это для какого шага туториала? 

Первый ( когда пост переделал забыл дописать ). Там где 100 hp в 4byte и надо 1000 заморозить. x32 тутор.
 

13 минуты назад, Garik66 сказал:

что у тебя в [pHealth]? (если в другом скрипте объявляешь . то кинь сюда тоже

Скрытый текст

[ENABLE]
aobscanmodule(Health,Tutorial-i386.exe+23CC3,81xxxxxxxxxxxxxxxxxx75xx8bxxxxxxxxxxb2xx8bxxxxxxxxxx8bxxffxxxxxxxxxx8bxxxxxxxxxxb2xx8bxxxxxxxxxx8bxxffxxxxxxxxxxxxxx00xx00xxxx89)
alloc(newmem,$1000,Tutorial-i386.exe+23CC3)
label(code)
label(return)
label(pHealth)
globalalloc(pHealth,4)

newmem:
  mov [pHealth],ebx
  cmp [ebx+00000480],000003E8
  mov eax,#9999
code:
  jmp return
pHealth:
  dd 0

Health:
  jmp newmem
  db 90 90 90 90 90
return:
registersymbol(Health)
registersymbol(pHealth)

[DISABLE]
Health:
  db 81 BB 80 04 00 00 E8 03 00 00
unregistersymbol(Health)
unregistersymbol(pHealth)
dealloc(newmem)
dealloc(pHealth)

{
// ---------- INJECTING HERE -----------
Tutorial-i386.exe+23CC3: 81 BB 80040000 E8030000          - cmp [ebx+00000480],000003E8
// ---------- DONE INJECTING  ----------
}

 

 

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

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

@ReWanetа что ты хотел своим скриптом сделать для туториала? чтобы кнопочка активировалась?

Не.. Это же запись числа ( Health ). Я просто передаю другое число в функцию и все. Без разницы что делаю мне важен сам факт вызова функции.

Видео:

Скрытый текст

 

 

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

4 минуты назад, ReWanet сказал:

Не.. 

У меня версия СЕ 6.5. У тебя другая и там смещены инструкции.

Ты не можешь кинуть какие у тебя окоды  начиная с этого адреса 

call 00423B00

наверное это начало функции.

 

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

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

У меня версия СЕ 6.5. У тебя другая и там смещены инструкции.

Смотри первый код ( где я делаю [pHealth] ) это инструкция проверки задания ( cmp [eax+xx],3E8 что-то такое )
А вызываю я функцию которая записывает число в [eax+xx] после вычитания когда жмем Hit Me.

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

4 минуты назад, ReWanet сказал:

А вызываю я

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

Можешь показать, что у тебя находиться на адресе  00423B00 в отладчике.В ТАКОМ ВИДЕ:

Скрытый текст

Tutorial-i386.exe+238FC - E8 0F9BFEFF           - call Tutorial-i386.exe+D410
Tutorial-i386.exe+23901 - E8 1AB6FEFF           - call Tutorial-i386.exe+EF20
Tutorial-i386.exe+23906 - 50                    - push eax
Tutorial-i386.exe+23907 - 85 C0                 - test eax,eax
Tutorial-i386.exe+23909 - 75 65                 - jne Tutorial-i386.exe+23970
Tutorial-i386.exe+2390B - B8 05000000           - mov eax,00000005 { 5 }
Tutorial-i386.exe+23910 - E8 5BADFEFF           - call Tutorial-i386.exe+E670

 

 

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

1 час назад, ReWanet сказал:

30-60 секунд.

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

И в скрипте разве не ret 8 нужно использовать для возврата? Иначе стек не очищается от твоих переданных значений.

зы хотя не, там вызов сам должен очищать его.

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

2 часа назад, ReWanet сказал:

Возможно я что-то не так делаю :( ?

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

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

2 часа назад, Garik66 сказал:

Почитай пока это и ссылки - ТЫК может поможет.

Да там вроде ничего такого нет. Я вот по быстрому накидал консольный калькулятор и вызываю и все на ура и без вылетов. Скорее всего либо что-то не передал либо что-то с стеком. Ну как обычно ручки из попки :D 

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

Подписался на вашу тему, ибо такое мне сейчас жизненно необходимо:

В 30.11.2017 в 21:31, partoftheworlD сказал:

Проверяешь, находишь нужную функцию.

И вызываешь её удаленным потоком.

 

Если кто научиться идеально делать так, чтоб не вылетало при вызове функций - дайте знать!

 

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

2 часа назад, vagingameh сказал:

Если кто научиться идеально делать так, чтоб не вылетало при вызове функций - дайте знать!

определи из-за чего вылет, неверно переданные аргументы или же проблема со стеком.
Вроде как в вызове функций ничего сложного нет.

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

12 hours ago, vagingameh said:

Если кто научиться идеально делать так, чтоб не вылетало при вызове функций - дайте знать!

 

Возможно тебе нужно:

 

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

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

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

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