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

[ Red Orchestra: Ostfront 41–45 ] No recoil


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

Всем хао!

 

Впервые пишу на форуме, так что тему можно легко переместить в правильном направлении.

Дело, собственно, вот в чем, есть в игре такая фича -  "свободное перемещение оружия", из-за которого затрудняется стрельба "от бедра". Нашёл с помощью CE адреса, отвечающее за это. Адреса эти динамические (меняются только две цифры в середине), указателей на них нет или я не могу их найти. В инструкции эти адреса являются значениями edx. Если присвоить в скрипте СЕ, например, [edx+10],#0, то позиция оружия замораживается, но при обращении в игре к какой-нить UI-функции, к примеру, "счет", игра крашится. Однако, если присвоить, в том же скрипте, конкретно этим адресам ноль, то все работает как надо, но грезы разбиваются об динамизм)) Ноп инструкции блокирует также и движение мыши, что не есть гут.

 

Помогите советом, как победить енту страсть. Может, кто встречался с подобным.

 

ЗЫ: Не пинайте сильно, я токмо учусь.

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

  • ReWanet изменил название на [ Red Orchestra: Ostfront 41–45 ] No recoil
2 часа назад, Gnosis сказал:

Помогите советом, как победить енту страсть. Может, кто встречался с подобным.

Игра же на UE или не что подобное ему.. Там на этой edx+10 висит с  сотенку-другую адресов. Конечно игра отпадет если затереть её, а засовывать туда 0 - это писать в кучу левых адресов 0 - по этому и игра вылетает. 

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

2 минуты назад, LIRW сказал:

Игра же на UE или не что подобное ему.. 

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

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

2 минуты назад, Gnosis сказал:

Вот в чем вопрос.

1. Фильтры

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

 

но лучше посидеть подольше может чо найдешь.

 

2. Цитируем правильно

 

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

9 минут назад, Gnosis сказал:

Я смотрел это видео. И многие другие. Так ничего не находится.

Ну значит плохо искал.. Смотри \ читай и пытайся.
Можешь для начала предоставить:
1. Скрин окна дизассемблера
2. Скрин структуры парочки адресов
    Адрес который тебе нужен помести в первую группу а парочку других во вторую. ( CTRL + G в окне структур ).

3. Скрин регистров адресов.

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

Не вставляются по феншую у меня скрины (возможно прав не хватает), только так:

 

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

2 часа назад, Gnosis сказал:

Не вставляются по феншую у меня скрины (возможно прав не хватает)

Эта игра платная? Если ли возможность где-то пиратку получить ( Ссылки на пиратский контент исключительно в ЛС )?
Мог бы позже глянуть если не усну :D Чертовы аниме.

 

 

P.S. за споры буду наказывать по этому если видишь что намечается спор то сразу забывай о нем. Наказываются обе стороны и не важно кто был зачинщиком.

 

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

Такс сделал [ No Recoil ] твой..
То как искал:

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

 

Там где зависло. Заморозил каждое значение отдельно и выявил что 2128 ( или какое там ) нужный адрес. При его заморозки дуло уводит быстрее. Поставил бряк и после открыл структуру адреса.

 


И что получилось:

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

 


1. Бесконечные патроны
2. Без отдачи

3. Быстрая стрельба
4. Отдаление рук

Таблица: RedOrchestra.CT

 

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

В 17.10.2017 в 22:54, ReWanet сказал:

4. Отдаление рук

Болшое и человеческое тебе за труд!  Завтра роспись у меня с одной девачкай, а после постараюсь во всем разобраться. Но уверен, что ты молодец! (как в репку тебе дать, не нашел, но плюсую духовно :))

 

ЗЫ: Глянул табличку, все хорошо, отдачи нет и рапид-файер, но основная задача все же не решена. движения ружжа так и осталось произвольным. Может, у тебя все норм было, просто разница клиентов?

 

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

5 часов назад, Gnosis сказал:

Завтра роспись у меня с одной девачкай, а после постараюсь во всем разобраться.

Это выглядит как похвалился :) Ну тогда поздравляем, а по репе Rewanet'_у давать не надо, моделировать то у нас кто тогда будет. :unsure:

 

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

9 часов назад, Gnosis сказал:

но основная задача все же не решена

(Отдача от оружия)Движение рук -> NoRecoil 
Разброс пуль -> NoSpread
Думаю NoSpread и сам уже сделаешь.

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

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

Думаю NoSpread и сам уже сделаешь.

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

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

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

Буду ждать с нетерпением. 

Демонстрация:

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

 

Код:

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

[ENABLE]
aobscan(HandMove,8bxxxxxxxxxxc1xxxxf7xx83xxxx89xxxx8dxxxxxxxxxxe8)
alloc(newmem,$1000,D3D9Drv.UD3D9RenderDevice::UD3D9RenderDevice+5114)
label(code)
label(return)

newmem:
code:
  mov [edx+0000057C],0
  mov [edx+00000580],0
  mov esi,[edx+00000590]
  jmp return

HandMove:
  jmp newmem
  nop
return:
registersymbol(HandMove)

[DISABLE]
HandMove:
  mov esi,[edx+00000590]

unregistersymbol(HandMove)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: D3D9Drv.UD3D9RenderDevice::UD3D9RenderDevice+5114

D3D9Drv.UD3D9RenderDevice::UD3D9RenderDevice+50EF: 5D                               - pop ebp
D3D9Drv.UD3D9RenderDevice::UD3D9RenderDevice+50F0: C2 1000                          - ret 0010
D3D9Drv.UD3D9RenderDevice::UD3D9RenderDevice+50F3: 8B 83 0CCA0200                   - mov eax,[ebx+0002CA0C]
D3D9Drv.UD3D9RenderDevice::UD3D9RenderDevice+50F9: 83 B8 DC010000 00                - cmp dword ptr [eax+000001DC],00
D3D9Drv.UD3D9RenderDevice::UD3D9RenderDevice+5100: 74 0C                            - je 08C69C1E
D3D9Drv.UD3D9RenderDevice::UD3D9RenderDevice+5102: 8B CB                            - mov ecx,ebx
D3D9Drv.UD3D9RenderDevice::UD3D9RenderDevice+5104: E8 F7BFFEFF                      - call 08C55C10
D3D9Drv.UD3D9RenderDevice::UD3D9RenderDevice+5109: E9 C4020000                      - jmp 08C69EE2
D3D9Drv.UD3D9RenderDevice::UD3D9RenderDevice+510E: 8B 4B 08                         - mov ecx,[ebx+08]
D3D9Drv.UD3D9RenderDevice::UD3D9RenderDevice+5111: 8B 51 34                         - mov edx,[ecx+34]
// ---------- INJECTING HERE -----------
D3D9Drv.UD3D9RenderDevice::UD3D9RenderDevice+5114: 8B B2 90050000                   - mov esi,[edx+00000590]
// ---------- DONE INJECTING  ----------
D3D9Drv.UD3D9RenderDevice::UD3D9RenderDevice+511A: C1 EE 1E                         - shr esi,1E
D3D9Drv.UD3D9RenderDevice::UD3D9RenderDevice+511D: F7 D6                            - not esi
D3D9Drv.UD3D9RenderDevice::UD3D9RenderDevice+511F: 83 E6 01                         - and esi,01
D3D9Drv.UD3D9RenderDevice::UD3D9RenderDevice+5122: 89 75 E8                         - mov [ebp-18],esi
D3D9Drv.UD3D9RenderDevice::UD3D9RenderDevice+5125: 8D 8D 50FFFFFF                   - lea ecx,[ebp-000000B0]
D3D9Drv.UD3D9RenderDevice::UD3D9RenderDevice+512B: E8 60BBFEFF                      - call 08C557A0
D3D9Drv.UD3D9RenderDevice::UD3D9RenderDevice+5130: 8B 07                            - mov eax,[edi]
D3D9Drv.UD3D9RenderDevice::UD3D9RenderDevice+5132: 8B CF                            - mov ecx,edi
D3D9Drv.UD3D9RenderDevice::UD3D9RenderDevice+5134: C6 45 FC 03                      - mov byte ptr [ebp-04],03
D3D9Drv.UD3D9RenderDevice::UD3D9RenderDevice+5138: FF 90 98000000                   - call dword ptr [eax+00000098]
}

 

 

 

Таблица: RedOrchestra.CT

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

Так я и делал, но после перезагрузки уровня, все слетает. Щас табличку попробую, но по коду - то же, что и я делал. 

ЗЫ: Да, код не работает(( Я ж говорил, что он динамический, так и есть. Ругается при смене левла. Ты так же, как и я, просто присвоил нули динамическим адресам.

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

20 минут назад, Gnosis сказал:

Так я и делал, но после перезагрузки уровня, все слетает.

Какие "левла"? У меня все работает.. Какие динамические адреса? Скинь свой скрипт..

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

5 минут назад, Gnosis сказал:

я не имею прав прикреплять файлы((

А залить на другой источник не? 
И да я спросил не только про скрипт. Ты мне скажи что за "смена левела" и "динамические адреса". У меня скрипт работает на ура на любой карте.

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

5 минут назад, ReWanet сказал:

У меня скрипт работает на ура

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

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

{ Game   : RedOrchestra.exe
  Version:
  Date   : 2017-10-15
  Author : hp

  This script does blah blah blah
}

[ENABLE]
//code from here to '[DISABLE]' will be used to enable the cheat

aobscanmodule(INJECT,Core.dll,03 C2 89 03 8B D8 8B 44 24 14) // should be unique
alloc(newmem,$1000)

label(code)
label(return)

newmem:
cmp [ebx],eax
je code
code:
mov [0DB60580],#0
mov [0DB6057C],#0

  mov [ebx],eax
  mov ebx,eax
  mov eax,[esp+14]

  jmp return

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

[DISABLE]
//code from here till the end of the code will be used to disable the cheat
INJECT+02:
  db 89 03 8B D8 8B 44 24 14

unregistersymbol(INJECT)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: "Core.dll"+26B6E

"Core.dll"+26B54: 75 10                          -  jne Core.dll+26B66
"Core.dll"+26B56: 8B 4E 08                       -  mov ecx,[esi+08]
"Core.dll"+26B59: 6A 00                          -  push 00
"Core.dll"+26B5B: 40                             -  inc eax
"Core.dll"+26B5C: 56                             -  push esi
"Core.dll"+26B5D: 89 46 0C                       -  mov [esi+0C],eax
"Core.dll"+26B60: FF 15 F8 68 1D 10              -  call dword ptr [Core.dll+D68F8]
"Core.dll"+26B66: 8B 03                          -  mov eax,[ebx]
"Core.dll"+26B68: 8B 54 24 10                    -  mov edx,[esp+10]
"Core.dll"+26B6C: 03 C2                          -  add eax,edx
// ---------- INJECTING HERE ----------
"Core.dll"+26B6E: 89 03                          -  mov [ebx],eax
"Core.dll"+26B70: 8B D8                          -  mov ebx,eax
"Core.dll"+26B72: 8B 44 24 14                    -  mov eax,[esp+14]
// ---------- DONE INJECTING  ----------
"Core.dll"+26B76: 5E                             -  pop esi
"Core.dll"+26B77: 89 18                          -  mov [eax],ebx
"Core.dll"+26B79: 5B                             -  pop ebx
"Core.dll"+26B7A: 59                             -  pop ecx
"Core.dll"+26B7B: C2 08 00                       -  ret 0008
"Core.dll"+26B7E: CC                             -  int 3
"Core.dll"+26B7F: CC                             -  int 3
"Core.dll"+26B80: 51                             -  push ecx
"Core.dll"+26B81: 53                             -  push ebx
"Core.dll"+26B82: 56                             -  push esi
}
 

 

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

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

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

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