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

Совет от новичка = новичкам! Поиск неизвестного значения?!


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

1 час назад, Garik66 сказал:

Значение во float кислорода. Осталось 36 значений заморозил все, кислород замер, но игра вылетела, так что не успел выйти на кокретное значение. Сейчас перекурю - сделаю.

Garik66, ищи сразу увеличилось, не изменилось, шкалу заполнил уменьшилось и т.д. У меня вчера в обще штуки по 3 -и оставалось адресов. А столько много морозить рисково вылет практически в любой игре обеспечен. Кстати пользуйся паузой, а не меню удобней. 

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

1 час назад, SerVick сказал:

Garik66, ищи сразу увеличилось, не изменилось, шкалу заполнил уменьшилось и т.д. У меня вчера в обще штуки по 3 -и оставалось адресов. А столько много морозить рисково вылет практически в любой игре обеспечен. Кстати пользуйся паузой, а не меню удобней. Вот примерно как у тебя будут выглядеть значение. Не в воде (шкалы нет) = 7.105427358E-15, в воде (почти полная шкала) <> 1.058382152E-14

 

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

Значит что я нашёл значение во float от 0 (когда шкала полная т.е. не в воде) и до 24 (когда нужно уже умирать - утонул).

инструкция на запись:

"willrock.exe"+22210: D9 96 C7 02 00 00              -  fst dword ptr [esi+000002C7]

 

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

Но никаких твоих значений я не нашёл и да, как и говорил кислород лежит в структуре ГГ (по смещению [esi+00000040] так и написано - player .:D

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

Вот сейчас отключил заморозку адреса. Здоровье начинает отниматься когда кислород (а точнее думаю это углекислый газ :D) равен 25.58665848 во float.

 

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

На всякий случай скрипт с аобсканом, а то вдруг адрес инструкции меняется после перезагрузки игры:

Скрытый текст

{ 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
Ссылка на комментарий
Поделиться на другие сайты

Там можно сделать что бы в обще в воде было как по воздуху... На пример вот так.  

Скрытый текст

[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 адресов... Я что бы не улететь с игры - бряки на все поставил и всё :) думаю другого адреса быть не может,а если игра вылетит - то останутся инструкции.  

Хотел все найти и трейнер сделать к этой игре - да кому она нужна... Пойду кино смотреть :rolleyes:

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

5 часов назад, 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

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

5 часов назад, 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 адресов... Я что бы не улететь с игры - бряки на все поставил и всё :) думаю другого адреса быть не может,а если игра вылетит - то останутся инструкции.  

Хотел все найти и трейнер сделать к этой игре - да кому она нужна... Пойду кино смотреть :rolleyes:

Не знаю я так сделал, как по земле. (работает)

Скрытый текст

newmem:
fsub dword ptr [esi+000002C7]

originalcode:
fadd dword ptr [esi+000002C7]

 

 

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

Я не проверял, но думаю все три скрипта и мой, и 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 начнут отниматься НР.

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

1 час назад, SerVick сказал:

Не знаю я так сделал, как по земле. (работает)

Вот на этой игре по тренируйся "Alekhines Gun" только что вышла. Вот это действительно трудно. Мало того значение не пойми в чем, так ещо и на каждую инструкцию идет прыжок. Я уже полтора часа здоровье найти не могу :lol: наверное подустал сегодня - надо спать ложиться, утром продолжу.

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

17 час назад, SerVick сказал:

Вчера переискал. И каково было удивление нашёл в этой игре, аж 2 -а рабочих адреса (4б и float) на кислород. Первый раз когда искал думал

такие значения на вряд -ли могут быть, а именно 4б = 138354444 почти полная шкала (точно не скажешь какие цифры, шкала в виде полосы).

А float переведя в 4б значение совсем другое  1.058382152E-14 = 675195203, но самое интересное оба адреса "морозят" шкалу.

Понял, что ты нашёл и почему тебя это запутало.

СЕ при поиске/отсеве адресов 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], поэтому его тоже нужно вводить вручную.

 

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

15 час назад, LIRW сказал:

Вот на этой игре по тренируйся "Alekhines Gun" только что вышла. Вот это действительно трудно. Мало того значение не пойми в чем, так ещо и на каждую инструкцию идет прыжок. Я уже полтора часа здоровье найти не могу :lol: наверное подустал сегодня - надо спать ложиться, утром продолжу.

LIRW, привет!!! Видно, тоже ушёл спать, не прочитал твоё сообщение. Сейчас посмотрю хар -ки, если система потянет потренируюсь. 

О не вопрос, по системе на максимале пойдёт. Сейчас качну.

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

3 минуты назад, SerVick сказал:

по системе на максимале пойдёт

Она у мня на максималке идет на 1gb карте прошлого века.. Так что пойдет всё норм у тебя. Игра кстати интересная - как раз что то вроде той военной, которую ты в комментарии о забытых играх первую указал.. Тоже видок от третьего лица и так же почти все по геймплею... 

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

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

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

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