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

[Uplay Latest] Tom Clancy's Splinter Cell(2002) - скрипт CE


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

Поскольку скриптов на эту игру нарыть сложно. Выкладываю здесь.

Написал два: на ХП и патроны.

(Расходники ломануть не получилось. Там какая то проверка на них стоит. Скрипт правильный, но вылетает.)

 

ХП не тратится - хоть с крыши прыгай.

Спойлер

{ Game   : SplinterCell.exe
  Version: 
  Date   : 2021-03-05
  Author : Templar

  This script does blah blah blah
}

[ENABLE]

aobscanmodule(Health1,Core.dll,8B 03 2B C2 5E) // should be unique
alloc(newmem,$1000)

label(code)
label(return)

newmem:

code:
  mov eax,[ebx]
  sub eax,edx
  pop esi

  cmp [ebx+B],#1282 ///Статичное значение для смещения
  jne return ///прыгаем если не равно
  add eax,edx ///возвращаем обратно
  ///mov eax,#200 ///Заносим максимальное значение - альтернатива

  jmp return

Health1:
  jmp newmem
return:
registersymbol(Health1)

[DISABLE]

Health1:
  db 8B 03 2B C2 5E

unregistersymbol(Health1)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: Core.dll+39328

Core.dll+3930C: 89 56 0C           - mov [esi+0C],edx
Core.dll+3930F: 80 38 42           - cmp byte ptr [eax],42
Core.dll+39312: 75 10              - jne Core.dll+39324
Core.dll+39314: 8B 4E 08           - mov ecx,[esi+08]
Core.dll+39317: 40                 - inc eax
Core.dll+39318: 6A 00              - push 00
Core.dll+3931A: 56                 - push esi
Core.dll+3931B: 89 46 0C           - mov [esi+0C],eax
Core.dll+3931E: FF 15 C8 5B 1E 10  - call dword ptr [Core.GNatives+108]
Core.dll+39324: 8B 54 24 10        - mov edx,[esp+10]
// ---------- INJECTING HERE ----------
Core.dll+39328: 8B 03              - mov eax,[ebx]
// ---------- DONE INJECTING  ----------
Core.dll+3932A: 2B C2              - sub eax,edx
Core.dll+3932C: 5E                 - pop esi
Core.dll+3932D: 89 03              - mov [ebx],eax
Core.dll+3932F: 8B D8              - mov ebx,eax
Core.dll+39331: 8B 44 24 10        - mov eax,[esp+10]
Core.dll+39335: 89 18              - mov [eax],ebx
Core.dll+39337: 5B                 - pop ebx
Core.dll+39338: 59                 - pop ecx
Core.dll+39339: C2 08 00           - ret 0008
Core.dll+3933C: 90                 - nop 
}

 

 

Патроны не тратятся на пистолет и автомат.

Спойлер

{ Game   : SplinterCell.exe
  Version: 
  Date   : 2021-03-05
  Author : Templar

  This script does blah blah blah
}

[ENABLE]

aobscanmodule(Ammo,Core.dll,8B 07 48 89 07) // should be unique
alloc(newmem,$1000)

label(code)
label(return)

newmem:

code:
  mov eax,[edi]
  dec eax ///отнимает при выстреле
  mov [edi],eax

  cmp [edi+4],#60 ///максимально значение патронов
  jne return ///прыгаем если не равно
  inc [edi] ///прибавляем назад
  ///mov [edi],#60 ///заносим значение в карман - альтернатива

  jmp return

Ammo:
  jmp newmem
return:
registersymbol(Ammo)

[DISABLE]

Ammo:
  db 8B 07 48 89 07

unregistersymbol(Ammo)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: Core.dll+397B9

Core.dll+3979F: 75 10              - jne Core.dll+397B1
Core.dll+397A1: 8B 4E 08           - mov ecx,[esi+08]
Core.dll+397A4: 40                 - inc eax
Core.dll+397A5: 6A 00              - push 00
Core.dll+397A7: 56                 - push esi
Core.dll+397A8: 89 46 0C           - mov [esi+0C],eax
Core.dll+397AB: FF 15 C8 5B 1E 10  - call dword ptr [Core.GNatives+108]
Core.dll+397B1: 8B 54 24 14        - mov edx,[esp+14]
Core.dll+397B5: 8B 0F              - mov ecx,[edi]
Core.dll+397B7: 89 0A              - mov [edx],ecx
// ---------- INJECTING HERE ----------
Core.dll+397B9: 8B 07              - mov eax,[edi]
// ---------- DONE INJECTING  ----------
Core.dll+397BB: 48                 - dec eax
Core.dll+397BC: 89 07              - mov [edi],eax
Core.dll+397BE: 5F                 - pop edi
Core.dll+397BF: 5E                 - pop esi
Core.dll+397C0: 59                 - pop ecx
Core.dll+397C1: C2 08 00           - ret 0008
Core.dll+397C4: 90                 - nop 
Core.dll+397C5: 90                 - nop 
Core.dll+397C6: 90                 - nop 
Core.dll+397C7: 90                 - nop 
}

 

 

P.S. Прошу перенести в архив скриптов CE. На эту игру читов мало в таком виде.

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

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

ХП не тратится

Если сделать так

Спойлер

code:
  mov eax,[ebx]
  cmp [ebx+B],#1282 ///Статичное значение для смещения
  jne @f ///прыгаем если не равно
  add eax,edx ///возвращаем обратно

@@:  
  sub eax,edx
  pop esi

  jmp return

 


или так

Спойлер

code:
  mov eax,[ebx]
  cmp [ebx+B],#1282 ///Статичное значение для смещения
  jne @f ///прыгаем если не равно
  pop esi

  jmp return

@@:  
  sub eax,edx
  pop esi

  jmp return

 

или так
 

Спойлер
Спойлер


code:
  mov eax,[ebx]
  cmp [ebx+B],#1282 ///Статичное значение для смещения
  jne @f ///прыгаем если не равно
  хоr edx,edx ///обнуляем урон

@@:  
  sub eax,edx
  pop esi

  jmp return

 

 

то это будет Gode

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

Нашел прицел. Там за него отвечает одна инструкция.

 

SuperAccuracy:

Спойлер

{ Game   : SplinterCell.exe
  Version: 
  Date   : 2021-03-12
  Author : Templar

  This script does blah blah blah
}

[ENABLE]

aobscanmodule(SuperAccuracy,Echelon.DLL,89 8E 74 04 00 00 E9) // should be unique
alloc(newmem,$1000)

label(code)
label(return)

newmem:

code:
  mov ecx,(float)0.0 ///делаем точный прицел
  mov [esi+00000474],ecx
  jmp return

SuperAccuracy:
  jmp newmem
  nop
return:
registersymbol(SuperAccuracy)

[DISABLE]

SuperAccuracy:
  db 89 8E 74 04 00 00

unregistersymbol(SuperAccuracy)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: Echelon.DLL+362B2

Echelon.DLL+36288: 8B 81 AC 02 00 00  - mov eax,[ecx+000002AC]
Echelon.DLL+3628E: C1 E8 02           - shr eax,02
Echelon.DLL+36291: 83 E0 01           - and eax,01
Echelon.DLL+36294: A3 14 F7 C0 07     - mov [Echelon.AEGameplayObject::PrivateStaticClass+4C4],eax
Echelon.DLL+36299: D9 86 74 04 00 00  - fld dword ptr [esi+00000474]
Echelon.DLL+3629F: D8 9E 70 04 00 00  - fcomp dword ptr [esi+00000470]
Echelon.DLL+362A5: DF E0              - fnstsw ax
Echelon.DLL+362A7: F6 C4 05           - test ah,05
Echelon.DLL+362AA: 7A 11              - jp Echelon.DLL+362BD
Echelon.DLL+362AC: 8B 8E 70 04 00 00  - mov ecx,[esi+00000470]
// ---------- INJECTING HERE ----------
Echelon.DLL+362B2: 89 8E 74 04 00 00  - mov [esi+00000474],ecx
// ---------- DONE INJECTING  ----------
Echelon.DLL+362B8: E9 88 00 00 00     - jmp Echelon.DLL+36345
Echelon.DLL+362BD: D9 86 74 04 00 00  - fld dword ptr [esi+00000474]
Echelon.DLL+362C3: D8 9E 70 04 00 00  - fcomp dword ptr [esi+00000470]
Echelon.DLL+362C9: DF E0              - fnstsw ax
Echelon.DLL+362CB: F6 C4 44           - test ah,44
Echelon.DLL+362CE: 7B 75              - jnp Echelon.DLL+36345
Echelon.DLL+362D0: D9 86 74 04 00 00  - fld dword ptr [esi+00000474]
Echelon.DLL+362D6: D8 64 24 1C        - fsub dword ptr [esp+1C]
Echelon.DLL+362DA: D9 86 64 04 00 00  - fld dword ptr [esi+00000464]
Echelon.DLL+362E0: D8 64 24 1C        - fsub dword ptr [esp+1C]
}

 

 

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

Отредактировал скрипты. Исходя из нового опыта.

 

Infinite Health:

Спойлер

{ Game   : SplinterCell.exe
  Version: 
  Date   : 2021-03-05
  Author : Templar

  This script does blah blah blah
}

[ENABLE]

aobscanmodule(InfHealth,Core.dll,8B 03 2B C2 5E) // should be unique
alloc(newmem,$1000)

label(code)
label(return)
label(orig_code)
newmem:

code:
  mov eax,[ebx]
  ///my code
  cmp [ebx+B],#1282 ///Статичное значение для смещения
  jne orig_code ///прыгаем если не равно
  xor edx,edx ///обнуляем урон
  ///my code
  orig_code:
  sub eax,edx
  pop esi
  jmp return

InfHealth:
  jmp newmem
return:
registersymbol(InfHealth)

[DISABLE]

InfHealth:
  db 8B 03 2B C2 5E

unregistersymbol(InfHealth)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: Core.dll+39328

Core.dll+3930C: 89 56 0C           - mov [esi+0C],edx
Core.dll+3930F: 80 38 42           - cmp byte ptr [eax],42
Core.dll+39312: 75 10              - jne Core.dll+39324
Core.dll+39314: 8B 4E 08           - mov ecx,[esi+08]
Core.dll+39317: 40                 - inc eax
Core.dll+39318: 6A 00              - push 00
Core.dll+3931A: 56                 - push esi
Core.dll+3931B: 89 46 0C           - mov [esi+0C],eax
Core.dll+3931E: FF 15 C8 5B 1E 10  - call dword ptr [Core.GNatives+108]
Core.dll+39324: 8B 54 24 10        - mov edx,[esp+10]
// ---------- INJECTING HERE ----------
Core.dll+39328: 8B 03              - mov eax,[ebx]
// ---------- DONE INJECTING  ----------
Core.dll+3932A: 2B C2              - sub eax,edx
Core.dll+3932C: 5E                 - pop esi
Core.dll+3932D: 89 03              - mov [ebx],eax
Core.dll+3932F: 8B D8              - mov ebx,eax
Core.dll+39331: 8B 44 24 10        - mov eax,[esp+10]
Core.dll+39335: 89 18              - mov [eax],ebx
Core.dll+39337: 5B                 - pop ebx
Core.dll+39338: 59                 - pop ecx
Core.dll+39339: C2 08 00           - ret 0008
Core.dll+3933C: 90                 - nop 
}

 

 

Infinite Ammo:

Спойлер

{ Game   : SplinterCell.exe
  Version: 
  Date   : 2021-03-05
  Author : Templar

  This script does blah blah blah
}

[ENABLE]

aobscanmodule(Ammo,Core.dll,8B 07 48 89 07) // should be unique
alloc(newmem,$1000)

label(code)
label(return)
label(next_code)

newmem:

code:
  mov eax,[edi]
  ///my code
  ///пистолет
  cmp [edi+C],#20 ///макс патронов в магазине
  je next_code ///прыгаем если пистолет
  ///автомат
  cmp [edi+C],#30 ///макс патронов в магазине
  je next_code ///прыгаем если автомат
  ///my code
  dec eax ///тут отнимает всё остальное
  next_code:
  mov [edi],eax
  jmp return

Ammo:
  jmp newmem
return:
registersymbol(Ammo)

[DISABLE]

Ammo:
  db 8B 07 48 89 07

unregistersymbol(Ammo)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: Core.dll+397B9

Core.dll+3979F: 75 10              - jne Core.dll+397B1
Core.dll+397A1: 8B 4E 08           - mov ecx,[esi+08]
Core.dll+397A4: 40                 - inc eax
Core.dll+397A5: 6A 00              - push 00
Core.dll+397A7: 56                 - push esi
Core.dll+397A8: 89 46 0C           - mov [esi+0C],eax
Core.dll+397AB: FF 15 C8 5B 1E 10  - call dword ptr [Core.GNatives+108]
Core.dll+397B1: 8B 54 24 14        - mov edx,[esp+14]
Core.dll+397B5: 8B 0F              - mov ecx,[edi]
Core.dll+397B7: 89 0A              - mov [edx],ecx
// ---------- INJECTING HERE ----------
Core.dll+397B9: 8B 07              - mov eax,[edi]
// ---------- DONE INJECTING  ----------
Core.dll+397BB: 48                 - dec eax
Core.dll+397BC: 89 07              - mov [edi],eax
Core.dll+397BE: 5F                 - pop edi
Core.dll+397BF: 5E                 - pop esi
Core.dll+397C0: 59                 - pop ecx
Core.dll+397C1: C2 08 00           - ret 0008
Core.dll+397C4: 90                 - nop 
Core.dll+397C5: 90                 - nop 
Core.dll+397C6: 90                 - nop 
Core.dll+397C7: 90                 - nop 
}

 

 

NoReload:

Спойлер

{ Game   : SplinterCell.exe
  Version: 
  Date   : 2021-03-05
  Author : Templar

  This script does blah blah blah
}

[ENABLE]

aobscanmodule(AmmoNoReload,Core.dll,8B 07 48 89 07) // should be unique
alloc(newmem,$1000)

label(code)
label(return)
label(part_2)

newmem:

code:
  mov eax,[edi]
  dec eax ///тут отнимает
  mov [edi],eax

  ///my code
  ///пистолет
  cmp [edi+C],#20 ///макс патронов в магазине
  jne part_2 ///прыгаем если не пистолет
  inc [edi] ///возвращаем в сумку
  inc [edi+8] ///возвращаем в обойму
  part_2:///автомат
  cmp [edi+C],#30 ///макс патронов в магазине
  jne return ///прыгаем если не автомат
  inc [edi] ///возвращаем в сумку
  inc [edi+8] ///возвращаем в обойму
  ///my code

  jmp return

AmmoNoReload:
  jmp newmem
return:
registersymbol(AmmoNoReload)

[DISABLE]

AmmoNoReload:
  db 8B 07 48 89 07

unregistersymbol(AmmoNoReload)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: Core.dll+397B9

Core.dll+3979F: 75 10              - jne Core.dll+397B1
Core.dll+397A1: 8B 4E 08           - mov ecx,[esi+08]
Core.dll+397A4: 40                 - inc eax
Core.dll+397A5: 6A 00              - push 00
Core.dll+397A7: 56                 - push esi
Core.dll+397A8: 89 46 0C           - mov [esi+0C],eax
Core.dll+397AB: FF 15 C8 5B 1E 10  - call dword ptr [Core.GNatives+108]
Core.dll+397B1: 8B 54 24 14        - mov edx,[esp+14]
Core.dll+397B5: 8B 0F              - mov ecx,[edi]
Core.dll+397B7: 89 0A              - mov [edx],ecx
// ---------- INJECTING HERE ----------
Core.dll+397B9: 8B 07              - mov eax,[edi]
// ---------- DONE INJECTING  ----------
Core.dll+397BB: 48                 - dec eax
Core.dll+397BC: 89 07              - mov [edi],eax
Core.dll+397BE: 5F                 - pop edi
Core.dll+397BF: 5E                 - pop esi
Core.dll+397C0: 59                 - pop ecx
Core.dll+397C1: C2 08 00           - ret 0008
Core.dll+397C4: 90                 - nop 
Core.dll+397C5: 90                 - nop 
Core.dll+397C6: 90                 - nop 
Core.dll+397C7: 90                 - nop 
}

 

 

SuperAccuracy:

Спойлер

{ Game   : SplinterCell.exe
  Version: 
  Date   : 2021-03-12
  Author : Templar

  This script does blah blah blah
}

[ENABLE]

aobscanmodule(SuperAccuracy,Echelon.DLL,89 8E 74 04 00 00 E9) // should be unique
alloc(newmem,$1000)

label(code)
label(return)

newmem:

code:
  xor ecx,ecx ///обнуляем прицел
  mov [esi+00000474],ecx
  jmp return

SuperAccuracy:
  jmp newmem
  nop
return:
registersymbol(SuperAccuracy)

[DISABLE]

SuperAccuracy:
  db 89 8E 74 04 00 00

unregistersymbol(SuperAccuracy)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: Echelon.DLL+362B2

Echelon.DLL+36288: 8B 81 AC 02 00 00  - mov eax,[ecx+000002AC]
Echelon.DLL+3628E: C1 E8 02           - shr eax,02
Echelon.DLL+36291: 83 E0 01           - and eax,01
Echelon.DLL+36294: A3 14 F7 C0 07     - mov [Echelon.AEGameplayObject::PrivateStaticClass+4C4],eax
Echelon.DLL+36299: D9 86 74 04 00 00  - fld dword ptr [esi+00000474]
Echelon.DLL+3629F: D8 9E 70 04 00 00  - fcomp dword ptr [esi+00000470]
Echelon.DLL+362A5: DF E0              - fnstsw ax
Echelon.DLL+362A7: F6 C4 05           - test ah,05
Echelon.DLL+362AA: 7A 11              - jp Echelon.DLL+362BD
Echelon.DLL+362AC: 8B 8E 70 04 00 00  - mov ecx,[esi+00000470]
// ---------- INJECTING HERE ----------
Echelon.DLL+362B2: 89 8E 74 04 00 00  - mov [esi+00000474],ecx
// ---------- DONE INJECTING  ----------
Echelon.DLL+362B8: E9 88 00 00 00     - jmp Echelon.DLL+36345
Echelon.DLL+362BD: D9 86 74 04 00 00  - fld dword ptr [esi+00000474]
Echelon.DLL+362C3: D8 9E 70 04 00 00  - fcomp dword ptr [esi+00000470]
Echelon.DLL+362C9: DF E0              - fnstsw ax
Echelon.DLL+362CB: F6 C4 44           - test ah,44
Echelon.DLL+362CE: 7B 75              - jnp Echelon.DLL+36345
Echelon.DLL+362D0: D9 86 74 04 00 00  - fld dword ptr [esi+00000474]
Echelon.DLL+362D6: D8 64 24 1C        - fsub dword ptr [esp+1C]
Echelon.DLL+362DA: D9 86 64 04 00 00  - fld dword ptr [esi+00000464]
Echelon.DLL+362E0: D8 64 24 1C        - fsub dword ptr [esp+1C]
}

 

 

P.S. Добавьте в шапку, пожалуйста.

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

  • 11 месяцев спустя...

Сделал ещё пару функций. Как SerVick сделал на Pandora Tomorrow.

 

Невидимость:

Спойлер
{ Game   : SplinterCell.exe
  Version: 
  Date   : 2022-02-20
  Author : Templar

  This script does blah blah blah

  Если подойти близко - то всё равно заметят.
}

[ENABLE]

aobscanmodule(Invisible_1,Echelon.DLL,D9 86 50 02 00 00 5E 5B) // should be unique
alloc(newmem,$1000)

label(code)
label(return)

newmem:
  cmp [esi+00000250+94],(float)500  ///сравниваем с статичным смещением
  jne code                          ///прыгаем если не равно
  mov [esi+00000250],(float)0       ///обнуляем видимость
code:
  fld dword ptr [esi+00000250]
  jmp return

Invisible_1:
  jmp newmem
  nop
return:
registersymbol(Invisible_1)

[DISABLE]

Invisible_1:
  db D9 86 50 02 00 00

unregistersymbol(Invisible_1)
dealloc(newmem)

{
Address of signature = Echelon.DLL + 0x00045A6C
"\xD9\x86\x00\x00\x00\x00\x5E\x5B", "xx????xx"
"D9 86 ? ? ? ? 5E 5B"
// ORIGINAL CODE - INJECTION POINT: Echelon.DLL+45A6C

Echelon.DLL+45A4E: 89 86 F4 06 00 00  - mov [esi+000006F4],eax
Echelon.DLL+45A54: 5E                 - pop esi
Echelon.DLL+45A55: 5B                 - pop ebx
Echelon.DLL+45A56: C2 08 00           - ret 0008
Echelon.DLL+45A59: D9 86 50 02 00 00  - fld dword ptr [esi+00000250]
Echelon.DLL+45A5F: 89 9E F4 06 00 00  - mov [esi+000006F4],ebx
Echelon.DLL+45A65: 5E                 - pop esi
Echelon.DLL+45A66: 5B                 - pop ebx
Echelon.DLL+45A67: C2 08 00           - ret 0008
Echelon.DLL+45A6A: DD D8              - fstp st(0)
// ---------- INJECTING HERE ----------
Echelon.DLL+45A6C: D9 86 50 02 00 00  - fld dword ptr [esi+00000250]
// ---------- DONE INJECTING  ----------
Echelon.DLL+45A72: 5E                 - pop esi
Echelon.DLL+45A73: 5B                 - pop ebx
Echelon.DLL+45A74: C2 08 00           - ret 0008
Echelon.DLL+45A77: 90                 - nop 
Echelon.DLL+45A78: 90                 - nop 
Echelon.DLL+45A79: 90                 - nop 
Echelon.DLL+45A7A: 90                 - nop 
Echelon.DLL+45A7B: 90                 - nop 
Echelon.DLL+45A7C: 90                 - nop 
Echelon.DLL+45A7D: 90                 - nop 
}

 

 

Скорость игрока:

Спойлер
{ Game   : SplinterCell.exe
  Version: 
  Date   : 2022-02-20
  Author : Templar

  This script does blah blah blah
  
  Можно выставить любое значение по желанию.
  Инструкция работает с одним адресом.
}

[ENABLE]

aobscanmodule(HeroSpeed,Echelon.DLL,D9 80 F4 02 00 00 DC) // should be unique
alloc(newmem,$1000)

label(code)
label(return)

newmem:
  mov [eax+000002F4],(float)3
code:
  fld dword ptr [eax+000002F4]
  jmp return

HeroSpeed:
  jmp newmem
  nop
return:
registersymbol(HeroSpeed)

[DISABLE]

HeroSpeed:
  db D9 80 F4 02 00 00

unregistersymbol(HeroSpeed)
dealloc(newmem)

{
Address of signature = Echelon.DLL + 0x00062D62
"\xD9\x80\x00\x00\x00\x00\xDC\x2D", "xx????xx"
"D9 80 ? ? ? ? DC 2D"
// ORIGINAL CODE - INJECTION POINT: Echelon.DLL+62D62

Echelon.DLL+62D2E: 52                    - push edx
Echelon.DLL+62D2F: FF 15 BC BB 2C 09     - call dword ptr [Echelon.DLL+CBBBC]
Echelon.DLL+62D35: 8B 86 54 04 00 00     - mov eax,[esi+00000454]
Echelon.DLL+62D3B: 83 C4 10              - add esp,10
Echelon.DLL+62D3E: D9 96 04 05 00 00     - fst dword ptr [esi+00000504]
Echelon.DLL+62D44: D9 98 F4 02 00 00     - fstp dword ptr [eax+000002F4]
Echelon.DLL+62D4A: 8B 8E 54 04 00 00     - mov ecx,[esi+00000454]
Echelon.DLL+62D50: 8B 96 04 05 00 00     - mov edx,[esi+00000504]
Echelon.DLL+62D56: 89 91 F8 02 00 00     - mov [ecx+000002F8],edx
Echelon.DLL+62D5C: 8B 86 54 04 00 00     - mov eax,[esi+00000454]
// ---------- INJECTING HERE ----------
Echelon.DLL+62D62: D9 80 F4 02 00 00     - fld dword ptr [eax+000002F4]
// ---------- DONE INJECTING  ----------
Echelon.DLL+62D68: DC 2D 58 A0 29 09     - fsubr qword ptr [Echelon.DLL+9A058]
Echelon.DLL+62D6E: F6 80 AC 02 00 00 04  - test byte ptr [eax+000002AC],04
Echelon.DLL+62D75: 74 1E                 - je Echelon.DLL+62D95
Echelon.DLL+62D77: D8 8E CC 05 00 00     - fmul dword ptr [esi+000005CC]
Echelon.DLL+62D7D: D9 86 C4 05 00 00     - fld dword ptr [esi+000005C4]
Echelon.DLL+62D83: D8 88 F4 02 00 00     - fmul dword ptr [eax+000002F4]
Echelon.DLL+62D89: 5E                    - pop esi
Echelon.DLL+62D8A: DE C1                 - faddp 
Echelon.DLL+62D8C: D9 98 D8 02 00 00     - fstp dword ptr [eax+000002D8]
Echelon.DLL+62D92: C2 08 00              - ret 0008
}

 

Изменено пользователем Tzeentch
Заменил цитату на спойлер.
  • Плюс 2
Ссылка на комментарий
Поделиться на другие сайты

Сделал бесконечный таймер. Нужно редко.

 

Спойлер
{ Game   : SplinterCell.exe
  Version: 
  Date   : 2022-02-23
  Author : Templar

  This script does blah blah blah
}

[ENABLE]

aobscanmodule(InfTimer,Core.dll,D9 17 D9 1A 5F 5E 59 C2 ? ? 90 90 90 90 90 90 90 90 CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC 8B 0D ? ? ? ? 33 D2 3B CA B8 ? ? ? ? 75 ? 57 B9 ? ? ? ? BF ? ? ? ? C7 05 F4 9C 1E 10 ? ? ? ? F3 ? 5F 8B 0D ? ? ? ? 88 15 ? ? ? ? 3B C8 74 ? A1 ? ? ? ? ? ? ? ? 1E 10 B9) // should be unique
alloc(newmem,$1000)

label(code)
label(return)

newmem:
  fst dword ptr [edi]
  ///my code
  cmp [edi-44],(float)100 ///сравниваем с статичным смещением
  jne code ///прыгаем если не равно
  mov [edi],(float)999
  ///my code
code:
  fstp dword ptr [edx]
  pop edi
  jmp return

InfTimer:
  jmp newmem
return:
registersymbol(InfTimer)

[DISABLE]

InfTimer:
  db D9 17 D9 1A 5F

unregistersymbol(InfTimer)
dealloc(newmem)

{
Address of signature = Core.dll + 0x0003B37E
"\xD9\x17\xD9\x1A\x5F\x5E\x59\xC2\x00\x00\x90\x90\x90\x90\x90\x90\x90\x90\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\x8B\x0D\x00\x00\x00\x00\x33\xD2\x3B\xCA\xB8\x00\x00\x00\x00\x75\x00\x57\xB9\x00\x00\x00\x00\xBF\x00\x00\x00\x00\xC7\x05\xF4\x9C\x1E\x10\x00\x00\x00\x00\xF3\x00\x5F\x8B\x0D\x00\x00\x00\x00\x88\x15\x00\x00\x00\x00\x3B\xC8\x74\x00\xA1\x00\x00\x00\x00\x00\x00\x00\x00\x1E\x10\xB9", "xxxxxxxx??xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx????xxxxx????x?xx????x????xxxxxx????x?xxx????xx????xxx?x????????xxx"
"D9 17 D9 1A 5F 5E 59 C2 ? ? 90 90 90 90 90 90 90 90 CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC 8B 0D ? ? ? ? 33 D2 3B CA B8 ? ? ? ? 75 ? 57 B9 ? ? ? ? BF ? ? ? ? C7 05 F4 9C 1E 10 ? ? ? ? F3 ? 5F 8B 0D ? ? ? ? 88 15 ? ? ? ? 3B C8 74 ? A1 ? ? ? ? ? ? ? ? 1E 10 B9"
// ORIGINAL CODE - INJECTION POINT: Core.dll+3B37E

Core.dll+3B362: 75 10              - jne Core.dll+3B374
Core.dll+3B364: 8B 4E 08           - mov ecx,[esi+08]
Core.dll+3B367: 40                 - inc eax
Core.dll+3B368: 6A 00              - push 00
Core.dll+3B36A: 56                 - push esi
Core.dll+3B36B: 89 46 0C           - mov [esi+0C],eax
Core.dll+3B36E: FF 15 C8 5B 1E 10  - call dword ptr [Core.GNatives+108]
Core.dll+3B374: D9 07              - fld dword ptr [edi]
Core.dll+3B376: D8 64 24 10        - fsub dword ptr [esp+10]
Core.dll+3B37A: 8B 54 24 14        - mov edx,[esp+14]
// ---------- INJECTING HERE ----------
Core.dll+3B37E: D9 17              - fst dword ptr [edi]
// ---------- DONE INJECTING  ----------
Core.dll+3B380: D9 1A              - fstp dword ptr [edx]
Core.dll+3B382: 5F                 - pop edi
Core.dll+3B383: 5E                 - pop esi
Core.dll+3B384: 59                 - pop ecx
Core.dll+3B385: C2 08 00           - ret 0008
Core.dll+3B388: 90                 - nop 
Core.dll+3B389: 90                 - nop 
Core.dll+3B38A: 90                 - nop 
Core.dll+3B38B: 90                 - nop 
Core.dll+3B38C: 90                 - nop 
}

 

 

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

Пожалуйста, войдите, чтобы комментировать

Вы сможете оставить комментарий после входа в



Войти
×
×
  • Создать...

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

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