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

Одна инструкция отвечающая за всё


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

Игра - King's Bounty.Warriors Of The North.Valhalla Edition.v 1.3.1.6280

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

Нашел адрес денег, кристаллов, армии, и.т.д но проблема заключается в том что одна инструкция отвечает за все.

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

Сразу скажу что филтр знаю как искать и делать.

2014021517_4976924_10885849.png

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

Игра - King's Bounty.Warriors Of The North.Valhalla Edition.v 1.3.1.6280

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

Нашел адрес денег, кристаллов, армии, и.т.д но проблема заключается в том что одна инструкция отвечает за все.

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

Сразу скажу что филтр знаю как искать и делать.

2014021517_4976924_10885849.png

Смотри Смещение и пиши фильтр

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

фильтр то я сделал на деньги, ну а как на остольное то сделать, если срабатывает одна инструкция на все.

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

Например:

F1 - Бесконечные деньги

F2 - Кристаллы

F3 - Армия

F4 - Лидерство, и.т.д

Фильтр то на все не напишешь с одной то инструкцией.... Как быть в данной ситуации?

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

Заводишь переменные-флаги (registersymbol (money) например). 0=чит выключен, 1=чит включен. Пишешь в одном скрипте сразу все читы с проверкой нужно ли его включать. Этот здоровый скрипт будет активирующим, его включаешь первым, а потом уже делаешь хоткеи на включение-выключение переменных-флагов. Сразу оговорюсь что я так не делал никогда.


[ENABLE]
alloc(newmem, 1024)
registersymbol (money)
label(money)
registersymbol (crystal)
label(crystal)
registersymbol (army)
label(army)
registersymbol (lider)
label(cheat01)
label(cheat02)
label(cheat03)
label(cheat04)
label(originalcode)
label(exit)
label(returnhere)

newmem:
cheat01:
cmp [money],01
jne cheat02
mov [ebx+10], #999999 //это типа чит на деньги, взят от балды - подставить своё

cheat02:
cmp [crystal],01
jne cheat03
//чит на кристаллы
//далее по аналогии...
originalcode:
//оригинальный код
exit:
//...

money: //по умолчанию все читы выключены
dd 0
crystal:
dd 0
army:
dd 0
lider:
dd 0

address: //адрес инъекции
jmp newmem
nop //не забываем про нопы сколько надо

returnhere:

[DISABLE]
unregistersymbol (money)
unregistersymbol (crystal)
unregistersymbol (army)
unregistersymbol (lider)
dealloc(newmem)
//отключаем читы

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

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

Возьмем за пример оригинальный адрес со значением кристаллов и адрес-копию значения кристаллов.

Код1 обычно циклично читает адрес-копию кристаллов и выводит на экран.

Код2 при изменении оригинального значения кристаллов запишет в адрес-копию значение из оригинального адреса.

На адрес-копию ставим бряк на запись. Идем в игру, изменяем значение кристаллов и возможно найдем инструкцию Кода2, которая индивидуально работает со значением кристаллов. Вот её и можно поправить одним скриптом без фильтра и посмотреть что получится. Если изменения вступят не сразу, то еще можно сделать инъекцию в код1, чтобы на экране данные обновились.

Может быть мы хотим по горячей клавише записать определенное количество кристаллов один раз или хотим добавить N количество кристаллов. Это можно сделать несколькими способами. Можно изменить АА скрипт, чтобы он один раз по флагу записал определенное количество или добавил определенное количество...

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

Код на проверку нажатых клавиш :

»

function OnCheckHotkeys()

if isKeyPressed(VK_E) then << Проверка на нажатие клавиши (E)

-- какое то действие

return

end

«

Может как то в Lua скрипте все это прописать?

На счет флагов, не знаю.

Скорее всего, я могу ошибаться.

Если не то, то сори.

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

aliast

А как хоткеи на включение-выключение переменных-флагов прописать?

Добавляешь в таблицу адреса, в качестве адреса уквазываешь название флага, заданное с помощью registersymbol, например если в скрипте пишешь registersymbol (money), то вручную добавляешь в таблицу переменную с типом 4 байта и адресом money (т.е. вместо цифрового адреса так и пишешь слово money, только может не получиться добавить пока скрипт не включишь и не инициализируешь переменную). Потом на него правой кнопкой и назначаешь хоткей.

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

Вот что получилось у меня, написал скрипт орентируясь по образцу aliast но проблема в том что когда активируешь скрипт и грорячую клавишу то все становится по 999999. А остальные горячие кл попрусту не работают. Может что-то не то вписал?

[ENABLE]
alloc(newmem, 1024)
registersymbol(money)
label(money)
registersymbol(rune)
label(rune)
registersymbol(army)
label(army)
label(cheat01)
label(cheat02)
label(cheat03)
label(originalcode)
label(exit)
label(returnhere)

newmem:
cheat01:
cmp [money],01
jne cheat02
mov ebp,#999999 //это типа чит на деньги, когда активируеш то всё становится по 999999

cheat02:
cmp [rune],01
jne cheat03
mov ebp,#99 //Не работает...????

cheat03:
cmp [army],01
jne originalcode
mov ebp,#99 //Не работает...????

originalcode:
mov [esi+08],ebp
cmp [ebx+6C],edi
exit:
jmp returnhere

money: //по умолчанию все читы выключены
dd 0
rune:
dd 0
army:
dd 0

"KBWotN.exe"+110441: //адрес инъекции
jmp newmem
nop
returnhere:

[DISABLE]
"KBWotN.exe"+110441:
mov [esi+08],ebp
cmp [ebx+6C],edi
unregistersymbol(money)
unregistersymbol(rune)
unregistersymbol(army)
dealloc(newmem)
//отключаем читы

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

А как по твоему скрипт должет отличить, что он пишет именно в адрес кристалов, а не армии?

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


К примеру ниже выкладываю cкрипт для Assassin's Creed 3.Там фильтр общий (cmp esi,edi) и по индивидуальному значению esi/edi (cmp esi,XX)

aobscan(inject_aob, 8B 41 0C C3 xx CC CC CC CC CC CC CC CC CC CC CC 55 8B EC 8B 4D)
alloc(inject_cheat, 2048)
label(returnhere)
label(exit)
registersymbol(inject_aob)
//************************
label(enable_money_cheat)
label(exit_money_cheat)
registersymbol(enable_money_cheat)
label(enable_smoke_cheat)
label(exit_smoke_cheat)
registersymbol(enable_smoke_cheat)
label(enable_poison_dart_cheat)
label(exit_poison_dart_cheat)
registersymbol(enable_poison_dart_cheat)
label(enable_panic_dart_cheat)
label(exit_panic_dart_cheat)
registersymbol(enable_panic_dart_cheat)
label(enable_bullet_cheat)
label(exit_bullet_cheat)
registersymbol(enable_bullet_cheat)
//************************
inject_cheat:
cmp esi,edi
jne exit

cmp [enable_money_cheat],0
je exit_money_cheat
cmp esi,01 // деньги
jne +7
mov [ecx+0C],#777777
exit_money_cheat:

cmp [enable_smoke_cheat],0
je exit_smoke_cheat
cmp esi,05 // дым
jne +7
mov [ecx+0C],#3
exit_smoke_cheat:

cmp [enable_poison_dart_cheat],0
je exit_poison_dart_cheat
cmp esi,24 // дротики яд
jne +7
mov [ecx+0C],#5
exit_poison_dart_cheat:

cmp [enable_panic_dart_cheat],0
je exit_panic_dart_cheat
cmp esi,26 // дротики паника
jne +7
mov [ecx+0C],#3
exit_panic_dart_cheat:

cmp [enable_bullet_cheat],0
je exit_bullet_cheat
cmp esi,0b // пули
jne +7
mov [ecx+0C],#15
exit_bullet_cheat:

exit:
mov eax,[ecx+0C]
ret
int 3
jmp returnhere
//************************
enable_money_cheat:
dd 00
enable_smoke_cheat:
dd 00
enable_poison_dart_cheat:
dd 00
enable_panic_dart_cheat:
dd 00
enable_bullet_cheat:
dd 00
//************************
inject_aob:
jmp inject_cheat
returnhere:

[DISABLE]
inject_aob:
mov eax,[ecx+0C]
ret
int 3
unregistersymbol(inject_aob)
unregistersymbol(enable_money_cheat)
unregistersymbol(enable_smoke_cheat)
unregistersymbol(enable_poison_dart_cheat)
unregistersymbol(enable_panic_dart_cheat)
unregistersymbol(enable_bullet_cheat)
dealloc(inject_cheat)
[ENABLE]

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

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

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

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