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

Нужна помощь!!! Как объединить несколько адресов в один скрипт?


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

Уважаемые гейм -хакеры помогите разобраться как в скрипт вписать адреса. В общем суть такова, есть 8 -мь адресов, находятся рядом друг с другом. Обращаются к инструкции по одному. По отдельности скрипты сделал, работают. Но хотелось -бы в один скрипт записать. Мне не надо готового решения, мне надо понять принцип как это сделать Вот 3 -и скрипта для примера, думаю все смысла нет выкладывать. 1-ый скрипт.

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

[ENABLE]
//code from here to '[DISABLE]' will be used to enable the cheat
alloc(newmem,2048)
label(returnhere)
label(originalcode)
label(exit)

newmem:
mov [ebp-00000088],#98

originalcode:
push [ebp-00000088]

exit:
jmp returnhere

"Eschalon Book I.exe"+104147:
jmp newmem
nop
returnhere:


 
 
[DISABLE]
//code from here till the end of the code will be used to disable the cheat
dealloc(newmem)
"Eschalon Book I.exe"+104147:
push [ebp-00000088]
//Alt: db FF B

 

Второй скрипт.

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

[ENABLE]
//code from here to '[DISABLE]' will be used to enable the cheat
alloc(newmem,2048)
label(returnhere)
label(originalcode)
label(exit)

newmem:
mov [ebp-0000008C],#98

originalcode:
push [ebp-0000008C]

exit:
jmp returnhere

"Eschalon Book I.exe"+1040DC:
jmp newmem
nop
returnhere:


 
 
[DISABLE]
//code from here till the end of the code will be used to disable the cheat
dealloc(newmem)

 

3 -ий скрипт.

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

[ENABLE]
//code from here to '[DISABLE]' will be used to enable the cheat
alloc(newmem,2048)
label(returnhere)
label(originalcode)
label(exit)

newmem:
mov [ebp-00000084],#98

originalcode:
push [ebp-00000084]

exit:
jmp returnhere

"Eschalon Book I.exe"+1041B4:
jmp newmem
nop
returnhere:


 
 
[DISABLE]
//code from here till the end of the code will be used to disable the cheat
dealloc(newmem)

 

Смещения рядом, один операнд, один регистр используют. Но вот, что интересно адреса к инструкции обращаются по одному. Как -то интересно нельзя было на одну инструкцию повесить?! Помогите разобраться как с этим бороться?

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

Убрал лишние метки, попробуй скрипт:

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

[ENABLE]
alloc(newmem,2048)
label(newmem1)
label(newmem2)
label(returnhere)
label(returnhere1)
label(returnhere2)

newmem:
mov [ebp-00000088],#98
push [ebp-00000088]
jmp returnhere

newmem1:
mov [ebp-0000008C],#98
push [ebp-0000008C]
jmp returnhere1

newmem2:
mov [ebp-00000084],#98
push [ebp-00000084]
jmp returnhere2

"Eschalon Book I.exe"+104147:
jmp newmem
nop
returnhere:

"Eschalon Book I.exe"+1040DC:
jmp newmem1
nop
returnhere1:

"Eschalon Book I.exe"+1041B4:
jmp newmem2
nop
returnhere2:

[DISABLE]
"Eschalon Book I.exe"+104147:
push [ebp-00000088]
"Eschalon Book I.exe"+1040DC:
push [ebp-0000008C]
"Eschalon Book I.exe"+1041B4:
push [ebp-00000084]

dealloc(newmem)
//Alt: db FF B

 

А потом, добавь и остальные адреса.

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

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

 

Не проще всё записать по одному смещению\коду.

 

Проще, но не видя кода игры, мы не знаем точно, а вдруг перед каждым

push [ebp-00000084]

в коде игры например есть строчка

mov [ebp-00000084],eax

и тогда, твоя запись изменит только одно смещение, соответствующее инструкции инъекции.

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

Точняк!!! Неизвестно какие инструкции рядом стоят...отладку бы глянуть...ноооооо!!!...

как говорится! Методом тычка попробовать всё равно можно!

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

Ребята спасибо! Извините, что сразу не ответил. Проблемы были, в общем не до компа было... . Сейчас всё испытаю отпишусь.

В 03.05.2016в13:18, krocki сказал:

Не проще всё записать по одному смещению\коду.

Типа так...

newmem:
mov byte ptr [ebp-84],62
mov byte ptr [ebp-88],62
mov byte ptr [ebp-8C],62
push [ebp-84]

jmp returnhere

krocki привет! В сущности понятно, что в твоём варианте происходит, но не понятно почему "push" ниже смещений и нет выброса смещения из стека...?

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

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

krocki привет! В сущности понятно, что в твоём варианте происходит, но не понятно почему "push" ниже смещений и нет выброса смещения из стека...?

push [ebp-84] в данном случае - это оригинальная инструкция игры, krocki выбрал одну из твоих инструкций (

originalcode:
push [ebp-00000084]

и повесил всё на неё.

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

Угу!!! Ведь там адреса рядом стоят, поэтому можно повесить всё на одну!

Просто я делаю чит-моды...мне так проще делать...и меньше кода приходится использовать.

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

7 часов назад, Garik66 сказал:

push [ebp-84] в данном случае - это оригинальная инструкция игры, krocki выбрал одну из твоих инструкций (


originalcode:
push [ebp-00000084]

и повесил всё на неё.

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

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

 push ebp //  в общем загнали в стек регистр
 mov ebp,#99 // запсали значение
 mov [eax +04],ebp // записали в адрес
 pop pop // извлекли из стек
 originalcode:

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

 

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

10 минуту назад, SerVick сказал:

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

Это тоже всё понятно, но в данном случае - это твои же оригинальные инструкции игры:

"Eschalon Book I.exe"+104147:
push [ebp-00000088]

Вот этот push у krocki здесь:

push [ebp-84]

только взят из третьей твоей инструкции и всё.

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

Ребята я же не решение просил, конечно спасибо! Но мне можно было из вашей практики,  не обязательно на этих смещениях -они для примера. А т.е. варианты как можно записать в скрипте. Ведь не только в этой игре встречается, а мне доя опыта уже буду знать как бороться... . Но в любом случае получилось 2 -а варианта здесь и один ещё прислал Евгений в личку. Спасибо!!! Завтра на смене будет чем заняться по экспериментировать.

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

Не много наверное я не правильно объяснил. Вот в варианте   krocki  push операнд стоит в нижней строке кода, а не в верхней как обычно, а на этом месте стоит обычно операнд выгрузки. В обычном понятно загрузили в стек, по мудрили и выгрузили. Т.е. срабатывание кода с верху в низ происходит. А тут я просто не понимаю что происходит в коде, ну не совсем. Логику кода не понимаю. Что есть не гут... . И в основном вопросе наверное не правильно выразил мысль, плохо что скрин загрузить не знаю как, там наглядней обрисовал бы тему... .

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

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

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

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