rugraver Опубликовано 4 апреля, 2019 Поделиться Опубликовано 4 апреля, 2019 (изменено) Други мои дружные, с 2000 года играю в игры на читах от ArtMoney (позже Cheat Engine), и не припомню случая, чтобы что-то не удалось поломать, но тут ну просто нашла коса на камень, прошу помощи. Вот, три дня и три ночи мучался с OSIRIS:NEW DAWN в попытке добраться до указателей, но потерпел поражение. Посмотрел десяток роликов с сайта, в том числе как ломалась Subnautica (OSIRIS тоже на Unity), попробовал с ней - всё норм. Взял Empyrion-Galactic Survival - тоже много чего накопал через монофичу. OSIRIS же вобще не пойму как писан Фениксами, там Player размазан по всей dll-ке, структура совсем не как в Сабнаутике, и добраться мне удалось лишь до указателей 2-3 уровня, а дальше начинается ветвление и я теряюсь. Кроме беты, есть старая почти 3-хгодичной давности версия 1.180, у неё другая система сохранения ( бета-версия хранит 1 файл в AppData и не имеет даже меню сохранения-загрузки), но и там то же самое - начинается ветвление и я запцтываюсь. Хотя вон люди пишут, что за 5 минут игры стряпают таблицы. Цель простая: указатели для бесконечного боеприипаса, медаптечки,продпакета. Умоляю научите на примере одного параметра, как взламывать остальные, я научусь. Чистые файлы игры Стим(бета) лежат на полуангл-полурусском форуме, таблетка там же на следующей странице. Изменено 4 апреля, 2019 пользователем Xipho Ссылки на кряки и тому подобное низзя. Читай правила. Ссылка на комментарий Поделиться на другие сайты Поделиться
partoftheworlD Опубликовано 4 апреля, 2019 Поделиться Опубликовано 4 апреля, 2019 В 04.04.2019 в 01:28, rugraver сказал: Цель простая: указатели для бесконечного боеприипаса, медаптечки,продпакета. Показать А зачем в играх на моно указатели? Я конечно понимаю, извращения там у каждого свои, но куда проще обратиться на прямую по имени функции и сказать ей "эй метод, а кому ты отдаешь все ништяки?" простой командой mov. Ссылка на комментарий Поделиться на другие сайты Поделиться
rugraver Опубликовано 5 апреля, 2019 Автор Поделиться Опубликовано 5 апреля, 2019 Скилами уровня обработки кода я пока, к стыду своему, не владею, а о моно-режиме и вовсе узнал из видео по взлому Сабнаутики. Мой потолок виграх (предпочитаю сингл-космовыживалки, к слову) - нахождение указателей автоотсевом или руками. И тогда как с прошлыми играми особых проблем, в общем, не возникало, в OSIRIS я уже заманался, честно Нашёл только 1 указатель на патроны штурмовой винтовки, и то - на экранное значение никак не могу найти, тоесть визуально при стрельбе обойма убывает, доходит до 0, продолжается без перезарядки, тоесть бесконечно, но при перезагрузке возрождаешься с 0 патронов, и если в инвентаре нет хотя бы 1 обоймы для зарядки, винтовка становится бесполезной. Игра мне очень нравится, я намерен её купить как только Фениксы накатят бету 5 и 6(посмотрите их видео, там чудо, ну субъективно), и поскольку часто слышу в видеоуроках сайта "приходите на форум задавать вопросы, расскажем-покажем", то вот пришёл, покажите-расскажите. Сообщение "обратиться на прямую по имени функции " для меня наполовину магия, т.к. я вроде начал вникать по Вашим урокам. Прошу указать на видео, где это разжёвано, а также помнится в одном из уроков говорилось, что да, при поиске патронов находится 2 значения (одно я нашёл), прошу разъяснить как найти второе. Ссылка на комментарий Поделиться на другие сайты Поделиться
partoftheworlD Опубликовано 5 апреля, 2019 Поделиться Опубликовано 5 апреля, 2019 Можно одним только CE обойтись, но он ужасен, так что следует использовать разные инструменты, например dnSpy. В CE во вкладке с моно ищешь "LoadAmmo" и переходишь по LoadAmmo в дизассемблер. Находишь пишущую инструкцию.Стреляешь. Показать контент { Game : OsirisNewDawn.exe Version: Date : 2019-04-05 Author : Alexander This script does blah blah blah } [ENABLE] aobscan(sad,48 63 40 60 48 83 C4 08) // should be unique alloc(newmem,$1000,1EA944F4E4B) label(code) label(return) newmem: code: mov [rax+60],#99 movsxd rax,dword ptr [rax+60] add rsp,08 ret sad: jmp newmem nop nop nop return: registersymbol(sad) [DISABLE] sad: db 48 63 40 60 48 83 C4 08 c3 unregistersymbol(sad) dealloc(newmem) { // ORIGINAL CODE - INJECTION POINT: 1EA944F4E4B 1EA944F4E34: 01 50 00 - add [rax+00],edx 1EA944F4E37: 00 00 - add [rax],al 1EA944F4E39: 00 00 - add [rax],al 1EA944F4E3B: 00 00 - add [rax],al 1EA944F4E3D: 00 00 - add [rax],al 1EA944F4E3F: 00 48 83 - add [rax-7D],cl 1EA944F4E42: EC - in al,dx 1EA944F4E43: 08 48 89 - or [rax-77],cl 1EA944F4E46: 0C 24 - or al,24 1EA944F4E48: 48 8B C1 - mov rax,rcx // ---------- INJECTING HERE ---------- 1EA944F4E4B: 48 63 40 60 - movsxd rax,dword ptr [rax+60] 1EA944F4E4F: 48 83 C4 08 - add rsp,08 // ---------- DONE INJECTING ---------- 1EA944F4E53: C3 - ret 1EA944F4E54: 00 00 - add [rax],al 1EA944F4E56: 00 00 - add [rax],al 1EA944F4E58: 00 00 - add [rax],al 1EA944F4E5A: 00 00 - add [rax],al 1EA944F4E5C: 14 00 - adc al,00 1EA944F4E5E: 00 00 - add [rax],al 1EA944F4E60: 24 00 - and al,00 1EA944F4E62: 00 00 - add [rax],al 1EA944F4E64: 01 04 01 - add [rcx+rax],eax } И все. Нужны указатели - восстанавливай руками начиная от патрон. Выйдет около 4-5 уровней.(6) В 05.04.2019 в 10:56, rugraver сказал: но при перезагрузке возрождаешься с 0 патронов Показать А это уже баг/механика игры, не зависящий от правки инструкций. Это к разработчикам. Ссылка на комментарий Поделиться на другие сайты Поделиться
imaginary Опубликовано 5 апреля, 2019 Поделиться Опубликовано 5 апреля, 2019 В 05.04.2019 в 12:14, partoftheworlD сказал: А это уже баг/механика игры, не зависящий от правки инструкций. Это к разработчикам. Показать И он идёт пишет разработчикам "Здравствуйте, я тут вашу игру взламываю и тут происходит баг... ...исправьте это безобразье!" Ссылка на комментарий Поделиться на другие сайты Поделиться
partoftheworlD Опубликовано 5 апреля, 2019 Поделиться Опубликовано 5 апреля, 2019 В 05.04.2019 в 17:52, imaginary сказал: И он идёт пишет разработчикам Показать Ну да, на пиратке, сброки хххх, беты у происходит ... На самом деле, даже без взлома у меня патроны обнулялись после перезахода в игру, ладно бы там была механика, типа, безопасности на корабле и оружие должно быть разряжено, давали бы доп.обойму. Так что либо, это дурацкая механика, либо баг.("не баг, а фитча"). Ссылка на комментарий Поделиться на другие сайты Поделиться
rugraver Опубликовано 5 апреля, 2019 Автор Поделиться Опубликовано 5 апреля, 2019 (изменено) Большое спасибо за разъяснения, очень это ценю. На примере Ваших манипуляций с СЕ всё воспроизвелось идентично - бесконечные патроны+какое угодно кол-во на мониторе. dnSpy скачал (версия, кстати, обновилась до 6.0.4, разбираюсь как манипулировать в ней. Также подобрал через сигнатуры СЕ медкит, и сразу попал в ловушку, упомянутую в одном из уроков - ВСЕ итемы стали 5/5 (по игре там стек из 5 аптечек), и при сборе ресурса игра крашится. Стала крашиться и от скрипта оружия (и от Вашего, и от своего), а в результате умер мой единственный указатель на патроны (не экранный). Как упоминалось ранее, версия игры тестовая и не имеет механизма сохранения, чтобы например, погоняв по одной планете персонажем А, начать новую игру персонажем Б и полететь на другую.. или просто откатиться на 2-3 Сола назад. Прогресс пишется в 1 бинарный файл PlayerData, притом не весь прогресс а например только итемы инвентаря и их кол-во. Экспу по профессиям и Левел персонажа (которые все нужны для разблокировки строительства) я и вовсе не знаю, где искать, игра куда-то это пишет, но куда - непонятно. В меню игры на входе имеется кнопка "Удалить все данные", вот речь как раз об удалении этого PlayerData.dat, и после этого слетает всё - скрипты, указатели. В общем, я пока в тупике Изменено 5 апреля, 2019 пользователем rugraver правка орфографии Ссылка на комментарий Поделиться на другие сайты Поделиться
partoftheworlD Опубликовано 5 апреля, 2019 Поделиться Опубликовано 5 апреля, 2019 В 05.04.2019 в 20:43, rugraver сказал: Стала крашиться и от скрипта оружия (и от Вашего, и от своего) Показать Я свой поправил уже, теперь нет вылетов) В 05.04.2019 в 20:43, rugraver сказал: ВСЕ итемы стали 5/5 (по игре там стек из 5 аптечек), и при сборе ресурса игра крашится Показать Решается простым фильтром по ItemInfo.type или как-то так. Ведь когда предмет добавляется, так же передается его id. Ссылка на комментарий Поделиться на другие сайты Поделиться
rugraver Опубликовано 5 апреля, 2019 Автор Поделиться Опубликовано 5 апреля, 2019 В 05.04.2019 в 20:59, partoftheworlD сказал: Я свой поправил уже, теперь нет вылетов) Показать Поделитесь с просящим, что там в скрипте не так? Я тоже правил, mov [rax+60],#99 из секции code перекладывал в newmem: (нам же под это дело память выделяют), но не помогло. Я бы пока посмотрел урок про Фильтры (помню был такой, но не смотрел его), и попробовал бы поправить свой скрипт на медкит и продпакеты. Ссылка на комментарий Поделиться на другие сайты Поделиться
partoftheworlD Опубликовано 5 апреля, 2019 Поделиться Опубликовано 5 апреля, 2019 В 05.04.2019 в 21:08, rugraver сказал: что там в скрипте не так? Показать проблема была в ret, который просто затирался вместо прыжка в оригинальный код, просто выходим из функции и возвращаем управление вызвавшей её. Играю несколько часов, вроде проблем нет. В 05.04.2019 в 12:14, partoftheworlD сказал: Показать контент { Game : OsirisNewDawn.exe Version: Date : 2019-04-05 Author : Alexander This script does blah blah blah } [ENABLE] aobscan(sad,48 63 40 60 48 83 C4 08) // should be unique alloc(newmem,$1000,1EA944F4E4B) label(code) label(return) newmem: code: mov [rax+60],#99 movsxd rax,dword ptr [rax+60] add rsp,08 ret sad: jmp newmem nop nop nop return: registersymbol(sad) [DISABLE] sad: db 48 63 40 60 48 83 C4 08 c3 unregistersymbol(sad) dealloc(newmem) { // ORIGINAL CODE - INJECTION POINT: 1EA944F4E4B 1EA944F4E34: 01 50 00 - add [rax+00],edx 1EA944F4E37: 00 00 - add [rax],al 1EA944F4E39: 00 00 - add [rax],al 1EA944F4E3B: 00 00 - add [rax],al 1EA944F4E3D: 00 00 - add [rax],al 1EA944F4E3F: 00 48 83 - add [rax-7D],cl 1EA944F4E42: EC - in al,dx 1EA944F4E43: 08 48 89 - or [rax-77],cl 1EA944F4E46: 0C 24 - or al,24 1EA944F4E48: 48 8B C1 - mov rax,rcx // ---------- INJECTING HERE ---------- 1EA944F4E4B: 48 63 40 60 - movsxd rax,dword ptr [rax+60] 1EA944F4E4F: 48 83 C4 08 - add rsp,08 // ---------- DONE INJECTING ---------- 1EA944F4E53: C3 - ret 1EA944F4E54: 00 00 - add [rax],al 1EA944F4E56: 00 00 - add [rax],al 1EA944F4E58: 00 00 - add [rax],al 1EA944F4E5A: 00 00 - add [rax],al 1EA944F4E5C: 14 00 - adc al,00 1EA944F4E5E: 00 00 - add [rax],al 1EA944F4E60: 24 00 - and al,00 1EA944F4E62: 00 00 - add [rax],al 1EA944F4E64: 01 04 01 - add [rcx+rax],eax } Показать Ссылка на комментарий Поделиться на другие сайты Поделиться
partoftheworlD Опубликовано 5 апреля, 2019 Поделиться Опубликовано 5 апреля, 2019 Но игра очень сырая, врезался в солнце - солнце потухло, ноги поломало. Показать контент Ссылка на комментарий Поделиться на другие сайты Поделиться
rugraver Опубликовано 5 апреля, 2019 Автор Поделиться Опубликовано 5 апреля, 2019 Огромное спасибо за скрипт и науку, продолжаю обучение Игра сырая, да, но Фениксы вот-вот обещают что-то глобальное в бете 5, всякие дроиды, турели, транспорт, роботы-разведчики и прочее, так что готовиться надо заранее Я пока не разобрался, как отделить аптечки и продпакеты, но работаю над этим. Вижу, игра Вас немного увлекла ("неск.часов), так вот если сможете сломать профессии или уровень персонажа, или (большая хотелка) вес инвентаря, хоть изначальный 80кг хоть примороженый как-то - почту за счастье, если подскажете как и что сломали. Инвентарь находит мне 1 float значение, толку с которого нет - ни экранное значение ни в целом грузоподъёмность не меняется. Ссылка на комментарий Поделиться на другие сайты Поделиться
partoftheworlD Опубликовано 5 апреля, 2019 Поделиться Опубликовано 5 апреля, 2019 В 05.04.2019 в 22:22, rugraver сказал: Инвентарь находит мне 1 float Показать Если есть желание сделать самому, то могу подсказать, что это правильное значение. Ссылка на комментарий Поделиться на другие сайты Поделиться
partoftheworlD Опубликовано 5 апреля, 2019 Поделиться Опубликовано 5 апреля, 2019 В 05.04.2019 в 22:22, rugraver сказал: или (большая хотелка) вес инвентаря, хоть изначальный 80кг хоть примороженый как-то Показать Надеюсь хватит грузоподъемности. Показать контент [ENABLE] aobscan(MaxWeight, F3 0F 10 8E 00 01 00 00 F3 0F 5A C9 F2 0F 5E C1 F2 0F 5A E8 F3 0F 11 6C 24 10 F3 0F 10 44 24 10) // should be unique aobscan(StartEquipment,48 63 8F F0 00 00 00 3B) // should be unique alloc(StartEquipment_newmem,$1000) alloc(MaxWeight_newmem,$1000) label(MaxWeight_code) label(MaxWeight_return) label(StartEquipment_code) label(StartEquipment_return) MaxWeight_newmem: MaxWeight_code: mov [rsi+00000100],(float)999999 movss xmm1,[rsi+00000100] jmp MaxWeight_return MaxWeight: jmp MaxWeight_newmem nop nop nop MaxWeight_return: registersymbol(MaxWeight) StartEquipment_newmem: StartEquipment_code: mov [rdi+000000F0],#20 movsxd rcx,dword ptr [rdi+000000F0] jmp StartEquipment_return StartEquipment: jmp StartEquipment_newmem nop nop StartEquipment_return: registersymbol(StartEquipment) [DISABLE] MaxWeight: db F3 0F 10 8E 00 01 00 00 StartEquipment: db 48 63 8F F0 00 00 00 unregistersymbol(StartEquipment) unregistersymbol(MaxWeight) dealloc(StartEquipment_newmem) dealloc(MaxWeight_newmem) { // ORIGINAL CODE - INJECTION POINT: StartEquipment 1AB0BCDB4B8: 00 00 - add [rax],al 1AB0BCDB4BA: 00 00 - add [rax],al 1AB0BCDB4BC: 00 00 - add [rax],al 1AB0BCDB4BE: 00 00 - add [rax],al 1AB0BCDB4C0: 48 83 EC 18 - sub rsp,18 1AB0BCDB4C4: 48 89 34 24 - mov [rsp],rsi 1AB0BCDB4C8: 48 89 7C 24 08 - mov [rsp+08],rdi 1AB0BCDB4CD: 48 8B F1 - mov rsi,rcx 1AB0BCDB4D0: F3 0F 10 86 04 01 00 00 - movss xmm0,[rsi+00000104] 1AB0BCDB4D8: F3 0F 5A C0 - cvtss2sd xmm0,xmm0 // ---------- INJECTING HERE ---------- 1AB0BCDB4DC: F3 0F 10 8E 00 01 00 00 - movss xmm1,[rsi+00000100] // ---------- DONE INJECTING ---------- 1AB0BCDB4E4: F3 0F 5A C9 - cvtss2sd xmm1,xmm1 1AB0BCDB4E8: F2 0F 5E C1 - divsd xmm0,xmm1 1AB0BCDB4EC: F2 0F 5A E8 - cvtsd2ss xmm5,xmm0 1AB0BCDB4F0: F3 0F 11 6C 24 10 - movss [rsp+10],xmm5 1AB0BCDB4F6: F3 0F 10 44 24 10 - movss xmm0,[rsp+10] 1AB0BCDB4FC: F3 0F 5A C0 - cvtss2sd xmm0,xmm0 1AB0BCDB500: F3 0F 10 0D 88 00 00 00 - movss xmm1,[1AB0BCDB590] 1AB0BCDB508: F3 0F 5A C9 - cvtss2sd xmm1,xmm1 1AB0BCDB50C: 66 0F 2F C8 - comisd xmm1,xmm0 1AB0BCDB510: 0F 8A 4F 00 00 00 - jp 1AB0BCDB565 } { // ORIGINAL CODE - INJECTION POINT: MaxWeight 1AB0BC553AF: 48 8B 45 A8 - mov rax,[rbp-58] 1AB0BC553B3: 48 8B C8 - mov rcx,rax 1AB0BC553B6: 48 83 EC 20 - sub rsp,20 1AB0BC553BA: 48 8B 00 - mov rax,[rax] 1AB0BC553BD: 90 - nop 1AB0BC553BE: 90 - nop 1AB0BC553BF: 90 - nop 1AB0BC553C0: FF 90 D0 02 00 00 - call qword ptr [rax+000002D0] 1AB0BC553C6: 48 83 C4 20 - add rsp,20 1AB0BC553CA: 48 63 87 EC 00 00 00 - movsxd rax,dword ptr [rdi+000000EC] // ---------- INJECTING HERE ---------- 1AB0BC553D1: 48 63 8F F0 00 00 00 - movsxd rcx,dword ptr [rdi+000000F0] // ---------- DONE INJECTING ---------- 1AB0BC553D8: 3B C1 - cmp eax,ecx 1AB0BC553DA: 0F 8C E7 00 00 00 - jl 1AB0BC554C7 1AB0BC553E0: 45 33 E4 - xor r12d,r12d 1AB0BC553E3: E9 C9 00 00 00 - jmp 1AB0BC554B1 1AB0BC553E8: 48 8B 47 38 - mov rax,[rdi+38] 1AB0BC553EC: 49 63 CC - movsxd rcx,r12d 1AB0BC553EF: 39 48 18 - cmp [rax+18],ecx 1AB0BC553F2: 0F 86 66 03 00 00 - jbe 1AB0BC5575E 1AB0BC553F8: 48 8D 44 C8 20 - lea rax,[rax+rcx*8+20] 1AB0BC553FD: 48 8B 00 - mov rax,[rax] } 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
rugraver Опубликовано 5 апреля, 2019 Автор Поделиться Опубликовано 5 апреля, 2019 В 05.04.2019 в 23:26, partoftheworlD сказал: Надеюсь хватит Показать Просто чума! Я зашёл в нужное место, в нужное время, к нужным людям Скрипт подхватился посреди игры прямо "из коробки", вес - мечта любого сталкера. Тысяча благодарностей Вам, и заодно на примере Ваших приёмов надеюсь подкачать собственные скилы. Скрипт- бомба. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения