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

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

Привет всем гейм хакерам, у меня возникла не большая проблема, скачал вчера пира тку GTA 5 решил взломать, 

взломал на жизни, и на патроны, решил взломать еще на деньги, нашёл инструкцию которая отвечает за денежки, 

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

но не могу сделать фильтр, не могу найти ID отличающий деньги от, например, выносливости,

я знаю, что можно сделать как-то проще, сделать скрипт, и к нему добавить адрес, естественно это адрес будет

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

 

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

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

  • Ответов 79
  • Создана
  • Последний ответ

Топ авторов темы

Ты уверен, что там нужен фильтр?

 

Может ставить бряк надо на экранный адрес. В инструкцию работающей с экранным адресом и делать инъекцию. Я думаю пример ниже это то, что я думаю.

 

 

Link

[Enable]alloc(sm_1,32,GTA5.exe) //Set Moneyaobscanmodule(sm_aob1,GTA5.exe,48 8B 43 08 48 89 04 CA)registersymbol(sm_aob1)label(returnhere_sm_1)label(newMoney)registersymbol(newMoney)label(isMoney)//--------------------------------------------------//sm_1:cmp [rdx+rcx*8],#0 //<-- PUT YOUR CURRENT CASH HEREje isMoneymov rax,[rbx+08]mov [rdx+rcx*8],raxjmp returnhere_sm_1//--------------------------------------------------//isMoney:mov rax,[newMoney]mov [rdx+rcx*8],raxjmp returnhere_sm_1newMoney:dd 0//--------------------------------------------------//sm_aob1:jmp sm_1nopnopnopreturnhere_sm_1:[Disable]sm_aob1:db 48 8B 43 08 48 89 04 CAunregistersymbol(sm_aob1)dealloc(sm_1)unregistersymbol(newMoney)
Ссылка на комментарий
Поделиться на другие сайты

GTA5.exe+C31C75 - 8B 01                 - mov eax,[rcx] вот адрес который отвечает за деньги можно ли вот с этой инструкцией сделать mov eax,[rcx] 

GTA5.exe+C31C77 - 33 C9                 - xor ecx,ecx

GTA5.exe+C31C79 - 89 44 24 08           - mov [rsp+08],eax

 

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

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

Подозреваю, что обнуляются из за

newMoney:dd 0
Запиши сюда нужное колличество денег в байтах, думаю все получиться

GTA5.exe+C31C75 - 8B 01 - mov eax,[rcx] вот адрес который отвечает за деньги можно ли вот с этой инструкцией сделать mov eax,[rcx]

GTA5.exe+C31C77 - 33 C9 - xor ecx,ecx

GTA5.exe+C31C79 - 89 44 24 08 - mov [rsp+08],eax

Попробуй:

mov [rcx],#1000000mov [eax],rcx
Изменено пользователем Vlad2
Ссылка на комментарий
Поделиться на другие сайты

Понимаете это инструкция mov eax,[rcx] отвечает не только за деньги но и за другие данные игрока 

 

я пробовал вписывать и сюда cmp [rdx+rcx*8],#0 - сюда и сюда-db 0 толку ноль,

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

но только с этой инструкцией mov eax,[rcx], что бы не на до было добавлять, не чего в скрипт, а добавлять на до было в 

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

в адрес который рядом.

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

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

 

---->New Money

^How To Use:^
1) Go to gun shop
2) Open up script, put in your current cash in line 15, press OK
If you had 100 dollars it would say "cmp [rdx+rcx*8],#100"
3) Activate Script
4) Enter amount of money you want in "New Money"
5) Buy anything from gun shop
6) Profit
7) Deactivate script just in case

 

Идем в магазин.

На 15 линии пишем деньги на счету и жмем Ок. Если на счету 100$, то "cmp [rdx+rcx*8],#100" (т.е. фильтр по текущему значению денег)

Активируем скрипт

Пишем в метку newMoney желаемое мани

Че-нить покупаем

Профит

Деактивируем.

 

Вообще я жалею, что привел этот скрипт. Только путает. И я его привел в учебных целях. Можешь скачать таблицу автора по ссылке, что я привел и пользуйсо.


Попробуй как я писал.

 

Найти экранный адрес или любой другой текущих денег в игре. Или адрес текстом.

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

В инструкцию работающей с экранным адресом и делать инъекцию чтобы записывалось в рабочий адрес. 

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

Я думаю пример ниже это то

Пример не очень, автор скрипта просто использует фильтр (используя "старое" значение денег). Что не очень корректно, так как могут быть одинаковые значения для разных характеристик. И к тому же не дописал скрипт до нормального состояния.

Вот для примера написал скрипт для "Kings Bounty-Warriors of the North-Ice and Fire", использую подобную инструкцию, как и у Baracuda, т.е. инструкция работает практически со всеми характеристиками. 

Видео:

но не могу сделать фильтр,

Действительно фильтр практически найти не возможно (не по регистрам, не в структуре).

 

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

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

Но это довольно сложно. У меня пока не получается. 

[ENABLE]alloc(newMem, 128)label(returnHere)label(Old)registersymbol(Old) // старое значениеlabel(New)registersymbol(New) // новое значениеnewMem:cmp dword ptr [New],0je @fpush ebxmov ebx, dword ptr [Old]cmp ebx, dword ptr [ecx+08]pop ebxjne @fpush ebxmov ebx, dword ptr [New]mov dword ptr [ecx+08],ebxmov dword ptr [New],0 // если добавить эту строчку в скрипт (на видео без неё), то будет изменяться одно pop ebx               // значение, после чего нужно опять записать новое значение и поменяется следующее                      // значение.@@:mov eax,[ecx+08]ret 0004jmp returnHereOld:  // Добавьте в таблицу адрес с адресом "Old"dd 0New:  // Добавьте в таблицу адрес с адресом "New"dd 0KBWotN.exe+1E70:jmp newMemnopreturnHere:[DISABLE]KBWotN.exe+1E70:mov eax,[ecx+08]ret 0004dealloc(newMem) 
Изменено пользователем Garik66
Ссылка на комментарий
Поделиться на другие сайты

aobscanmodule(cash,GTA5.exe,8B 01 33 C9 89 44 24 08 8D 51 04 48 8B C1 48 FF C1 83 E0 07 8A 44 04 10 30 44 0C 07 48 FF CA 75 EA 8B 44 24 08 C3 CC)

registersymbol(cash)

alloc(newmem,2048,cash)

label(returnhere)

label(originalcode)

label(Valuecurrent)

registersymbol(Valuecurrent)

label(go)

label(michael)

label(franklin)

label(trevor)

newmem:

cmp [rcx+d4],'MONE'

je franklin

cmp [rcx+134],'MONE'

je michael

cmp [rcx+94],'MONE'

je trevor

jmp originalcode

michael:

cmp [rcx+144],'LOTH'

je go

jmp originalcode

franklin:

cmp [rcx+e4],'LOTH'

je go

jmp originalcode

trevor:

cmp [rcx+a4],'LOTH'

je go

jmp originalcode

go:

push rsi

mov rsi,rcx

xor rsi,#9999999999

mov [rcx],esi

pop rsi

mov eax,[rcx]

xor ecx,eax

mov [Valuecurrent],ecx

xor ecx,ecx

mov [rsp+08],eax

jmp returnhere

originalcode:

mov eax,[rcx]

xor ecx,ecx

mov [rsp+08],eax

jmp returnhere

Valuecurrent:

dd 0

cash:

jmp newmem

nop

nop

nop

returnhere:

[DISABLE]

dealloc(newmem)

cash:

db 8B 01 33 C9 89 44 24 08

unregistersymbol(cash)

[ENABLE]
Изменено пользователем Xipho
Сколько раз еще напоминать, чтобы большие куски кода под спойлер убирали???
Ссылка на комментарий
Поделиться на другие сайты

К сожалению, у меня нет игры, поэтому не могу проверить скрипт.

 

Получается деньги шифрованы через xor

 

О том, как искать адрес денег вот на видео. Хороший пример поиска шифрованного значения "изменилось/не изменилось 4 байта"

 

To Garik66 #7

mov ebx, dword ptr [Old]cmp ebx, dword ptr [ecx+08]
Если можно найти экранный адрес, можешь попробовать ставить значение экранного адреса вместо ручной установки в Old метку
Ссылка на комментарий
Поделиться на другие сайты

Если можно найти экранный адрес, можешь попробовать ставить значение экранного адреса вместо ручной установки в Old метку

Тогда теряется смысл.

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

 

Vlad2, можешь прокомментировать свой скрипт, мне не всё понятно. 

Допустим для чего введена переменная Valuecurrent? Как я прочитал скрипт - она нужна только лишь для контроля нового значения в таблице, а так скрипт и без неё должен работать.

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

Привет Всем гейм хакерам, в общем так, кто ни будь проверти это смешения FC4-00005345,это смешения денег у каждого героя свой адрес денег вот надо забить все 4 адреса в анализ структуры и проверить это смешения FC4-00005345 кто дошел до момента, когда у вас все 4 героя от крыты,

 

проверти это смешения, оно одинаково для всех 4 героев,если да, то можно делать смело фильтр, у меня вроде все работает, но у меня только два героя, потому что я не открыл остальных ,FC4-00005345-вот это у всех героев одинаково или нет, проверти пожалуйста

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

offtopic.gif Baracuda, Зря сюда кинул ссыль. В личке достаточно. Удали. 

Просьба Админам не наказывайте пжлста.

Ну ни фига себе игрушка - 60 ГБ

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

 

1 - Какой смысл этого скрипта если он не работает? 

2 - Он не дописан до конца как положено

3 - Ты где его откопал? Или сам писал?

4 - Если сам писал то не дописал, хотя трудно не дописать когда сам скрипт пишешь.

5 - Завтра поправлю скрипт и все будет работать, сейчас время поздно не хочу возится

5 - Прошу администрацию меня не критиковать.

NullAlex: а я из вредности покритикую - у тебя два пункта с номером "5" :-P
[ENABLE]aobscanmodule(cash,GTA5.exe,8B 01 33 C9 89 44 24 08 8D 51 04 48 8B C1 48 FF C1 83 E0 07 8A 44 04 10 30 44 0C 07 48 FF CA 75 EA 8B 44 24 08 C3 CC)registersymbol(cash)alloc(newmem,2048,cash)label(returnhere)label(originalcode)label(Valuecurrent)registersymbol(Valuecurrent)label(go)label(michael)label(franklin)label(trevor)newmem: cmp [rcx+d4],'MONE'je franklincmp [rcx+134],'MONE'je michaelcmp [rcx+94],'MONE'je trevorjmp originalcodemichael:cmp [rcx+144],'LOTH'je gojmp originalcodefranklin:cmp [rcx+e4],'LOTH'je gojmp originalcodetrevor:cmp [rcx+a4],'LOTH'je gojmp originalcodego:push rsimov rsi,rcxxor rsi,#9999999999mov [rcx],esipop rsimov eax,[rcx]xor ecx,eaxmov [Valuecurrent],ecxxor ecx,ecxmov [rsp+08],eaxjmp returnhereoriginalcode:mov eax,[rcx]xor ecx,ecxmov [rsp+08],eaxjmp returnhereValuecurrent:dd 0cash:jmp newmemnopnopnopreturnhere:[DISABLE]dealloc(newmem)cash:db 8B 01 33 C9 89 44 24 08unregistersymbol(cash)
Ссылка на комментарий
Поделиться на другие сайты

Как и обещал скрипт поправил, все работает.

У меня версия Update 2, Может работать и на Update 1

 

[spoiler=Моя версия игры Update 2 (v1.0.331.1) Добавить денег всем персонам]

[ENABLE]aobscanmodule(InfiniteCash,GTA5.exe,E2 48 83 C1 10 48 89 4C 24 10 8B 01 33 C9 89 44 24 08) // should be uniquealloc(newmem,$1000,"GTA5.exe"+C31565)registersymbol(InfiniteCash)registersymbol(cashE)  - ВОТ ЭТО ВООБЩЕ ЗДЕСЬ ЛИШНЕЕ МОЖНО ВООБЩЕ С СКРИПТА УБРАТЬlabel(cashE)  - ВОТ ЭТО ВООБЩЕ ЗДЕСЬ ЛИШНЕЕ МОЖНО ВООБЩЕ С СКРИПТА УБРАТЬlabel(code)label(return)label(go)label(michael)label(franklin)label(trevor)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 [cashE],0  // СПЕЦИАЛЬНО ДЛЯ ГАРИКА - ВОТ ЭТО ВООБЩЕ ЗДЕСЬ ШЛИШНЕЕ МОЖНО ВООБЩЕ С СКРИПТА УБРАТЬpush rsi      // Сохраняем регистр eax перед использованиемmov rsi,rcx   // Загружаемxor rsi,#99999999  //Раскодируем ДОБАВЛЯЕМ 99999999mov [rcx],esi  // ЗАПИсываем pop rsi   // Восстанавливаем регистр eax после использования.mov eax,[rcx]xor ecx,eaxxor ecx,ecxmov [rsp+08],eaxjmp returncode:  mov eax,[rcx]  xor ecx,ecx  mov [rsp+08],eax  jmp returncashE:  - ВОТ ЭТО ВООБЩЕ ЗДЕСЬ ЛИШНЕЕ МОЖНО ВООБЩЕ С СКРИПТА УБРАТЬdd 0    - ВОТ ЭТО ВООБЩЕ ЗДЕСЬ ЛИШНЕЕ МОЖНО ВООБЩЕ С СКРИПТА УБРАТЬInfiniteCash+0A:  jmp newmem  nop  nop  nopreturn:[DISABLE]InfiniteCash+0A:  db 8B 01 33 C9 89 44 24 08unregistersymbol(cashE) - ВОТ ЭТО ВООБЩЕ ЗДЕСЬ ЛИШНЕЕ МОЖНО ВООБЩЕ С СКРИПТА УБРАТЬunregistersymbol(InfiniteCash)dealloc(newmem)

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

Vlad2Dison, напишите кометы в скрипте, в этой части:

cmp [cashE],0push rsimov rsi,rcxxor rsi,#99999999mov [rcx],esipop rsimov eax,[rcx]xor ecx,eax 

 А то я код этот не понимаю. Допустим для чего в данном примере  - cmp [cashE],0? Ну и остальные строчки тоже объясните пжлста.

Думаю, если сами написали скрипт, то и сможете объяснить.

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

Vlad2, Dison, напишите кометы в скрипте, в этой части:

 

Garik66

 

Ты это прикалываешься что ли? 

Я только поправил скрипт Vlada, дописал его немного и изменил

Да кстате изменил под сою версию игры

 

НУ ГАРИК СПЕЦИАЛЬНО ДЛЯ ТЕБЯ РАСШИФРОВАЛ ТО ЧТО ТЫ ПРОСИЛ.

ТЫ МЕНЯ БОЛЬШЕ НЕ ПОДКАЛЫВАЙ.

СМОТРИ В СКРИПТ ТОТ ВЫШЕ

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

ТЫ МЕНЯ БОЛЬШЕ НЕ ПОДКАЛЫВАЙ.

 

Я ни кого не подкалывал. Просто с таким Xor-ированием сталкиваюсь впервые и хочу понять как это происходит. По твоим кометам понял, что ты сам не понимаешь тоже, как шифруется в этом случае значение. Думаю Vlad2 тоже не сумеет объяснить.

Как я понял из оригинального кода Xor-ируется как бы половина числа, но до конца не понял пока. Нужно будет установить игру (вроде докачалась) и посмотреть на код игры.  

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

Гарик без обид я только его код подправил а где он его нашел я понятия не имею...

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

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

offtopic.gif

 

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

Обид ни каких. Просто интересно, как шифруется. Игру пока не установил, не могу разобраться с инсталлятором. Вроде разобрался - нужно было удалить/переименовать один файл из скачанной раздачи.

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

Dison, пока ещё не играл (чёй-то я начитался сообщений на форуме где качал репак, решил попозже).

Но проанализировав код игры, делаю вывод, что Vlad2 не много нас запутал своим кодом.

Думаю там всё по стандартной схеме:

т.е. в [rcx] - лежит закодированное значение.

а rcx - одновременно и адрес закодированного значение и константа через которую кодируется значение.

Тогда скрипт можно переписать попроще (взял за основу твой скрипт):

Dison, если не сложно, проверь мой скрипт пжлста.

[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) // Для "Update3" E2 в сигнатуре замените на 7С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     // Добавим в кошелёк обещанные 100000 $.(Если нужно больше,                      // исправьте цифру (100000 на нужную) прямо в скрипте.  xor [rcx],rcx         // И снова закодируем денюжкки. code:mov eax,[rcx]xor ecx,ecxmov [rsp+08],eaxjmp returnOdin:                 // Добавим в таблицу адрес с адресом "Odin" и названием db 1                  // "1 - добавим 100000$ нашему чуваку :)"InfiniteCash+0A:jmp newmemnopnopnopreturn:[DISABLE]InfiniteCash+0A:db 8B 01 33 C9 89 44 24 08unregistersymbol(Odin) unregistersymbol(InfiniteCash)dealloc(newmem) 
Изменено пользователем Garik66
  • Плюс 2
Ссылка на комментарий
Поделиться на другие сайты

PS: Еле еле доехал до дома по-моему первый парень Франклин. Вошёл в телефон. Да скрипт работает.

 

Так что Dison, логика шифрования такая же как и везде - главное понять, где шифрованное значение, а где константа.

 

Комментарии внутри скрипта. 

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

Гарик проверил скрипт но на моей версии он не сработал так как я обновил версию игры до Update 3

Поэтому я решил теперь твой скрипт поправить для версии Update 3.

Так то скрипт рабочий, отлично работает

 

Поправил в скрипте только байты

 

 

Всего 1 байт в самом начале не давал скрипту сработать на моей версии, заменил 'E2'  на  '7C'

[ENABLE]aobscanmodule(InfiniteCash,GTA5.exe,7C 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     // Добавим в кошелёк обещанные 100000 $.(Если нужно больше,                      // исправьте цифру (100000 на нужную) прямо в скрипте.xor [rcx],rcx         // И снова закодируем денюжкки.code:mov eax,[rcx]xor ecx,ecxmov [rsp+08],eaxjmp returnOdin:                 // Добавим в таблицу адрес с адресом "Odin" и названиемdb 1                  // "1 - добавим 100000$ нашему чуваку :)"InfiniteCash+0A:jmp newmemnopnopnopreturn:[DISABLE]InfiniteCash+0A:db 8B 01 33 C9 89 44 24 08unregistersymbol(Odin)unregistersymbol(InfiniteCash)dealloc(newmem) 
Изменено пользователем Dison
  • Плюс 1
Ссылка на комментарий
Поделиться на другие сайты

Поэтому я решил теперь твой скрипт поправить для версии Update 3.

Отлично теперь есть уже для двух версий. Хотя, если бы использовался изначально Plugin AA (для сигнатуры), то уверен, что подошёл бы для всех версий.  

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

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

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

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