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

Делаем искусственный фильтр

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

Предлагаю видеоурок, Делаем искусственный фильтр  на примере игры FarCry

Спойлер

 

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

Поделиться сообщением


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

Подскажи, пожалуйста, какой смысл в таком подходе, если у тебя уже есть адрес структуры игрока, взятый из инструкции, работающей только с игроком? Запоминай адрес начала структуры игрока, и по нему фильтруй.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
5 часов назад, Xipho сказал:

пожалуйста, какой смысл

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

Изменено пользователем Pitronic

Поделиться сообщением


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

 

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

видеоурок

1. зачем брать edx и писать два лишних опкода, если eax. у тебя свободный - он перезаписывается?
2. прослушай как звучит код кэйвс ( а то режит слух)

Спойлер

image.thumb.png.184bd54bc4982fb247c82fc991d39556.png

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
25 минут назад, Garik66 сказал:

если eax. у тебя свободный

смысл в том что в этой игре в этой инструкции mov eax,[ebx+0C] действительно адрес пишет в eax, а если будет в другой игре допустим mov [ebx+0C],eax

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

Изменено пользователем Pitronic
Исправление грамм ошибок

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
31 минуту назад, Garik66 сказал:

прослушай как звучит код кэйвс

Я с английским не дружу прошу прощение, по символам произносил. Прошу прощения.

Изменено пользователем Pitronic

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
10 часов назад, Pitronic сказал:

. Вот ссылка Тема с таблицей

 

 

сразу в первом скрипте  Filtr нужно переставить инструкцию popad вверх

newmem_filtr_:
pushad
mov ebx,[ebx+0C]
mov [ebx+18],#123456789
mov [00010278],ebx
mov [ebx+18],#123456789

code_filtr_:
mov eax,[ebx+0C]
test eax,eax
popad
jmp return_filtr_

_filtr_:
jmp newmem_filtr_
return_filtr_:

инструкцию  popad надо убрать и  поставить ее выше  перед code_filtr_

 

еще не понятно зачем два раза делать
mov [ebx+18],#123456789
и зачем надо делать это
mov [00010278],ebx

 

пысы. дальше таблицу  не смотрел

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
1 минуту назад, Alex2411 сказал:

и зачем надо делать это

Это я для себя, в таблицу указатель добавить можно было.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
4 минуты назад, Alex2411 сказал:

popad вверх

иногда если popad не в коде пишешь игра вылетает у меня такое было.

Изменено пользователем Pitronic
Исправление грамм ошибок

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
9 минут назад, Alex2411 сказал:

mov [ebx+18],#123456789

где ты увидел 2 раза?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
31 минуту назад, Pitronic сказал:

где ты увидел 2 раза?

 

в твоем скрипте

newmem_filtr_:
pushad
mov ebx,[ebx+0C]
mov [ebx+18],#123456789 // раз
mov [00010278],ebx
mov [ebx+18],#123456789 // два

code_filtr_:

одно  лишнее

 

 

41 минуту назад, Pitronic сказал:

иногда если popad не в коде пишешь игра вылетает у меня такое было

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
9 часов назад, Alex2411 сказал:

одно  лишнее

Верно, спасибо, не доглядел. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
В 10.07.2021 в 20:16, Pitronic сказал:

в этой инструкции можно сделать только бессмертие игрока, смысл в том что работает в обе стороны, как за игрока, так и против врагов

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
38 минут назад, Xipho сказал:

когда у тебя уже есть адрес конкретной структуры игрока

Конкректного адреса там нету, в таблице есть адрес из  код кэйвса  [00010278] его я исподьзовал как поинтер. а если вы про что то другое, я не знаю как сделать эту переменную, и как на неё опиратся из других скриптов.

Изменено пользователем Pitronic

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
8 часов назад, Pitronic сказал:

я не знаю как сделать эту переменную, и как на неё опиратся из других скриптов

 

Поделиться сообщением


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

Руслан я всё понял. Твой вариант круче, если бы видел раньше, я бы не делал этот урок. Но раз уж он уже есть наверное мой вариант тоже имеет какой то смысл. Не закрывай тему, пусть другие скажут что думают, даже негативы прощу, только не надо писать что тема не нужная. Это я не тебе а тем кто комментировать будет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
57 минут назад, Pitronic сказал:

не надо писать что тема не нужная.

к сожалению - тема не нужная.
тебе Руслан изначально сказал. что у тебя есть уже структура и указатель на нее (я не стал об этом писать - думал сам посмотришь - поймешь)
т.е. примерно так нужно было сделать

Спойлер

// активирующий скрипт
{ Game   : FarCry.exe
  Version:
  Date   : 2021-06-07
  Author : Pitronic

  This script does blah blah blah
}

[ENABLE]
aobscanmodule(_filtr_,CryGame.dll,8B * * * * * 84 * * * * 80 * * * * * * 74 * 8B)
alloc(newmem_filtr_,$1000)
label(code_filtr_)
label(return_filtr_)
registersymbol(_filtr_)
label(Pointer)
registersymbol(Pointer)


newmem_filtr_:
  mov eax,[ebx+0C]
  mov [Pointer],eax

code_filtr_:
  test eax,eax
  jmp return_filtr_

Pointer:
  dd 0

_filtr_:
  jmp newmem_filtr_
return_filtr_:

[DISABLE]
_filtr_:
//  db 8B 43 0C 85 C0


unregistersymbol(Pointer)
unregistersymbol(_filtr_)
dealloc(newmem_filtr_)

{
// ORIGINAL CODE - INJECTION POINT: CryGame.dll+B8020

CryGame.dll+B800C: 83 66 0C 00           - and dword ptr [esi+0C],00
CryGame.dll+B8010: 5F                    - pop edi
CryGame.dll+B8011: 8B C6                 - mov eax,esi
CryGame.dll+B8013: 5E                    - pop esi
CryGame.dll+B8014: C2 08 00              - ret 0008
CryGame.dll+B8017: 55                    - push ebp
CryGame.dll+B8018: 8B EC                 - mov ebp,esp
CryGame.dll+B801A: 83 EC 0C              - sub esp,0C
CryGame.dll+B801D: 53                    - push ebx
CryGame.dll+B801E: 8B D9                 - mov ebx,ecx
// ---------- INJECTING HERE ----------
CryGame.dll+B8020: 8B 43 0C              - mov eax,[ebx+0C]
// ---------- DONE INJECTING  ----------
CryGame.dll+B8023: 85 C0                 - test eax,eax
CryGame.dll+B8025: 0F 84 8B 00 00 00     - je CryGame.dll+B80B6
CryGame.dll+B802B: 80 B8 2C 02 00 00 00  - cmp byte ptr [eax+0000022C],00
CryGame.dll+B8032: 74 73                 - je CryGame.dll+B80A7
CryGame.dll+B8034: 8B 4B 04              - mov ecx,[ebx+04]
CryGame.dll+B8037: 8B 01                 - mov eax,[ecx]
CryGame.dll+B8039: FF 90 08 01 00 00     - call dword ptr [eax+00000108]
CryGame.dll+B803F: 85 C0                 - test eax,eax
CryGame.dll+B8041: 74 64                 - je CryGame.dll+B80A7
ryGame.dll+B8043: 8B 4B 04              - mov ecx,[ebx+04]
}

 


и например твой ГодМод
 

Спойлер

{ Game   : FarCry.exe
  Version: 
  Date   : 2021-06-07
  Author : Pitronic

  This script does blah blah blah
}

[ENABLE]
aobscanmodule(_good_mode_,CryGame.dll,83 * * * * * * 0F 8E * * * * F6)
alloc(newmem_good_mode_,$1000)
label(code_good_mode_)
label(return_good_mode_)
label(_f_health_)
registersymbol(_good_mode_)
registersymbol(_f_health_)

newmem_good_mode_:
  cmp ebx,[Pointer]
  jne code_good_mode_
  cmp [_f_health_],#1
  jne code_good_mode_
  mov dword ptr [ebx+000000A0],#1000
  mov dword ptr [ebx+000000A4],#1000
  mov dword ptr [ebx+0000014C],(float)1000

code_good_mode_:
  cmp dword ptr [ebx+000000A0],00
  jmp return_good_mode_

_f_health_:
  dd 0

_good_mode_:
  jmp newmem_good_mode_
  db 90 90
return_good_mode_:

[DISABLE]

_good_mode_:
//  db 83 BB A0 00 00 00 00
cmp dword ptr [ebx+000000A0],00

unregistersymbol(_good_mode_)
unregistersymbol(_f_health_)
dealloc(newmem_good_mode_)

{
// ORIGINAL CODE - INJECTION POINT: CryGame.dll+A4F4D

CryGame.dll+A4F2D: C9                    - leave 
CryGame.dll+A4F2E: C2 08 00              - ret 0008
CryGame.dll+A4F31: B8 5D 80 0E 33        - mov eax,CryGame.dll+E805D
CryGame.dll+A4F36: E8 B5 E3 03 00        - call CryGame.dll+E32F0
CryGame.dll+A4F3B: 81 EC D8 01 00 00     - sub esp,000001D8
CryGame.dll+A4F41: 53                    - push ebx
CryGame.dll+A4F42: 8B D9                 - mov ebx,ecx
CryGame.dll+A4F44: E8 D7 A1 FF FF        - call CryGame.dll+9F120
CryGame.dll+A4F49: 84 C0                 - test al,al
CryGame.dll+A4F4B: 74 0D                 - je CryGame.dll+A4F5A
// ---------- INJECTING HERE ----------
CryGame.dll+A4F4D: 83 BB A0 00 00 00 00  - cmp dword ptr [ebx+000000A0],00
// ---------- DONE INJECTING  ----------
CryGame.dll+A4F54: 0F 8E 79 14 00 00     - jng CryGame.dll+A63D3
CryGame.dll+A4F5A: F6 05 58 E8 11 33 01  - test byte ptr [CryGame.dll+11E858],01
CryGame.dll+A4F61: 75 26                 - jne CryGame.dll+A4F89
CryGame.dll+A4F63: 83 0D 58 E8 11 33 01  - or dword ptr [CryGame.dll+11E858],01
CryGame.dll+A4F6A: 83 65 FC 00           - and dword ptr [ebp-04],00
CryGame.dll+A4F6E: 6A 0E                 - push 0E
CryGame.dll+A4F70: 68 7C B7 0F 33        - push CryGame.dll+FB77C
CryGame.dll+A4F75: E8 6E 97 01 00        - call CryGame.dll+BE6E8
CryGame.dll+A4F7A: 50                    - push eax
CryGame.dll+A4F7B: B9 F0 E4 11 33        - mov ecx,CryGame.dll+11E4F0
}

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
2 часа назад, Garik66 сказал:

. примерно так нужно было сделать

Не чего нового мне не сказали, я это не давно в видео Руслана в этой теме видел, ну и тем не менее спасибо.

Изменено пользователем Pitronic

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
4 минуты назад, Pitronic сказал:

Не чего нового мне не сказали,

а здесь ничего нового и нет :)))
давно в уроках и Руслана и моих это было рассмотрено.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
1 минуту назад, Garik66 сказал:

а здесь ничего нового и нет

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
4 часа назад, Pitronic сказал:

но я же не смотрел весь канал, не ваш не Руслана

А стоило бы посмотреть

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
6 минут назад, Xipho сказал:

А стоило бы посмотреть

Вы правы смотреть не только стоит но и нужно, но вы та сами то на понравившихся каналах, всё смотрите? Я чаще всего в играх а не в ютубе.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
1 час назад, Pitronic сказал:

но вы та сами то на понравившихся каналах, всё смотрите?

Разумеется. Но это уже оффтоп, и к теме не относится. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
2 минуты назад, Xipho сказал:

к теме не относится

Усё завязал.

Изменено пользователем Pitronic

Поделиться сообщением


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

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Предпросмотр

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

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

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