Dejavu Опубликовано 12 августа, 2017 Поделиться Опубликовано 12 августа, 2017 Доброго времени суток, форумчане. Решил поиграть в Saints Row: The Third да и поломать по ходу игры. Начинаю со взлома кол-ва денег. Нашел нужный адрес, посмотрел на инструкции, которые получают доступ. Попробовал исправить значение в CE — не поменялось, я подумал, что там есть инструкция, которая перезаписывает значение по этому адресу, что и не дает мне изменить его. Нашел ее, узнав, что она работает со многими адресами, начал писать фильтр, но все безуспешно — игра просто крашится. Что я делаю не так? Ссылка на комментарий Поделиться на другие сайты Поделиться
ReWanet Опубликовано 12 августа, 2017 Поделиться Опубликовано 12 августа, 2017 Правила 1.3 Название игры должно находить в квадратных скобках. Так же приложи не скрин кода а сам код. Краш кода из-за jmp exit в метке newmem. Твой код должен выглядеть так ( сам подставишь нужное ). newmem: ( твой код ) cmp dword ptr [ecx+08],3 jne code mov [edi],#9999 jmp code code: ( оригинальный код игры ) mov ecx,[edi] mov eax,[esp+24] jmp exit Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 12 августа, 2017 Поделиться Опубликовано 12 августа, 2017 1 час назад, Dejavu сказал: игра просто крашится. Что я делаю не так? 1. Оформление вопроса не очень - картинки твои не приближаются, пришлось сделать масштаб 150 %, чтобы разобраться. 2. Всё ты делаешь почти верно, не верен сам скрипт. Игру качать влом, но помочь можно. 1. Выложи АА - скрипт из верхней инструкции: mov ecx,[edi] 2. В отладчике ПКМ на ней "Показать адреса с которыми работает и нструкция "и в новом окне ПКМ на нескольких адресах "Показать регистры", включая адрес денег и выложи сюда картинки. Если не понятно объяснил. посмотри моё последнее видео. Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 12 августа, 2017 Поделиться Опубликовано 12 августа, 2017 23 минуты назад, what228 сказал: mov [edi],#9999 Этого не достаточно, как видно из скринов и строчки: 1 час назад, Dejavu сказал: Попробовал исправить значение в CE — не поменялось Нужно будет делать так: mov [edi],#9999 mov [edi+04],#9999 // значение дублируется в соседнии 4 байта, и где-то в игровом коде есть проверка Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 12 августа, 2017 Поделиться Опубликовано 12 августа, 2017 19 минут назад, Garik66 сказал: 1. Выложи АА - скрипт @Dejavu вот видео (на всякий случай). Ссылка на комментарий Поделиться на другие сайты Поделиться
Dejavu Опубликовано 12 августа, 2017 Автор Поделиться Опубликовано 12 августа, 2017 Скрытый текст { Game : saintsrowthethird_dx11.exe Version: Date : 2017-08-12 This script does blah blah blah } [ENABLE] aobscanmodule(money,saintsrowthethird_dx11.exe,8B 0F 8B 44 24 24 89) // should be unique alloc(newmem,$1000) label(code) label(return) newmem: code: mov ecx,[edi] mov eax,[esp+24] jmp return money: jmp newmem nop return: registersymbol(money) [DISABLE] money: db 8B 0F 8B 44 24 24 unregistersymbol(money) dealloc(newmem) { // ORIGINAL CODE - INJECTION POINT: "saintsrowthethird_dx11.exe"+A06C2C "saintsrowthethird_dx11.exe"+A06C11: 8B 4B 10 - mov ecx,[ebx+10] "saintsrowthethird_dx11.exe"+A06C14: 8B 91 BC 00 00 00 - mov edx,[ecx+000000BC] "saintsrowthethird_dx11.exe"+A06C1A: 52 - push edx "saintsrowthethird_dx11.exe"+A06C1B: 6A 00 - push 00 "saintsrowthethird_dx11.exe"+A06C1D: 56 - push esi "saintsrowthethird_dx11.exe"+A06C1E: E8 5D FC FF FF - call saintsrowthethird_dx11.exe+A06880 "saintsrowthethird_dx11.exe"+A06C23: 8B F0 - mov esi,eax "saintsrowthethird_dx11.exe"+A06C25: 83 C4 0C - add esp,0C "saintsrowthethird_dx11.exe"+A06C28: 85 F6 - test esi,esi "saintsrowthethird_dx11.exe"+A06C2A: 75 3D - jne saintsrowthethird_dx11.exe+A06C69 // ---------- INJECTING HERE ---------- "saintsrowthethird_dx11.exe"+A06C2C: 8B 0F - mov ecx,[edi] "saintsrowthethird_dx11.exe"+A06C2E: 8B 44 24 24 - mov eax,[esp+24] // ---------- DONE INJECTING ---------- "saintsrowthethird_dx11.exe"+A06C32: 89 08 - mov [eax],ecx "saintsrowthethird_dx11.exe"+A06C34: 8B 57 04 - mov edx,[edi+04] "saintsrowthethird_dx11.exe"+A06C37: 89 50 04 - mov [eax+04],edx "saintsrowthethird_dx11.exe"+A06C3A: 8B 4F 08 - mov ecx,[edi+08] "saintsrowthethird_dx11.exe"+A06C3D: 5F - pop edi "saintsrowthethird_dx11.exe"+A06C3E: 5E - pop esi "saintsrowthethird_dx11.exe"+A06C3F: 5D - pop ebp "saintsrowthethird_dx11.exe"+A06C40: 89 48 08 - mov [eax+08],ecx "saintsrowthethird_dx11.exe"+A06C43: 5B - pop ebx "saintsrowthethird_dx11.exe"+A06C44: 59 - pop ecx } @Garik66 // При большом коде нужны теги и кода и спойлера Garik66 Ссылка на комментарий Поделиться на другие сайты Поделиться
Dejavu Опубликовано 12 августа, 2017 Автор Поделиться Опубликовано 12 августа, 2017 @Garik66 Ссылка на комментарий Поделиться на другие сайты Поделиться
ReWanet Опубликовано 12 августа, 2017 Поделиться Опубликовано 12 августа, 2017 7 минут назад, Dejavu сказал: @Garik66 Выкладывай более читабельные скрины.. Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 12 августа, 2017 Поделиться Опубликовано 12 августа, 2017 46 минут назад, Dejavu сказал: @Garik66 Регистры не помогли, но попробуй: Скрытый текст { Game : saintsrowthethird_dx11.exe Version: Date : 2017-08-12 This script does blah blah blah } [ENABLE] aobscanmodule(money,saintsrowthethird_dx11.exe,8B 0F 8B 44 24 24 89) // should be unique alloc(newmem,$1000) label(code) label(return) label(filtr) registersymbol(money) newmem: mov [filtr],ebp cmp byte ptr [filtr],0 je code mov [edi],#100000 mov [edi+04],#100000 code: mov ecx,[edi] mov eax,[esp+24] jmp return filtr: dd 0 money: jmp newmem db 90 return: [DISABLE] money: db 8B 0F 8B 44 24 24 unregistersymbol(money) dealloc(newmem) { // ORIGINAL CODE - INJECTION POINT: "saintsrowthethird_dx11.exe"+A06C2C "saintsrowthethird_dx11.exe"+A06C11: 8B 4B 10 - mov ecx,[ebx+10] "saintsrowthethird_dx11.exe"+A06C14: 8B 91 BC 00 00 00 - mov edx,[ecx+000000BC] "saintsrowthethird_dx11.exe"+A06C1A: 52 - push edx "saintsrowthethird_dx11.exe"+A06C1B: 6A 00 - push 00 "saintsrowthethird_dx11.exe"+A06C1D: 56 - push esi "saintsrowthethird_dx11.exe"+A06C1E: E8 5D FC FF FF - call saintsrowthethird_dx11.exe+A06880 "saintsrowthethird_dx11.exe"+A06C23: 8B F0 - mov esi,eax "saintsrowthethird_dx11.exe"+A06C25: 83 C4 0C - add esp,0C "saintsrowthethird_dx11.exe"+A06C28: 85 F6 - test esi,esi "saintsrowthethird_dx11.exe"+A06C2A: 75 3D - jne saintsrowthethird_dx11.exe+A06C69 // ---------- INJECTING HERE ---------- "saintsrowthethird_dx11.exe"+A06C2C: 8B 0F - mov ecx,[edi] "saintsrowthethird_dx11.exe"+A06C2E: 8B 44 24 24 - mov eax,[esp+24] // ---------- DONE INJECTING ---------- "saintsrowthethird_dx11.exe"+A06C32: 89 08 - mov [eax],ecx "saintsrowthethird_dx11.exe"+A06C34: 8B 57 04 - mov edx,[edi+04] "saintsrowthethird_dx11.exe"+A06C37: 89 50 04 - mov [eax+04],edx "saintsrowthethird_dx11.exe"+A06C3A: 8B 4F 08 - mov ecx,[edi+08] "saintsrowthethird_dx11.exe"+A06C3D: 5F - pop edi "saintsrowthethird_dx11.exe"+A06C3E: 5E - pop esi "saintsrowthethird_dx11.exe"+A06C3F: 5D - pop ebp "saintsrowthethird_dx11.exe"+A06C40: 89 48 08 - mov [eax+08],ecx "saintsrowthethird_dx11.exe"+A06C43: 5B - pop ebx "saintsrowthethird_dx11.exe"+A06C44: 59 - pop ecx } Отпишись о результатах. Ссылка на комментарий Поделиться на другие сайты Поделиться
ReWanet Опубликовано 12 августа, 2017 Поделиться Опубликовано 12 августа, 2017 Держи скрипт на деньги. Скрытый текст { Game : SaintsRowTheThird_DX11.exe Version: Date : 2017-08-12 Author : User This script does blah blah blah } [ENABLE] aobscanmodule(MONEY,SaintsRowTheThird_DX11.exe,F3 0F 2A 83 A0 1C 00 00) // should be unique alloc(newmem,$1000) label(code) label(return) label(addmoney) registersymbol(addmoney) newmem: cmp [addmoney],0 je code add [ebx+00001CA0],#100000 mov [addmoney],0 code: cvtsi2ss xmm0,[ebx+00001CA0] jmp return addmoney: dd 0 MONEY: jmp newmem nop nop nop return: registersymbol(MONEY) [DISABLE] MONEY: db F3 0F 2A 83 A0 1C 00 00 unregistersymbol(MONEY) unregistersymbol(addmoney) dealloc(newmem) { // ORIGINAL CODE - INJECTION POINT: "SaintsRowTheThird_DX11.exe"+3F3EE5 "SaintsRowTheThird_DX11.exe"+3F3EBF: 0F 84 DB 01 00 00 - je SaintsRowTheThird_DX11.exe+3F40A0 "SaintsRowTheThird_DX11.exe"+3F3EC5: E8 46 28 07 00 - call SaintsRowTheThird_DX11.exe+466710 "SaintsRowTheThird_DX11.exe"+3F3ECA: 3C 01 - cmp al,01 "SaintsRowTheThird_DX11.exe"+3F3ECC: 75 0A - jne SaintsRowTheThird_DX11.exe+3F3ED8 "SaintsRowTheThird_DX11.exe"+3F3ECE: C7 44 24 1C 03 00 00 00 - mov [esp+1C],00000003 "SaintsRowTheThird_DX11.exe"+3F3ED6: EB 0D - jmp SaintsRowTheThird_DX11.exe+3F3EE5 "SaintsRowTheThird_DX11.exe"+3F3ED8: 53 - push ebx "SaintsRowTheThird_DX11.exe"+3F3ED9: E8 62 8C 1E 00 - call SaintsRowTheThird_DX11.exe+5DCB40 "SaintsRowTheThird_DX11.exe"+3F3EDE: 83 C4 04 - add esp,04 "SaintsRowTheThird_DX11.exe"+3F3EE1: 89 44 24 1C - mov [esp+1C],eax // ---------- INJECTING HERE ---------- "SaintsRowTheThird_DX11.exe"+3F3EE5: F3 0F 2A 83 A0 1C 00 00 - cvtsi2ss xmm0,[ebx+00001CA0] // ---------- DONE INJECTING ---------- "SaintsRowTheThird_DX11.exe"+3F3EED: F3 0F 5A C0 - cvtss2sd xmm0,xmm0 "SaintsRowTheThird_DX11.exe"+3F3EF1: F2 0F 5E 05 C8 6B 2A 01 - divsd xmm0,[SaintsRowTheThird_DX11.exe+EA6BC8] "SaintsRowTheThird_DX11.exe"+3F3EF9: F2 0F 5A C0 - cvtsd2ss xmm0,xmm0 "SaintsRowTheThird_DX11.exe"+3F3EFD: C7 44 24 54 03 00 00 00 - mov [esp+54],00000003 "SaintsRowTheThird_DX11.exe"+3F3F05: F3 0F 11 44 24 5C - movss [esp+5C],xmm0 "SaintsRowTheThird_DX11.exe"+3F3F0B: 8D 44 24 54 - lea eax,[esp+54] "SaintsRowTheThird_DX11.exe"+3F3F0F: 50 - push eax "SaintsRowTheThird_DX11.exe"+3F3F10: 6A 00 - push 00 "SaintsRowTheThird_DX11.exe"+3F3F12: 8B CE - mov ecx,esi "SaintsRowTheThird_DX11.exe"+3F3F14: C7 84 24 88 00 00 00 0D 00 00 00 - mov [esp+00000088],0000000D } Будет давать по 1000 монет. 2 Ссылка на комментарий Поделиться на другие сайты Поделиться
Dejavu Опубликовано 12 августа, 2017 Автор Поделиться Опубликовано 12 августа, 2017 57 минут назад, what228 сказал: Держи скрипт на деньги. Показать содержимое { Game : SaintsRowTheThird_DX11.exe Version: Date : 2017-08-12 Author : User This script does blah blah blah } [ENABLE] aobscanmodule(MONEY,SaintsRowTheThird_DX11.exe,F3 0F 2A 83 A0 1C 00 00) // should be unique alloc(newmem,$1000) label(code) label(return) label(addmoney) registersymbol(addmoney) newmem: cmp [addmoney],0 je code add [ebx+00001CA0],#100000 mov [addmoney],0 code: cvtsi2ss xmm0,[ebx+00001CA0] jmp return addmoney: dd 0 MONEY: jmp newmem nop nop nop return: registersymbol(MONEY) [DISABLE] MONEY: db F3 0F 2A 83 A0 1C 00 00 unregistersymbol(MONEY) unregistersymbol(addmoney) dealloc(newmem) { // ORIGINAL CODE - INJECTION POINT: "SaintsRowTheThird_DX11.exe"+3F3EE5 "SaintsRowTheThird_DX11.exe"+3F3EBF: 0F 84 DB 01 00 00 - je SaintsRowTheThird_DX11.exe+3F40A0 "SaintsRowTheThird_DX11.exe"+3F3EC5: E8 46 28 07 00 - call SaintsRowTheThird_DX11.exe+466710 "SaintsRowTheThird_DX11.exe"+3F3ECA: 3C 01 - cmp al,01 "SaintsRowTheThird_DX11.exe"+3F3ECC: 75 0A - jne SaintsRowTheThird_DX11.exe+3F3ED8 "SaintsRowTheThird_DX11.exe"+3F3ECE: C7 44 24 1C 03 00 00 00 - mov [esp+1C],00000003 "SaintsRowTheThird_DX11.exe"+3F3ED6: EB 0D - jmp SaintsRowTheThird_DX11.exe+3F3EE5 "SaintsRowTheThird_DX11.exe"+3F3ED8: 53 - push ebx "SaintsRowTheThird_DX11.exe"+3F3ED9: E8 62 8C 1E 00 - call SaintsRowTheThird_DX11.exe+5DCB40 "SaintsRowTheThird_DX11.exe"+3F3EDE: 83 C4 04 - add esp,04 "SaintsRowTheThird_DX11.exe"+3F3EE1: 89 44 24 1C - mov [esp+1C],eax // ---------- INJECTING HERE ---------- "SaintsRowTheThird_DX11.exe"+3F3EE5: F3 0F 2A 83 A0 1C 00 00 - cvtsi2ss xmm0,[ebx+00001CA0] // ---------- DONE INJECTING ---------- "SaintsRowTheThird_DX11.exe"+3F3EED: F3 0F 5A C0 - cvtss2sd xmm0,xmm0 "SaintsRowTheThird_DX11.exe"+3F3EF1: F2 0F 5E 05 C8 6B 2A 01 - divsd xmm0,[SaintsRowTheThird_DX11.exe+EA6BC8] "SaintsRowTheThird_DX11.exe"+3F3EF9: F2 0F 5A C0 - cvtsd2ss xmm0,xmm0 "SaintsRowTheThird_DX11.exe"+3F3EFD: C7 44 24 54 03 00 00 00 - mov [esp+54],00000003 "SaintsRowTheThird_DX11.exe"+3F3F05: F3 0F 11 44 24 5C - movss [esp+5C],xmm0 "SaintsRowTheThird_DX11.exe"+3F3F0B: 8D 44 24 54 - lea eax,[esp+54] "SaintsRowTheThird_DX11.exe"+3F3F0F: 50 - push eax "SaintsRowTheThird_DX11.exe"+3F3F10: 6A 00 - push 00 "SaintsRowTheThird_DX11.exe"+3F3F12: 8B CE - mov ecx,esi "SaintsRowTheThird_DX11.exe"+3F3F14: C7 84 24 88 00 00 00 0D 00 00 00 - mov [esp+00000088],0000000D } Будет давать по 1000 монет. Не работает Ссылка на комментарий Поделиться на другие сайты Поделиться
ReWanet Опубликовано 12 августа, 2017 Поделиться Опубликовано 12 августа, 2017 1 минуту назад, Dejavu сказал: Не работает Подробнее что не работает что делаешь.. Или ищи по байтам и сам делай скрипт F3 0F 2A 83 A0 1C 00 00 Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 12 августа, 2017 Поделиться Опубликовано 12 августа, 2017 15 минут назад, what228 сказал: Подробнее что не работает что делаешь.. Или ищи по байтам и сам делай скрипт F3 0F 2A 83 A0 1C 00 00 Я думаю что @Dejavu не добавил addmoney в таблицу (нужно всё-таки давать более подробную инструкцию - не все знают очевидные на наш взгляд нюансы), поэтому у него и не работает. @Dejavu для скрипта @what228 нужно добавить в таблицу адрес addmoney и присваивать ему значение 1, при 1 будет добавка денюжков. Ссылка на комментарий Поделиться на другие сайты Поделиться
LIRW Опубликовано 12 августа, 2017 Поделиться Опубликовано 12 августа, 2017 3 часа назад, Dejavu сказал: Начинаю со взлома кол-ва денег. Деньги там в обще по моему вот тут лежат. Скрытый текст [ENABLE] aobscan(BaseCash,F3 0F 2A 83 A0 1C 00 00 F3 * * * * * * * * * * * F2 0F) // should be unique alloc(newmem,$1000) label(code) label(return) newmem: mov [ebx+00001CA0],#50000000 code: cvtsi2ss xmm0,[ebx+00001CA0] jmp return BaseCash: jmp newmem db 90 90 90 return: registersymbol(BaseCash) [DISABLE] BaseCash: db F3 0F 2A 83 A0 1C 00 00 unregistersymbol(BaseCash) dealloc(newmem) Просто когда то делал уже к ней чит и исход остался Сешный. 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 12 августа, 2017 Поделиться Опубликовано 12 августа, 2017 1 минуту назад, LIRW сказал: Деньги там в обще по моему вот тут лежат. @what228 уже дал скрипт именно на эту инструкцию. Ссылка на комментарий Поделиться на другие сайты Поделиться
Dejavu Опубликовано 12 августа, 2017 Автор Поделиться Опубликовано 12 августа, 2017 1 час назад, LIRW сказал: Деньги там в обще по моему вот тут лежат. Скрыть содержимое [ENABLE] aobscan(BaseCash,F3 0F 2A 83 A0 1C 00 00 F3 * * * * * * * * * * * F2 0F) // should be unique alloc(newmem,$1000) label(code) label(return) newmem: mov [ebx+00001CA0],#50000000 code: cvtsi2ss xmm0,[ebx+00001CA0] jmp return BaseCash: jmp newmem db 90 90 90 return: registersymbol(BaseCash) [DISABLE] BaseCash: db F3 0F 2A 83 A0 1C 00 00 unregistersymbol(BaseCash) dealloc(newmem) Просто когда то делал уже к ней чит и исход остался Сешный. Спасибо, сработало. Подскажите, как мне самому выйти на эту инструкцию? В каком типе хранятся деньги? Ссылка на комментарий Поделиться на другие сайты Поделиться
ReWanet Опубликовано 12 августа, 2017 Поделиться Опубликовано 12 августа, 2017 2 минуты назад, Dejavu сказал: Спасибо, сработало. Подскажите, как мне самому выйти на эту инструкцию? В каком типе хранятся деньги? 4 байта + 00 Т.е. если у тебя сейчас 1000 на экране то ищешь 100000 Ссылка на комментарий Поделиться на другие сайты Поделиться
LIRW Опубликовано 12 августа, 2017 Поделиться Опубликовано 12 августа, 2017 14 минуты назад, Dejavu сказал: Подскажите, как мне самому выйти на эту инструкцию? Вот видео есть на канале Хипхо. В нем по моему есть поиск патрон. А то есть денег - ну и патрон по моему. Я конечно не знаю какая это часть, но разница не велика... Все игры из этой серии, работают по одному и тому же принципу. Скрытый текст Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения