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

Как сделать Активацию скрипта


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

Здравствуйте уважаемые Гейм Хакеры, Хочу сделать функцию активации трейнера, на примет я создал 6 функций трейнера, 1 жизни, 2 выносливость, 3 манна, 4 патроны, 5 гранаты, 6 очки улучшения.Как на эти 6 функций, сделать скрипт активации, что бы можно было нажать и эти 6 функций активировались, например нажал на скрипт активации трейнер,и все функции трейнера активировались, вот теперь можно нажать и активировать функцию жизни.

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

 

Я надеюсь понятно объяснил

Не судите строго если что то не понятно

Если можно покажите на примере этого скрипта

 

[ENABLE]alloc(newmem,2048,"GTA5.exe"+22274F)label(returnhere)label(originalcode)newmem:mov [rsi+00000280],(float)100originalcode:comiss xmm7,[rsi+00000280]jmp returnhere"GTA5.exe"+22274F:jmp newmemnopnopreturnhere:[DISABLE]dealloc(newmem)"GTA5.exe"+22274F:comiss xmm7,[rsi+00000280]
Ссылка на комментарий
Поделиться на другие сайты

[terminus]--------------------------------------------------------------------------------

Привет!

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

принцип работы:

Делишь скрипт на две основные части - первая делает aobscan и инъекции всех

функций трейнера, а функции при этом активизируются при установке флагов, то

есть помимо основной части (одного большого скрипта, который делает aobscan,

инъекции во всех местах, а в каждой инъекции проверяется установка того или

иного флага для той или иной функии) ты делаешь N однотипных скриптов, у которых

в секции ENABLE нужный флаг устанавливается в 1, а в секции DISABLE - в 0.

--------------------------------------------------------------------------------[/terminus]

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

Как сделать скрипт активации, я более менее понял, но мене не понятно немного про, BaseCode от куда его брать, насколько я знаю когда делаешь скрипт, то обскан на каждую инструкцию идёт свой, а тут он получается один на все инструкции, ну дак вот я хочу понять от куда его брать, и как правильно его брать.

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

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

[terminus]--------------------------------------------------------------------------------

Функция aobscan просто ищет адрес по маске и записывает его в переменную,

которую ты укажешь. В одном скрипте можно применять эту функцию сколько угодно

раз, просто переменные назови разными именами.

--------------------------------------------------------------------------------[/terminus]

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

к с тате привет keng, я на верное не правильно объяснил, я хотел сделать как на C++ там сигнатуру отвечает за работу трейнера, вот если ты её не правильно возьмёшь то трейнер, точней функции тренера не будут работать,  я много раз смотрел я так не понял сигнатуру нужно брать с определённого участка или можно взять с любого участка

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

[terminus]--------------------------------------------------------------------------------

Так. Во-первых, сигнатура - это набор байт, опкоды определенной

последовательности инструкций. Что делает функция aobscan? По сути, делает она

поиск подстроки в строке, возвращая адрес первого вхождения или 0. Ты можешь

написать скрипт, который будет выполнять только набор вызовов aobscan, после

чего у тебя будут адреса для каждой инструкции, адрес которой обнаружился или

нет. После этого в скрипте, активирующем ту или иную опцию, можно проверить, не

0 ли находится по адресу, по которому лежит инструкция. Если 0 - значит aobscan

сработала неудачно, если не 0 - значит все ок и опцию можно включить\выключить.

Вообще, кстати, если у тебя хоть одна из сигнатур не найдется (результатом

работы aobscan будет 0), то скрипт не выполнится, а следовательно и работать не

будет.

--------------------------------------------------------------------------------[/terminus]

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

Как сделать скрипт активации, я более менее понял, но мене не понятно немного про, BaseCode от куда его брать, насколько я знаю когда делаешь скрипт, то обскан на каждую инструкцию идёт свой, а тут он получается один на все инструкции, ну дак вот я хочу понять от куда его брать, и как правильно его брать.

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

 

1. Сигнатура должна быть уникальной

2. Инструкция на сигнатуру должна быть часто обращаемой

3. Возможно, на инструкции потребуется проверить с каким адресами она работает, с одним или несколькими. От этого зависит инъекция кода. Она будет с фильтрами или без. С фильтрами нужна для таких читов как убийство с одного удара

4. Сигнатуру можно построить автоматически. Выделить инструкцию в дизасемблере. Перейти в автоассемблер. Выбрать AOB шаблон

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

 

Я думаю, что нет никаких руководств по выбору сигнатуры. Определяешь сигну всегда экспериментально. Если не работает что-то, то искать ошибку.

 

Если сделал шесть читов с сигнатурами через AOB. То выбери ту, которая связана с часто обращаемой инструкцией. Дальше возникает задача по объединению всех скриптов в мастер скрипт. Это может быть не просто и просто. Если читы работают все со структурой игрока, то просто. Если читы работают с разными структурами, то нужно найти указатели на них или отличать их по условиям (фильтрам) или же как по пункту 5 вытаскивать поинтеры из разных сигнатур. Ну либо не вытаскивать, а искать поинтеры...

 

Умение объединять скрипты в мастер скрипт приходят с опытом. Когда в игре читы ведут к ошибкам, то скрипты придется проверять в пошаговой отладке. Все условия построения скриптов определяются в режиме "здесь и сейчас" для конкретной игры. Заранее предсказать правильный и точный выбор сигнатуры, скорее всего, невозможно даже, когда ты сигнатуру построил. Поиграл, посмотрел... работает, значит работает. Правильно или не правильно, узнаешь когда всю игру пройдешь. До того как пройдешь, можешь только надеяться, что сигна рабочая.

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

или можно взять с любого участка

Baracuda, сигнатуру можно брать с любого участка, главное:

1. Сигнатура должна быть уникальна.

2. Повторяема, т.е. после перезагрузки игры, она должна быть той же самой.

3. Не обязательно, чтобы начало сигнатуры совпадало с первым байтом нужной тебе инструкции, ты можешь сделать сигнатуру, а потом добавить нужное кол-во байт к метке. Ну наверное ты видел такие скрипты, ну например вот известный скрипт из твоей же темы:

[ENABLE]aobscanmodule(InfiniteCash,GTA5.exe,E2 48 83 C1 10 48 89 4C 24 10 8B 01 33 C9 89 44 24 08) alloc(newmem,$1000,"GTA5.exe"+C31565) label(code)label(return)label(go)label(michael)label(franklin)label(trevor) label(Odin) registersymbol(Odin)registersymbol(InfiniteCash)newmem:cmp [rcx+d4],'MONE'//Y_SPENT_IN_CLOTHESje franklincmp [rcx+134],'MONE'//Y_SPENT_IN_CLOTHESje michaelcmp [rcx+94],'MONE'//Y_SPENT_IN_CLOTHESje trevormichael:cmp [rcx+144],'LOTH'je gojmp codefranklin:cmp [rcx+e4],'LOTH'je gojmp codetrevor:cmp [rcx+a4],'LOTH'  je gojmp codego:cmp byte ptr[Odin],1  jne code              mov byte ptr[Odin],0 xor [rcx],rcx         add [rcx],#100000                          xor [rcx],rcx        code:mov eax,[rcx]xor ecx,ecxmov [rsp+08],eaxjmp returnOdin:                db 1                  InfiniteCash+0A: // Вот что я имею ввиду, как видишь здесь добавляется 10 байт, чтобы попасть наjmp newmem       // нужную нам инструкцию.nopnopnopreturn:[DISABLE]InfiniteCash+0A: // Вот что я имею ввиду, как видишь здесь добавляется 10 байт, чтобы попасть на                 // нужную нам инструкцию.db 8B 01 33 C9 89 44 24 08unregistersymbol(Odin) unregistersymbol(InfiniteCash)dealloc(newmem)  
  • Плюс 2
Ссылка на комментарий
Поделиться на другие сайты

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

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

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