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

[DeadPool] Фильтр свой/чужой


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

Доброго времени суток уважаемые,

Недавно ломал игру Deadpool, на здоровье, увы не получилось.

сделал фильтр, опять же проблема с nop'ами,

буду так же благодарен за инструкцию с nop'ами (видео или статья)

заранее спасибо!

Вот код:

 

Спойлер

{ Game   : DP.exe
  Version: 
  Date   : 2018-11-14
  Author : numat

  This script does blah blah blah
}

[ENABLE]

aobscanmodule(health,DP.exe,5C 8B 92 C4 01 00 00 50 51 8B CE F3 0F 11 04 24 FF D2 8B D8 8B 06) // should be unique
health+10:
  nop
return:
registersymbol(health)

[DISABLE]

health+10:
  db FF D2 8B

unregistersymbol(health)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: "DP.exe"+456BC6

"DP.exe"+456BA1: E9 BD 00 00 00        -  jmp DP.exe+456C63
"DP.exe"+456BA6: 8B 44 24 60           -  mov eax,[esp+60]
"DP.exe"+456BAA: 8B 16                 -  mov edx,[esi]
"DP.exe"+456BAC: F3 0F 10 46 68        -  movss xmm0,[esi+68]
"DP.exe"+456BB1: F3 0F 59 44 24 5C     -  mulss xmm0,[esp+5C]
"DP.exe"+456BB7: 8B 92 C4 01 00 00     -  mov edx,[edx+000001C4]
"DP.exe"+456BBD: 50                    -  push eax
"DP.exe"+456BBE: 51                    -  push ecx
"DP.exe"+456BBF: 8B CE                 -  mov ecx,esi
"DP.exe"+456BC1: F3 0F 11 04 24        -  movss [esp],xmm0
// ---------- INJECTING HERE ----------
"DP.exe"+456BC6: FF D2                 -  call edx
"DP.exe"+456BC8: 8B D8                 -  mov ebx,eax
"DP.exe"+456BCA: 8B 06                 -  mov eax,[esi]
// ---------- DONE INJECTING  ----------
"DP.exe"+456BCC: 8B 50 40              -  mov edx,[eax+40]
"DP.exe"+456BCF: 8B CE                 -  mov ecx,esi
"DP.exe"+456BD1: FF D2                 -  call edx
"DP.exe"+456BD3: 85 C0                 -  test eax,eax
"DP.exe"+456BD5: 75 4B                 -  jne DP.exe+456C22
"DP.exe"+456BD7: 80 7E 6C 0A           -  cmp byte ptr [esi+6C],0A
"DP.exe"+456BDB: 75 45                 -  jne DP.exe+456C22
"DP.exe"+456BDD: 39 86 68 01 00 00     -  cmp [esi+00000168],eax
"DP.exe"+456BE3: 74 3D                 -  je DP.exe+456C22
"DP.exe"+456BE5: A1 7C 53 ED 01        -  mov eax,[DP.exe+125537C]
}

Вот полный db

Спойлер


db FF D2 8B D8 8B 06

 

 

 

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

Твой скрипт у меня не заработал похоже разные версии или таблетки

У меня реп от механиков

Insructions.jpg

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

забыл вывалить скрипт на HP

Спойлер

[ENABLE]
aobscanmodule(INJECT,DP.exe+418909,f3xxxxxxxxxxxxxxf3xxxxxxxxxxxxxx83xxxxd9xxxxxxxxxxd9xxxxxxf3xxxxxxxxe8xxxxxxxx83xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx68)
alloc(newmem,$1000)
label(return)
registersymbol(INJECT)

newmem:
	mov [eax+00000350],(float)5000
    mov [eax+00000354],(float)5000
	movss xmm0,[eax+00000350]
	jmp return

INJECT:
	jmp newmem
	db 90 90 90

return:

[DISABLE]
INJECT:
movss xmm0,[eax+00000350]
unregistersymbol(INJECT)
dealloc(newmem)

 

 

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

11 часов назад, JIeXA сказал:

Твой скрипт у меня не заработал похоже разные версии или таблетки

У меня реп от механиков

Insructions.jpg

Тип издания: RePack

Таблетка: Вшита [Reloaded/Fixed]

спасибо за помощь!. шяс попробую.

Таблетка: Вшита [Reloaded/FIxed]

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

Как то так это будет выглядеть... таблицы нет - из старого исхода выписал. 

Спойлер

[ENABLE]
aobscanmodule(pointerplayerlive,DP.exe,D9 41 54 F3 0F 10 80 50 03 00 00 F3 0F 5C 80 * * * * * * * D9 5C 24 08)
aobscanmodule(baseplayerlive,DP.exe,F3 0F 11 86 40 03 00 00 0F * * 51 8D 4C 24 * F3)
alloc(hackmem,$1000)
label(pointer)
label(pointerplayerliveback)
label(pointerliveid)
label(exitbaseplayerlive)
label(baseplayerliveback)
label(base)
hackmem:
pointer:
mov [pointerliveid],eax
movss xmm0,[eax+350]
jmp pointerplayerliveback
pointerliveid:
dd 0
base:
push eax
lea eax,[esi-10]
cmp [pointerliveid],eax
pop eax
jne exitbaseplayerlive
movss xmm0,[esi+344]
exitbaseplayerlive:
movss [esi+340],xmm0
jmp baseplayerliveback
pointerplayerlive+03:
jmp pointer
db 90 90 90
pointerplayerliveback:
baseplayerlive:
jmp base
db 90 90 90
baseplayerliveback:
registersymbol(pointerplayerlive)
registersymbol(pointerliveid)
registersymbol(baseplayerlive)
[DISABLE]
pointerplayerlive+03:
db F3 0F 10 80 50 03 00 00
BasePlayerLive:
db F3 0F 11 86 40 03 00 00
unregistersymbol(pointerliveid)
unregistersymbol(pointerplayerlive)
unregistersymbol(baseplayerlive)
dealloc(hackmem)

 

 

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

6 часов назад, LIRW сказал:

Как то так это будет выглядеть... таблицы нет - из старого исхода выписал. 

  Показать контент


[ENABLE]
aobscanmodule(pointerplayerlive,DP.exe,D9 41 54 F3 0F 10 80 50 03 00 00 F3 0F 5C 80 * * * * * * * D9 5C 24 08)
aobscanmodule(baseplayerlive,DP.exe,F3 0F 11 86 40 03 00 00 0F * * 51 8D 4C 24 * F3)
alloc(hackmem,$1000)
label(pointer)
label(pointerplayerliveback)
label(pointerliveid)
label(exitbaseplayerlive)
label(baseplayerliveback)
label(base)
hackmem:
pointer:
mov [pointerliveid],eax
movss xmm0,[eax+350]
jmp pointerplayerliveback
pointerliveid:
dd 0
base:
push eax
lea eax,[esi-10]
cmp [pointerliveid],eax
pop eax
jne exitbaseplayerlive
movss xmm0,[esi+344]
exitbaseplayerlive:
movss [esi+340],xmm0
jmp baseplayerliveback
pointerplayerlive+03:
jmp pointer
db 90 90 90
pointerplayerliveback:
baseplayerlive:
jmp base
db 90 90 90
baseplayerliveback:
registersymbol(pointerplayerlive)
registersymbol(pointerliveid)
registersymbol(baseplayerlive)
[DISABLE]
pointerplayerlive+03:
db F3 0F 10 80 50 03 00 00
BasePlayerLive:
db F3 0F 11 86 40 03 00 00
unregistersymbol(pointerliveid)
unregistersymbol(pointerplayerlive)
unregistersymbol(baseplayerlive)
dealloc(hackmem)

 

 

Да огромное спасибо за код, но мне бы хотелось научится либо понять и сделать этот код сам, но не знаю что делать ведь официальный канал GameHacklab[Ru] заблокировали

а идти не куда.:(

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

18 минут назад, TimaS сказал:

но мне бы хотелось научится либо понять и сделать этот код сам

Так если сам... то тогда!  

Выбираешь инструкцию (которая работает только с тобой) а это у нас вот  эта ниже...  вот по этой строчке. 

D9 41 54 F3 0F 10 80 50 03 00 00 F3 0F 5C 80 * * * * * * * D9 5C 24 08
pointer:
mov [pointerliveid],eax  <----- вот сюда. Там как бы будет базовый адрес.
movss xmm0,[eax+350]  <---------- берем от сюда данные с eax и загружаем их выше в метку...
jmp pointerplayerliveback

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

Начинаем с фильтра.
push eax  <-----  берем eax 
lea eax,[esi-10]  <---- загружаем в него данные с регистра esi c иснтрукции записи и вычитаем 10h что бы выровнить их.
Зачем спросишь ? Так в поинтере у нас + 350.. а в инструкции записи 340
cmp [pointerliveid],eax  <--------- сравниваем их... 
pop eax
jne exitbaseplayerlive  <------- если не равно, то прыжок на ориганал.. если ровно то записываем макс hp с + 344
movss xmm0,[esi+344]  <----------------- максимальное здоровте персонажа.
exitbaseplayerlive:
movss [esi+340],xmm0 <----- инструкция записи hp персонажа. 

можно конечно было и  

push eax 
mov eax,esi 
sub eax,10 
cmp [xxxxxxxx],eax  
jne 
pop eax 

но тот вариант будет как то по лучше... :)  

Ps: 

Ну вроде бы и всё.. Тут и без видео можно разобраться, главное вникнуть и понять, как это всё работает.  Игра ведь есть ? пример есть. Осталось не много подумать и всё получится.  

А в обще, есть много способов как это всё реализовать и в другом виде.. Это просто один из многих. Вариантов реализации подобного - много!

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

спасибо!

хотя ничего не понял пойду посмотрю видео урок.                                                                                   Ps: Не надо меня цитировать полностью. Достаточно одного слова. 

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

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

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

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