SerVick Опубликовано 11 марта, 2016 Автор Поделиться Опубликовано 11 марта, 2016 В 11.03.2016 в 17:33, Garik66 сказал: Значение во float кислорода. Осталось 36 значений заморозил все, кислород замер, но игра вылетела, так что не успел выйти на кокретное значение. Сейчас перекурю - сделаю. Показать Garik66, ищи сразу увеличилось, не изменилось, шкалу заполнил уменьшилось и т.д. У меня вчера в обще штуки по 3 -и оставалось адресов. А столько много морозить рисково вылет практически в любой игре обеспечен. Кстати пользуйся паузой, а не меню удобней. Ссылка на комментарий Поделиться на другие сайты Поделиться
SerVick Опубликовано 11 марта, 2016 Автор Поделиться Опубликовано 11 марта, 2016 В 11.03.2016 в 17:45, SerVick сказал: Garik66, ищи сразу увеличилось, не изменилось, шкалу заполнил уменьшилось и т.д. У меня вчера в обще штуки по 3 -и оставалось адресов. А столько много морозить рисково вылет практически в любой игре обеспечен. Кстати пользуйся паузой, а не меню удобней. Вот примерно как у тебя будут выглядеть значение. Не в воде (шкалы нет) = 7.105427358E-15, в воде (почти полная шкала) <> 1.058382152E-14 Показать Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 11 марта, 2016 Поделиться Опубликовано 11 марта, 2016 Значит что я нашёл значение во float от 0 (когда шкала полная т.е. не в воде) и до 24 (когда нужно уже умирать - утонул). инструкция на запись: "willrock.exe"+22210: D9 96 C7 02 00 00 - fst dword ptr [esi+000002C7] Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 11 марта, 2016 Поделиться Опубликовано 11 марта, 2016 Но никаких твоих значений я не нашёл и да, как и говорил кислород лежит в структуре ГГ (по смещению [esi+00000040] так и написано - player . Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 11 марта, 2016 Поделиться Опубликовано 11 марта, 2016 Вот сейчас отключил заморозку адреса. Здоровье начинает отниматься когда кислород (а точнее думаю это углекислый газ ) равен 25.58665848 во float. Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 11 марта, 2016 Поделиться Опубликовано 11 марта, 2016 (изменено) На всякий случай скрипт с аобсканом, а то вдруг адрес инструкции меняется после перезагрузки игры: Показать контент { Game : willrock.exe Version: Date : 2016-03-11 Author : Garik66 This script does blah blah blah } [ENABLE] aobscanmodule(CarbonDioxide,willrock.exe,D9 96 C7 02 00 00 D8 1D * * * * DF E0 25) // should be unique alloc(newmem,$1000) label(code) label(return) newmem: code: fst dword ptr [esi+000002C7] mov dword ptr [esi+000002C7],0 jmp return CarbonDioxide: jmp code nop return: registersymbol(CarbonDioxide) [DISABLE] CarbonDioxide: db D9 96 C7 02 00 00 unregistersymbol(CarbonDioxide) dealloc(newmem) { // ORIGINAL CODE - INJECTION POINT: "willrock.exe"+22210 "willrock.exe"+221E6: 8B 86 F3 01 00 00 - mov eax,[esi+000001F3] "willrock.exe"+221EC: F6 C4 08 - test ah,08 "willrock.exe"+221EF: 0F 84 BC 00 00 00 - je willrock.exe+222B1 "willrock.exe"+221F5: 8B 16 - mov edx,[esi] "willrock.exe"+221F7: 8B CE - mov ecx,esi "willrock.exe"+221F9: FF 52 74 - call dword ptr [edx+74] "willrock.exe"+221FC: 85 C0 - test eax,eax "willrock.exe"+221FE: 0F 85 AD 00 00 00 - jne willrock.exe+222B1 "willrock.exe"+22204: D9 05 F4 E9 98 00 - fld dword ptr [willrock.exe+58E9F4] "willrock.exe"+2220A: D8 86 C7 02 00 00 - fadd dword ptr [esi+000002C7] // ---------- INJECTING HERE ---------- "willrock.exe"+22210: D9 96 C7 02 00 00 - fst dword ptr [esi+000002C7] // ---------- DONE INJECTING ---------- "willrock.exe"+22216: D8 1D 70 B6 5F 00 - fcomp dword ptr [willrock.exe+1FB670] "willrock.exe"+2221C: DF E0 - fnstsw ax "willrock.exe"+2221E: 25 00 01 00 00 - and eax,00000100 "willrock.exe"+22223: 0F 85 C8 00 00 00 - jne willrock.exe+222F1 "willrock.exe"+22229: A0 54 1B 64 00 - mov ax,[willrock.exe+241B54] "willrock.exe"+2222E: A8 01 - test al,01 "willrock.exe"+22230: 75 3A - jne willrock.exe+2226C "willrock.exe"+22232: 8A D0 - mov dl,al "willrock.exe"+22234: 68 00 23 42 00 - push willrock.exe+22300 "willrock.exe"+22239: 80 CA 01 - or dl,01 } И скрипт infiniteHP Показать контент { Game : willrock.exe Version: Date : 2016-03-11 Author : Garik66 This script does blah blah blah } [ENABLE] aobscanmodule(InfiniteHP,willrock.exe,D9 9E D0 00 00 00 FF) // should be unique alloc(newmem,$1000) label(code) label(return) newmem: code: fstp dword ptr [esi+000000D0] mov dword ptr [esi+000000D0],(float)100 jmp return InfiniteHP: jmp code nop return: registersymbol(InfiniteHP) [DISABLE] InfiniteHP: db D9 9E D0 00 00 00 unregistersymbol(InfiniteHP) dealloc(newmem) { // ORIGINAL CODE - INJECTION POINT: "willrock.exe"+282B3 "willrock.exe"+2828E: D9 5C 24 08 - fstp dword ptr [esp+08] "willrock.exe"+28292: DE E9 - fsubp st(1),st(0) "willrock.exe"+28294: D9 44 24 14 - fld dword ptr [esp+14] "willrock.exe"+28298: D8 AE 03 02 00 00 - fsubr dword ptr [esi+00000203] "willrock.exe"+2829E: 8B 06 - mov eax,[esi] "willrock.exe"+282A0: 57 - push edi "willrock.exe"+282A1: 8B CE - mov ecx,esi "willrock.exe"+282A3: D9 9E 03 02 00 00 - fstp dword ptr [esi+00000203] "willrock.exe"+282A9: D8 44 24 0C - fadd dword ptr [esp+0C] "willrock.exe"+282AD: D8 AE D0 00 00 00 - fsubr dword ptr [esi+000000D0] // ---------- INJECTING HERE ---------- "willrock.exe"+282B3: D9 9E D0 00 00 00 - fstp dword ptr [esi+000000D0] // ---------- DONE INJECTING ---------- "willrock.exe"+282B9: FF 90 10 01 00 00 - call dword ptr [eax+00000110] "willrock.exe"+282BF: 8B 0D 5C FF 64 00 - mov ecx,[willrock.exe+24FF5C] "willrock.exe"+282C5: E8 36 F8 07 00 - call willrock.exe+A7B00 "willrock.exe"+282CA: D8 7F 06 - fdivr dword ptr [edi+06] "willrock.exe"+282CD: D9 5F 06 - fstp dword ptr [edi+06] "willrock.exe"+282D0: 5F - pop edi "willrock.exe"+282D1: 5E - pop esi "willrock.exe"+282D2: 83 C4 08 - add esp,08 "willrock.exe"+282D5: C2 04 00 - ret 0004 "willrock.exe"+282D8: 36 F8 - clc } Изменено 11 марта, 2016 пользователем Garik66 Ссылка на комментарий Поделиться на другие сайты Поделиться
LIRW Опубликовано 11 марта, 2016 Поделиться Опубликовано 11 марта, 2016 Там можно сделать что бы в обще в воде было как по воздуху... На пример вот так. Показать контент [ENABLE] aobscanmodule(Oxygen_,willrock.exe,D8 A1 * * * * D8 0D * * * * C3) alloc(newmem,$1000) label(code) label(return) newmem: code: fadd dword ptr [ecx+000002C7] jmp return Oxygen_: jmp code nop return: registersymbol(Oxygen_) [DISABLE] Oxygen_: db D8 A1 C7 02 00 00 unregistersymbol(Oxygen_) dealloc(newmem) Там из воды когда выныриваешь можно сделать много отсевов и пусть даже значение будет не известным и изменилось оно или нет остаётся 6 адресов... Я что бы не улететь с игры - бряки на все поставил и всё думаю другого адреса быть не может,а если игра вылетит - то останутся инструкции. Хотел все найти и трейнер сделать к этой игре - да кому она нужна... Пойду кино смотреть Ссылка на комментарий Поделиться на другие сайты Поделиться
SerVick Опубликовано 11 марта, 2016 Автор Поделиться Опубликовано 11 марта, 2016 В 11.03.2016 в 18:19, Garik66 сказал: На всякий случай скрипт с аобсканом, а то вдруг адрес инструкции меняется после перезагрузки игры: Показать контент { Game : willrock.exe Version: Date : 2016-03-11 Author : Garik66 This script does blah blah blah } [ENABLE] aobscanmodule(CarbonDioxide,willrock.exe,D9 96 C7 02 00 00 D8 1D * * * * DF E0 25) // should be unique alloc(newmem,$1000) label(code) label(return) newmem: code: fst dword ptr [esi+000002C7] mov dword ptr [esi+000002C7],0 jmp return CarbonDioxide: jmp code nop return: registersymbol(CarbonDioxide) [DISABLE] CarbonDioxide: db D9 96 C7 02 00 00 unregistersymbol(CarbonDioxide) dealloc(newmem) { // ORIGINAL CODE - INJECTION POINT: "willrock.exe"+22210 "willrock.exe"+221E6: 8B 86 F3 01 00 00 - mov eax,[esi+000001F3] "willrock.exe"+221EC: F6 C4 08 - test ah,08 "willrock.exe"+221EF: 0F 84 BC 00 00 00 - je willrock.exe+222B1 "willrock.exe"+221F5: 8B 16 - mov edx,[esi] "willrock.exe"+221F7: 8B CE - mov ecx,esi "willrock.exe"+221F9: FF 52 74 - call dword ptr [edx+74] "willrock.exe"+221FC: 85 C0 - test eax,eax "willrock.exe"+221FE: 0F 85 AD 00 00 00 - jne willrock.exe+222B1 "willrock.exe"+22204: D9 05 F4 E9 98 00 - fld dword ptr [willrock.exe+58E9F4] "willrock.exe"+2220A: D8 86 C7 02 00 00 - fadd dword ptr [esi+000002C7] // ---------- INJECTING HERE ---------- "willrock.exe"+22210: D9 96 C7 02 00 00 - fst dword ptr [esi+000002C7] // ---------- DONE INJECTING ---------- "willrock.exe"+22216: D8 1D 70 B6 5F 00 - fcomp dword ptr [willrock.exe+1FB670] "willrock.exe"+2221C: DF E0 - fnstsw ax "willrock.exe"+2221E: 25 00 01 00 00 - and eax,00000100 "willrock.exe"+22223: 0F 85 C8 00 00 00 - jne willrock.exe+222F1 "willrock.exe"+22229: A0 54 1B 64 00 - mov ax,[willrock.exe+241B54] "willrock.exe"+2222E: A8 01 - test al,01 "willrock.exe"+22230: 75 3A - jne willrock.exe+2226C "willrock.exe"+22232: 8A D0 - mov dl,al "willrock.exe"+22234: 68 00 23 42 00 - push willrock.exe+22300 "willrock.exe"+22239: 80 CA 01 - or dl,01 } И скрипт infiniteHP Показать контент { Game : willrock.exe Version: Date : 2016-03-11 Author : Garik66 This script does blah blah blah } [ENABLE] aobscanmodule(InfiniteHP,willrock.exe,D9 9E D0 00 00 00 FF) // should be unique alloc(newmem,$1000) label(code) label(return) newmem: code: fstp dword ptr [esi+000000D0] mov dword ptr [esi+000000D0],(float)100 jmp return InfiniteHP: jmp code nop return: registersymbol(InfiniteHP) [DISABLE] InfiniteHP: db D9 9E D0 00 00 00 unregistersymbol(InfiniteHP) dealloc(newmem) { // ORIGINAL CODE - INJECTION POINT: "willrock.exe"+282B3 "willrock.exe"+2828E: D9 5C 24 08 - fstp dword ptr [esp+08] "willrock.exe"+28292: DE E9 - fsubp st(1),st(0) "willrock.exe"+28294: D9 44 24 14 - fld dword ptr [esp+14] "willrock.exe"+28298: D8 AE 03 02 00 00 - fsubr dword ptr [esi+00000203] "willrock.exe"+2829E: 8B 06 - mov eax,[esi] "willrock.exe"+282A0: 57 - push edi "willrock.exe"+282A1: 8B CE - mov ecx,esi "willrock.exe"+282A3: D9 9E 03 02 00 00 - fstp dword ptr [esi+00000203] "willrock.exe"+282A9: D8 44 24 0C - fadd dword ptr [esp+0C] "willrock.exe"+282AD: D8 AE D0 00 00 00 - fsubr dword ptr [esi+000000D0] // ---------- INJECTING HERE ---------- "willrock.exe"+282B3: D9 9E D0 00 00 00 - fstp dword ptr [esi+000000D0] // ---------- DONE INJECTING ---------- "willrock.exe"+282B9: FF 90 10 01 00 00 - call dword ptr [eax+00000110] "willrock.exe"+282BF: 8B 0D 5C FF 64 00 - mov ecx,[willrock.exe+24FF5C] "willrock.exe"+282C5: E8 36 F8 07 00 - call willrock.exe+A7B00 "willrock.exe"+282CA: D8 7F 06 - fdivr dword ptr [edi+06] "willrock.exe"+282CD: D9 5F 06 - fstp dword ptr [edi+06] "willrock.exe"+282D0: 5F - pop edi "willrock.exe"+282D1: 5E - pop esi "willrock.exe"+282D2: 83 C4 08 - add esp,08 "willrock.exe"+282D5: C2 04 00 - ret 0004 "willrock.exe"+282D8: 36 F8 - clc } Показать Garik66, не знаю у меня в окне просмотра так отображается. Качал на руторе у Wolfstein, Версия игры 1.2, Размер 319.35 MB Ссылка на комментарий Поделиться на другие сайты Поделиться
SerVick Опубликовано 11 марта, 2016 Автор Поделиться Опубликовано 11 марта, 2016 В 11.03.2016 в 18:21, LIRW сказал: Там можно сделать что бы в обще в воде было как по воздуху... На пример вот так. Показать контент [ENABLE] aobscanmodule(Oxygen_,willrock.exe,D8 A1 * * * * D8 0D * * * * C3) alloc(newmem,$1000) label(code) label(return) newmem: code: fadd dword ptr [ecx+000002C7] jmp return Oxygen_: jmp code nop return: registersymbol(Oxygen_) [DISABLE] Oxygen_: db D8 A1 C7 02 00 00 unregistersymbol(Oxygen_) dealloc(newmem) Там из воды когда выныриваешь можно сделать много отсевов и пусть даже значение будет не известным и изменилось оно или нет остаётся 6 адресов... Я что бы не улететь с игры - бряки на все поставил и всё думаю другого адреса быть не может,а если игра вылетит - то останутся инструкции. Хотел все найти и трейнер сделать к этой игре - да кому она нужна... Пойду кино смотреть Показать Не знаю я так сделал, как по земле. (работает) Показать контент newmem: fsub dword ptr [esi+000002C7] originalcode: fadd dword ptr [esi+000002C7] Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 11 марта, 2016 Поделиться Опубликовано 11 марта, 2016 SerVick Я не проверял, но думаю все три скрипта и мой, и LIRW, и твой работают примерно одинаково. Я думаю разрабы взяли за основу в этой игре содержание углекислого газа в лёгких при задержке дыхания т.е. при 0 % углекислого газа нормальное содержание кислорода, а при 25 % углекислого газа кислорода уже нет, он уже весь ушёл на окисление. Мой скрипт просто постоянно записывает 0 %. Поэтому работает, как вы выразились - как по воздуху. Твой скрипт отнимает тоже самое количество, что и прибавилось углекислого газа, поэтому, если твой скрипт включён до вхождения в воду, то он работает так же как и мой, т.е. концентрация 0 процентов (инструкция с которой работал ты находится как раз над моей). Скрипт LIRW в игре не смотрел, но думаю, что работает также. Реализаций много как видишь. А теперь вернёмся к твоим значениям, как видимо - ты пока ещё путаешься в типах значениях Никаких значений типа 4б = 138354444 и 1.058382152E-14 = 675195203 там нет. Чтобы убедиться: перейди в отладчик выдели там мою инструкцию: "willrock.exe"+22210: D9 96 C7 02 00 00 - fst dword ptr [esi+000002C7] ПКМ по ней и выбери в контекстном меню "Найти адреса, к которым обращается инструкция" И в новом появившемся окне сразу выбери тип float. Найдётся один адрес и значение в нём на воздухе будет равно 0. А когда нырнёшь, то значение начнёт расти и при значении выше 25 начнут отниматься НР. Ссылка на комментарий Поделиться на другие сайты Поделиться
LIRW Опубликовано 11 марта, 2016 Поделиться Опубликовано 11 марта, 2016 В 11.03.2016 в 21:49, SerVick сказал: Не знаю я так сделал, как по земле. (работает) Показать Вот на этой игре по тренируйся "Alekhines Gun" только что вышла. Вот это действительно трудно. Мало того значение не пойми в чем, так ещо и на каждую инструкцию идет прыжок. Я уже полтора часа здоровье найти не могу наверное подустал сегодня - надо спать ложиться, утром продолжу. Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 12 марта, 2016 Поделиться Опубликовано 12 марта, 2016 В 11.03.2016 в 13:47, SerVick сказал: Вчера переискал. И каково было удивление нашёл в этой игре, аж 2 -а рабочих адреса (4б и float) на кислород. Первый раз когда искал думал такие значения на вряд -ли могут быть, а именно 4б = 138354444 почти полная шкала (точно не скажешь какие цифры, шкала в виде полосы). А float переведя в 4б значение совсем другое 1.058382152E-14 = 675195203, но самое интересное оба адреса "морозят" шкалу. Показать SerVick Понял, что ты нашёл и почему тебя это запутало. СЕ при поиске/отсеве адресов 4 байта (или float) проверяет все адреса с шагом 4 байта, т.е. кратно 4. а теперь посмотри на инструкцию, которая работает с нужным нам адресом: "willrock.exe"+22210: D9 96 C7 02 00 00 - fst dword ptr [esi+000002C7] Смещение 000002C7 не кратно 4. Поэтому адрес, который ты нашел. находится по смещению [esi+000002C8] - да он морозит кислород. Вот сейчас специально переискал: получил адрес [092419F8] значение в 4 байтах 3762339364 (во float -5.555431153E19). Поставив на него бряк всё равно выйдем на правильную инструкцию fst dword ptr [esi+000002C7], а уже из инструкции получим правильный адрес: [092419F7] = (float) 5.941988945. Наверное разрабы специально сместили адрес на байт, чтобы запутать новичков. Да и при построении Структуры, СЕ тоже не покажет правильный адрес, а покажет адрес [092419F8], поэтому его тоже нужно вводить вручную. Ссылка на комментарий Поделиться на другие сайты Поделиться
SerVick Опубликовано 12 марта, 2016 Автор Поделиться Опубликовано 12 марта, 2016 В 11.03.2016 в 23:15, LIRW сказал: Вот на этой игре по тренируйся "Alekhines Gun" только что вышла. Вот это действительно трудно. Мало того значение не пойми в чем, так ещо и на каждую инструкцию идет прыжок. Я уже полтора часа здоровье найти не могу наверное подустал сегодня - надо спать ложиться, утром продолжу. Показать LIRW, привет!!! Видно, тоже ушёл спать, не прочитал твоё сообщение. Сейчас посмотрю хар -ки, если система потянет потренируюсь. О не вопрос, по системе на максимале пойдёт. Сейчас качну. Ссылка на комментарий Поделиться на другие сайты Поделиться
LIRW Опубликовано 12 марта, 2016 Поделиться Опубликовано 12 марта, 2016 В 12.03.2016 в 14:10, SerVick сказал: по системе на максимале пойдёт Показать Она у мня на максималке идет на 1gb карте прошлого века.. Так что пойдет всё норм у тебя. Игра кстати интересная - как раз что то вроде той военной, которую ты в комментарии о забытых играх первую указал.. Тоже видок от третьего лица и так же почти все по геймплею... Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения