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

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

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

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

18 час назад, Goblin сказал:

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

Предложу такой вариант:

1. Выход на структуру инвентаря (вещмешок, сундук или что там у тебя в игре) - через стакающиеся (которые складываются) предметы. (Пример) Можно использовать тот же автомат (через кол-во патронов), но структура инвентаря будет выше структуры самого автомата.

2. Находим поинтеры предметов в инвентаре (используй тот же автомат).

3. По аналогии с автоматом, теперь уже находим нож и выходим на структуру самого ножа. 

4. Исследуем структуру ножа и выходим на дистанцию поражения.

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

8 часов назад, Garik66 сказал:

Предложу такой вариант:

1. Выход на структуру инвентаря (вещмешок, сундук или что там у тебя в игре) - через стакающиеся (которые складываются) предметы. (Пример) Можно использовать тот же автомат (через кол-во патронов), но структура инвентаря будет выше структуры самого автомата.

2. Находим поинтеры предметов в инвентаре (используй тот же автомат).

3. По аналогии с автоматом, теперь уже находим нож и выходим на структуру самого ножа. 

4. Исследуем структуру ножа и выходим на дистанцию поражения.

Ладно, сейчас будем пробовать, спасибо за совет

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

Ну в игре то по моему инвентаря нету. От патроны он на вряд ли выйдет в структуре на нож. Так как пусть даже смещение то и одинаковое будет, но сама структура то разная для каждого вида оружия, а то есть сами адреса. Вот на пример взять мр40 и пистолет кольт. Они расположены пусть даже под одним смещением, но с разными адресами. Он будет искать сам даже не зная чего. Когда ищешь точность какую либо, то уже отталкиваешься от самого прицела - пусть даже он и визуальный, но начало от чего оттолкнуться есть. А вот нож это уже трудно - только в Иде код смотреть, либо сидеть с недельку, другую пока не надоест искать. В ассемблерных инструкциях он может где и рядом, но он же их не прочтет. Можно попробовать ещо в Олли комментарии посмотреть и уже от них выйти. А так искать - не зная даже чего, без толку. Конечно он ищет адрес, но какой он ? их там миллионы, а самое главное с адресом наверное не чего и не происходит. Даже если и искать анимацию этого ножа - на вряд ли она чем то поможет. Так что только либо в Иде либо в Оли, а по другому это пустая трата времени. 

Вот если бы я решил за подобное взяться, я бы начал с комментариев - по тому как по другому искать, я даже ну не могу предположить как. Но я говорю за себя - может кому что в голову то и по умнее придет.

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

ID оружия найти и выйти на структуру ножа или искать HEX неизвестное изменилось/не изменилось при смене оружия сразу найти указатель на адрес структуры оружия?.

 

Черт, не прочитал первый пост, вообще дистанция поражения может находится вообще не в структуре оружия, а например в где-нибудь в характеристиках ГГ которое будет статичным значением подгружаемым при загрузке игры. Если есть рукопашная атака, нож, топор меняй их и ищи float изменилось/не изменилось, есть вероятность что у них разный радиус действия. Как вариант через наносимый урон выйти на функцию primaryAttack которая работает со всем оружием и после уже используя нож пройтись отладчиком.

 

 

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

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

ID оружия найти и выйти на структуру ножа или искать HEX неизвестное изменилось/не изменилось при смене оружия сразу найти указатель на адрес структуры оружия?.

 

Черт, не прочитал первый пост, вообще дистанция поражения может находится вообще не в структуре оружия, а например в где-нибудь в характеристиках которое будет статичным значением которое подгружается при загрузке игры. Если есть рукопашная атака, нож, топор меняй их и ищи float изменилось/не изменилось, есть вероятность что у них разный радиус действия.

Кроме ножа нету другого оружия ближнего боя

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

Качнул игру, у меня версия

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

Version: [R.G._Mechanics]_Return_to_Castle_Wolfenstein.torrent
           Версия игры - v 1.42c
           Вырезан мультиплеер
           Ничего не перекодировано
           Русификатор текста/звука от Фаргус/7Wolf/Русский проект
           Русификаторы адаптированы под последнюю версию игры (by spider91)
           Возможность выбора сочетания текста и озвучки

Быренько посмотрел (пока время было) структурку:

Патроны по смещению +0298. Адрес патронов статичный qagamex86.dll+6E3378 или 206E3378.

ID (враг/герой) по смещению +060с (у нашего WolfPlay).

По смещению +5e4 поинтер на активное оружие ( у пистолета P->00020000, у ножа P->00010000). Думаю что вот здесь и нужно копать дальше.

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

Короче ломает копать, но вроде всё в одной структуре, все адреса статичные (зелёные).

Вот два скриптика написал, пока лазил:

1. Infinite ammo 

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

{ Game   : WolfSP.exe
  Version: [R.G._Mechanics]_Return_to_Castle_Wolfenstein.torrent
           Версия игры - v 1.42c
           Вырезан мультиплеер
           Ничего не перекодировано
           Русификатор текста/звука от Фаргус/7Wolf/Русский проект
           Русификаторы адаптированы под последнюю версию игры (by spider91)
           Возможность выбора сочетания текста и озвучки
  Date   : 2016-07-04
  Author : Garik66

  This script does blah blah blah
}

[ENABLE]
aobscanmodule(Ammo,qagamex86.dll,FC 89 84 8A 90 02 00 00) // should be unique
alloc(newmem,$1000)
label(code)
label(return)
registersymbol(Ammo)

newmem:
  //cmp ecx,02 // пистолет
  //jne code
  mov eax,[edx+ecx*4+00000290]

code:
  mov [edx+ecx*4+00000290],eax
  jmp return

Ammo+01:
  jmp newmem
  db 90 90
return:

[DISABLE]
Ammo+01:
  db 89 84 8A 90 02 00 00

unregistersymbol(Ammo)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: "qagamex86.dll"+45747

"qagamex86.dll"+4571F: 75 07                 -  jne qagamex86.dll+45728
"qagamex86.dll"+45721: C7 45 FC 0B 00 00 00  -  mov [ebp-04],0000000B
"qagamex86.dll"+45728: A1 F0 C7 72 20        -  mov eax,[qagamex86.dll+72C7F0]
"qagamex86.dll"+4572D: 8B 08                 -  mov ecx,[eax]
"qagamex86.dll"+4572F: 8B 55 FC              -  mov edx,[ebp-04]
"qagamex86.dll"+45732: 8B 84 91 90 02 00 00  -  mov eax,[ecx+edx*4+00000290]
"qagamex86.dll"+45739: 2B 45 0C              -  sub eax,[ebp+0C]
"qagamex86.dll"+4573C: 8B 0D F0 C7 72 20     -  mov ecx,[qagamex86.dll+72C7F0]
"qagamex86.dll"+45742: 8B 11                 -  mov edx,[ecx]
"qagamex86.dll"+45744: 8B 4D FC              -  mov ecx,[ebp-04]
// ---------- INJECTING HERE ----------
"qagamex86.dll"+45747: 89 84 8A 90 02 00 00  -  mov [edx+ecx*4+00000290],eax
// ---------- DONE INJECTING  ----------
"qagamex86.dll"+4574E: 5F                    -  pop edi
"qagamex86.dll"+4574F: 5E                    -  pop esi
"qagamex86.dll"+45750: 5B                    -  pop ebx
"qagamex86.dll"+45751: 8B E5                 -  mov esp,ebp
"qagamex86.dll"+45753: 5D                    -  pop ebp
"qagamex86.dll"+45754: C3                    -  ret 
"qagamex86.dll"+45755: CC                    -  int 3 
"qagamex86.dll"+45756: CC                    -  int 3 
"qagamex86.dll"+45757: CC                    -  int 3 
"qagamex86.dll"+45758: CC                    -  int 3 
}

 

Адрес Ammo - qagamex86.dll+6E3378.

2. God Mod

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

{ Game   : WolfSP.exe
  Version: Version: [R.G._Mechanics]_Return_to_Castle_Wolfenstein.torrent
           Версия игры - v 1.42c
           Вырезан мультиплеер
           Ничего не перекодировано
           Русификатор текста/звука от Фаргус/7Wolf/Русский проект
           Русификаторы адаптированы под последнюю версию игры (by spider91)
           Возможность выбора сочетания текста и озвучки
  Date   : 2016-07-04
  Author : Garik66

  This script does blah blah blah
}

[ENABLE]
aobscanmodule(HP,qagamex86.dll,89 8A D8 03 00 00 8B 45 08 83 B8 A8) // should be unique
alloc(newmem,$1000)
label(code)
label(return)
registersymbol(HP)

newmem:
  mov eax,[edx+0450]
  cmp [eax],'play'
  jne code
  mov ecx,[edx+000003D8]

code:
  mov [edx+000003D8],ecx
  jmp return

HP:
  jmp newmem
  db 90
return:

[DISABLE]
HP:
  db 89 8A D8 03 00 00

unregistersymbol(HP)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: "qagamex86.dll"+5BD7D

"qagamex86.dll"+5BD52: 8B 45 08                       -  mov eax,[ebp+08]
"qagamex86.dll"+5BD55: 8B 88 A8 02 00 00              -  mov ecx,[eax+000002A8]
"qagamex86.dll"+5BD5B: 8B 55 24                       -  mov edx,[ebp+24]
"qagamex86.dll"+5BD5E: 89 91 08 07 00 00              -  mov [ecx+00000708],edx
"qagamex86.dll"+5BD64: 83 7D F8 00                    -  cmp dword ptr [ebp-08],00
"qagamex86.dll"+5BD68: 0F 84 1B 02 00 00              -  je qagamex86.dll+5BF89
"qagamex86.dll"+5BD6E: 8B 45 08                       -  mov eax,[ebp+08]
"qagamex86.dll"+5BD71: 8B 88 D8 03 00 00              -  mov ecx,[eax+000003D8]
"qagamex86.dll"+5BD77: 2B 4D F8                       -  sub ecx,[ebp-08]
"qagamex86.dll"+5BD7A: 8B 55 08                       -  mov edx,[ebp+08]
// ---------- INJECTING HERE ----------
"qagamex86.dll"+5BD7D: 89 8A D8 03 00 00              -  mov [edx+000003D8],ecx
// ---------- DONE INJECTING  ----------
"qagamex86.dll"+5BD83: 8B 45 08                       -  mov eax,[ebp+08]
"qagamex86.dll"+5BD86: 83 B8 A8 02 00 00 00           -  cmp dword ptr [eax+000002A8],00
"qagamex86.dll"+5BD8D: 74 33                          -  je qagamex86.dll+5BDC2
"qagamex86.dll"+5BD8F: 83 7D 24 20                    -  cmp dword ptr [ebp+24],20
"qagamex86.dll"+5BD93: 74 2D                          -  je qagamex86.dll+5BDC2
"qagamex86.dll"+5BD95: 8B 45 10                       -  mov eax,[ebp+10]
"qagamex86.dll"+5BD98: 3B 45 0C                       -  cmp eax,[ebp+0C]
"qagamex86.dll"+5BD9B: 75 25                          -  jne qagamex86.dll+5BDC2
"qagamex86.dll"+5BD9D: 8B 45 08                       -  mov eax,[ebp+08]
"qagamex86.dll"+5BDA0: 83 B8 D8 03 00 00 D8           -  cmp dword ptr [eax+000003D8],-28
}

 

адрес HP - qagamex86.dll+579118.

Ну и табличка:

WolfSP.CT

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

В 02.07.2016в12:43, Goblin сказал:

Как ни старался не смог найти длину (дистанцию поражения) ножа в игре Return to Castle Wolfenstein, выручайте:unsure:

Если ещё тема актуальна, то записал видео-урок  по писку дистанции поражения но на другой игре - Fallout2 (Accuracy - 95 %; Distance defeat MAX and No reload)..

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

Garik66, огромное спасибо за видеоурок! Очень полезный.
А не подскажите по какому принципу искать дистанцию на которой я могу взаимодействовать с предметами? (Обыскать тело, нажать рычаг, открыть дверь, подобрать предмет)

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

20 часа назад, Goblin сказал:

Garik66, огромное спасибо за видеоурок! Очень полезный.

За это и от меня спасибо!!! :D

20 часа назад, Goblin сказал:

А не подскажите по какому принципу искать дистанцию на которой я могу взаимодействовать с предметами? (Обыскать тело, нажать рычаг, открыть дверь, подобрать предмет)

Я этого никогда не делал, но предположу, что в этом случае дистанция до нужного предмета будет расчётным значением, т.е. находиться в регистрах (стеке может быть) и просто поиском значения ты на него не выйдешь (нужно исследовать код). На код в данном случае выходить скорее всего придётся из координат героя, т.е. начинать нужно с поиска координат.

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

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

За это и от меня спасибо!!!

Я этого никогда не делал, но предположу, что в этом случае дистанция до нужного предмета будет расчётным значением, т.е. находиться в регистрах (стеке может быть) и просто поиском значения ты на него не выйдешь (нужно исследовать код). На код в данном случае выходить скорее всего придётся из координат героя, т.е. начинать нужно с поиска координат.

Еще раз большое спасибо!

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

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

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

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