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

Sniper Elite 3 Урон От Оружия


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

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

Есть скрипт на здоровье, если надо. 

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

[ENABLE]

aobscanmodule(Health,SniperElite3.exe,0F 2F 84 32 D0 FB FF FF 73)
alloc(newmem,2048)
label(returnhere)
label(originalcode)

newmem:
mov [edx+esi-00000430],(float)300

originalcode:
comiss xmm0,[edx+esi-00000430]
jmp returnhere

Health:
jmp newmem
nop
nop
nop
returnhere:
registersymbol(Health)

[DISABLE]
Health:
db 0F 2F 84 32 D0 FB FF FF

unregistersymbol(Health)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: "SniperElite3.exe"+474339

"SniperElite3.exe"+474310: F3 0F 11 86 54 FE FF FF  -  movss [esi-000001AC],xmm0
"SniperElite3.exe"+474318: 8B 96 8C FB FF FF        -  mov edx,[esi-00000474]
"SniperElite3.exe"+47431E: 8B 42 44                 -  mov eax,[edx+44]
"SniperElite3.exe"+474321: 8D 8E 8C FB FF FF        -  lea ecx,[esi-00000474]
"SniperElite3.exe"+474327: FF D0                    -  call eax
"SniperElite3.exe"+474329: 0F 57 C0                 -  xorps xmm0,xmm0
"SniperElite3.exe"+47432C: 84 C0                    -  test al,al
"SniperElite3.exe"+47432E: 74 35                    -  je SniperElite3.exe+474365
"SniperElite3.exe"+474330: 8B 8E 90 FB FF FF        -  mov ecx,[esi-00000470]
"SniperElite3.exe"+474336: 8B 51 08                 -  mov edx,[ecx+08]
// ---------- INJECTING HERE ----------
"SniperElite3.exe"+474339: 0F 2F 84 32 D0 FB FF FF  -  comiss xmm0,[edx+esi-00000430]
// ---------- DONE INJECTING  ----------
"SniperElite3.exe"+474341: 73 22                    -  jae SniperElite3.exe+474365
"SniperElite3.exe"+474343: 83 BE 50 FC FF FF 03     -  cmp dword ptr [esi-000003B0],03
"SniperElite3.exe"+47434A: 74 19                    -  je SniperElite3.exe+474365
"SniperElite3.exe"+47434C: 8D 8E 8C FB FF FF        -  lea ecx,[esi-00000474]
"SniperElite3.exe"+474352: E8 49 2D FF FF           -  call SniperElite3.exe+4670A0
"SniperElite3.exe"+474357: 8D 8E 8C FB FF FF        -  lea ecx,[esi-00000474]
"SniperElite3.exe"+47435D: E8 EE 2B FF FF           -  call SniperElite3.exe+466F50
"SniperElite3.exe"+474362: 0F 57 C0                 -  xorps xmm0,xmm0
"SniperElite3.exe"+474365: F3 0F 10 8E E8 FD FF FF  -  movss xmm1,[esi-00000218]
"SniperElite3.exe"+47436D: 0F 2F C8                 -  comiss xmm1,xmm0
}

 

 

Вот скрипт, на точность.

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

[ENABLE]

aobscanmodule(Accuracy,SniperElite3.exe,F3 0F 10 86 C8 00 00 00 F3 0F 5E)
alloc(newmem,2048)
label(returnhere)
label(originalcode)

newmem:
mov [esi+000000C8],(float)0

originalcode:
movss xmm0,[esi+000000C8]
jmp returnhere

Accuracy:
jmp newmem
nop
nop
nop
returnhere:
registersymbol(Accuracy)

[DISABLE]
Accuracy:
db F3 0F 10 86 C8 00 00 00

unregistersymbol(Accuracy)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: "SniperElite3.exe"+52FE72

"SniperElite3.exe"+52FE53: EB 05                    -  jmp SniperElite3.exe+52FE5A
"SniperElite3.exe"+52FE55: B8 01 00 00 00           -  mov eax,00000001
"SniperElite3.exe"+52FE5A: 84 C0                    -  test al,al
"SniperElite3.exe"+52FE5C: 74 11                    -  je SniperElite3.exe+52FE6F
"SniperElite3.exe"+52FE5E: 8B 75 D8                 -  mov esi,[ebp-28]
"SniperElite3.exe"+52FE61: B0 01                    -  mov al,01
"SniperElite3.exe"+52FE63: A2 17 A0 E3 00           -  mov [SniperElite3.exe+A3A017],al
"SniperElite3.exe"+52FE68: A2 1C A0 E3 00           -  mov [SniperElite3.exe+A3A01C],al
"SniperElite3.exe"+52FE6D: EB 03                    -  jmp SniperElite3.exe+52FE72
"SniperElite3.exe"+52FE6F: 8B 75 D8                 -  mov esi,[ebp-28]
// ---------- INJECTING HERE ----------
"SniperElite3.exe"+52FE72: F3 0F 10 86 C8 00 00 00  -  movss xmm0,[esi+000000C8]
// ---------- DONE INJECTING  ----------
"SniperElite3.exe"+52FE7A: F3 0F 5E 05 E4 0D D2 00  -  divss xmm0,[SniperElite3.exe+920DE4]
"SniperElite3.exe"+52FE82: F3 0F 10 0D F8 8A CE 00  -  movss xmm1,[SniperElite3.exe+8E8AF8]
"SniperElite3.exe"+52FE8A: F3 0F 59 0D 20 8B B7 00  -  mulss xmm1,[SniperElite3.exe+778B20]
"SniperElite3.exe"+52FE92: F3 0F 11 05 28 A0 E3 00  -  movss [SniperElite3.exe+A3A028],xmm0
"SniperElite3.exe"+52FE9A: F3 0F 5E C1              -  divss xmm0,xmm1
"SniperElite3.exe"+52FE9E: F3 0F 11 05 2C A0 E3 00  -  movss [SniperElite3.exe+A3A02C],xmm0
"SniperElite3.exe"+52FEA6: 8B 8F E0 02 00 00        -  mov ecx,[edi+000002E0]
"SniperElite3.exe"+52FEAC: 8B 01                    -  mov eax,[ecx]
"SniperElite3.exe"+52FEAE: 8B 80 A0 00 00 00        -  mov eax,[eax+000000A0]
"SniperElite3.exe"+52FEB4: 8D 55 E0                 -  lea edx,[ebp-20]
}

 

 

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

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

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

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

поставил nop на эту subss xmm1,xmm7 но в самой инструкции, почему то не адресов, то есть когда просматриваешь эту инструкцию, там почему то не адресов. Поставил nop на инструкцию, и начал стрелять по врагу, здоровья врага не отнималось,также и здоровья игрока тоже не отнималось, поставил мину на землю, и начал по ней стрелять, мина не взрывается.

подскажите как правильно написать эту инструкцию, на урон.

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

[ENABLE]

aobscanmodule(INJECT,SniperElite3.exe,F3 0F 5C CF 0F 2F CE F3 0F 11 4B)
alloc(newmem,$1000,INJECT)

label(code)
label(return)

newmem:

code:
  subss xmm1,xmm7
  comiss xmm1,xmm6
  jmp return

INJECT:
  jmp newmem
  nop
  nop
return:
registersymbol(INJECT)

[DISABLE]
INJECT:
  db F3 0F 5C CF 0F 2F CE

unregistersymbol(INJECT)
dealloc(newmem)

 

 

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

В 01.03.2017в11:25, Submarina сказал:

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

поставил nop на эту subss xmm1,xmm7 но в самой инструкции, почему то не адресов, то есть когда просматриваешь эту инструкцию, там почему то не адресов. Поставил nop на инструкцию, и начал стрелять по врагу, здоровья врага не отнималось,также и здоровья игрока тоже не отнималось, поставил мину на землю, и начал по ней стрелять, мина не взрывается.

подскажите как правильно написать эту инструкцию, на урон.

  Показать содержимое


[ENABLE]

aobscanmodule(INJECT,SniperElite3.exe,F3 0F 5C CF 0F 2F CE F3 0F 11 4B)
alloc(newmem,$1000,INJECT)

label(code)
label(return)

newmem:

code:
  subss xmm1,xmm7
  comiss xmm1,xmm6
  jmp return

INJECT:
  jmp newmem
  nop
  nop
return:
registersymbol(INJECT)

[DISABLE]
INJECT:
  db F3 0F 5C CF 0F 2F CE

unregistersymbol(INJECT)
dealloc(newmem)

 

 

не как, не правильная инструкция...

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

Это инструкция отвечает за урон игрока, а не оружия, а инструкцию на урон оружия я так и не нашёл, на СЕ форуме читал 

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

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

1 минуту назад, Submarina сказал:

где мене ещё можно поискать урон на оружия, ищу в первые.

Предполагаю, что так:

Патроны -> Структура оружия -> Урон оружия.

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

Привет Игорь я пробовал, но урона на оружия, там нет.

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

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

48 минуты назад, Garik66 сказал:

Предполагаю, что так:

Патроны -> Структура оружия -> Урон оружия.

Скорее всего в игре есть структура характеристик патрон как в battlefield, в которых хранятся баллистические показатели пули.

 

45 минуты назад, Submarina сказал:

но урона на оружия, там нет.

 

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

 

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

16 минуту назад, partoftheworlD сказал:

Скорее всего в игре есть структура характеристик патрон как в battlefield, в которых хранятся баллистические показатели пули.

Хорошо тогда немного изменю поиск урона именно оружия:

Вариант 1

Текущее кол-во патронов в рожке-> Бряк -> Структура характеристик патрон-> Max Кол-во патрон в рожке -> Бряк -> Структура оружия -> Урон оружия (методом научного тыка).

Или через НР_ГГ

Вариант 2

НР_ГГ -> записывающая инструкция -> выше по игровому коду ищем расчёт нового HP -> смотрим что отнимается от предыдущего значения НР -> выходим на инструкцию работающую с уроном.

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

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

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

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

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

Вариант 2

НР_ГГ -> записывающая инструкция -> выше по игровому коду ищем расчёт нового HP -> смотрим что отнимается от предыдущего значения НР -> выходим на инструкцию работающую с уроном.

 

Я решил посмотреть что там с игрой, правда 2-й частью игры, но тут урон это константа. Т.е если осколки -  сносит 0,1 хп, если попадание то 2.5 сносит., граната 5,0 V65 берется из стека.

 

if ( v29 && v30 && sub_185350(v16, &v60) && sub_22CA40(-1773941975, v59) && sub_202E50(-967545528, 0) )
              {
                Damage = v65 - 5.0;
                v73 = 0;
                sub_3A24A0(3, &v60, 0);
                sub_3E0640(v16);
                dword_750C78 = 0;
                *(v7 + 112) |= 4u;
                goto LABEL_66;
              }

 

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

Там всего одна инструкция, вылазить пошарил по коду, выше нашёл subss xmm0,[ebp+08] при обнулении этой инструкции, урон не на носится, но это не та инструкция, так и не пойму где лежит урон.

У тебя скрипт есть для sniper elite 2

http://imglink.ru/pictures/06-03-17/23680e2be1aec24d93ca6cf039b6c5af.jpg

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

3 часа назад, Submarina сказал:

Не могу найти расчёт нового HP. немерено уже структур про шарил.

Баракуда, потесть скрипт сам (мне некогда):

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

{ Game   : SniperElite3.exe
  Version: 
  Date   : 2017-03-08
  Author : Garik66

  This script does blah blah blah
}

[ENABLE]
aobscanmodule(damage,SniperElite3.exe,F3 0F 11 46 40 72 0E) // should be unique
alloc(newmem,$1000)
label(code)
label(return)
label(plusdamage)
registersymbol(damage)

newmem:
  subss xmm0,[plusdamage]
code:
  movss [esi+40],xmm0
  jmp return

plusdamage:
dd (float)5000

damage:
  jmp newmem
return:

[DISABLE]
damage:
  db F3 0F 11 46 40

unregistersymbol(damage)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: "SniperElite3.exe"+E3027

"SniperElite3.exe"+E300A: 75 50                 -  jne SniperElite3.exe+E305C
"SniperElite3.exe"+E300C: 8B 06                 -  mov eax,[esi]
"SniperElite3.exe"+E300E: 8B 10                 -  mov edx,[eax]
"SniperElite3.exe"+E3010: 8B CE                 -  mov ecx,esi
"SniperElite3.exe"+E3012: FF D2                 -  call edx
"SniperElite3.exe"+E3014: D9 5D FC              -  fstp dword ptr [ebp-04]
"SniperElite3.exe"+E3017: F3 0F 10 46 40        -  movss xmm0,[esi+40]
"SniperElite3.exe"+E301C: F3 0F 5C 45 08        -  subss xmm0,[ebp+08]
"SniperElite3.exe"+E3021: 0F 57 C9              -  xorps xmm1,xmm1
"SniperElite3.exe"+E3024: 0F 2F C8              -  comiss xmm1,xmm0
// ---------- INJECTING HERE ----------
"SniperElite3.exe"+E3027: F3 0F 11 46 40        -  movss [esi+40],xmm0
// ---------- DONE INJECTING  ----------
"SniperElite3.exe"+E302C: 72 0E                 -  jb SniperElite3.exe+E303C
"SniperElite3.exe"+E302E: 8B 06                 -  mov eax,[esi]
"SniperElite3.exe"+E3030: 8B 50 44              -  mov edx,[eax+44]
"SniperElite3.exe"+E3033: 8B CE                 -  mov ecx,esi
"SniperElite3.exe"+E3035: F3 0F 11 4E 40        -  movss [esi+40],xmm1
"SniperElite3.exe"+E303A: FF D2                 -  call edx
"SniperElite3.exe"+E303C: 8B 06                 -  mov eax,[esi]
"SniperElite3.exe"+E303E: 8B 10                 -  mov edx,[eax]
"SniperElite3.exe"+E3040: 8B CE                 -  mov ecx,esi
"SniperElite3.exe"+E3042: FF D2                 -  call edx
}

 

Вот тут:

"SniperElite3.exe"+E301C: F3 0F 5C 45 08        -  subss xmm0,[ebp+08]

по сути и сидит дамаг в  [ebp+08].

 

ЗЫ: Только я не фильтровал, так что у врагов тоже урон увеличин.

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

3 часа назад, Submarina сказал:

Хорошо сейчас

Хочешь дам совет, забей сходи на форум CE и слепи трейнер, какие проблемы не пойму? У тебя это хорошо получается...

// Dison, прочитай правила форума 2.2. Если, у тебя есть какие то доказательства, а не предположения, то нужно разбираться другим способом, а то у тебя уже были бездоказательные наезды на пользователей. Пока устное предупреждение. Garik66

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

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

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

16 минуту назад, Submarina сказал:

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

Ну то что касается переводчика то ты прав. :D

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

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

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

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