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

[Медиа-Сервис 2000]Tom Clancy's Splinter Cell: Pandora Tomorrow(2004) - скрипт CE


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

Всем доброго дня. Ломал издание от [Медиа-Сервис 2000]. Его можно найти на торрентах. В Steam или Uplay получить не выйдет.

 

Выкладываю здесь поскольку в основной разделе нельзя.

 

Итак:

 

 

Соберу всё в одном. Ещё редактировал.(пора на проверку)

 

InfiniteHealth:

Спойлер

{ Game   : SplinterCell2.exe
  Version: 
  Date   : 2021-03-07
  Author : Templar

  This script does blah blah blah
}

[ENABLE]

aobscanmodule(InfiniteHealth,Core.dll,8B 03 8B 54 24 10 2B) // should be unique
alloc(newmem,$1000)

label(code)
label(return)

newmem:

code:
  mov eax,[ebx]
  mov edx,[esp+10] ///урон

  cmp [ebx+9C],(float)35 ///статичный адрес для смещения
  jne return ///прыгаем если не равно
  xor edx,edx ///обнуляем урон

  jmp return

InfiniteHealth:
  jmp newmem
  nop
return:
registersymbol(InfiniteHealth)

[DISABLE]

InfiniteHealth:
  db 8B 03 8B 54 24 10

unregistersymbol(InfiniteHealth)
dealloc(newmem)

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

Core.dll+32B88: 8B C2              - mov eax,edx
Core.dll+32B8A: 89 56 0C           - mov [esi+0C],edx
Core.dll+32B8D: 80 38 42           - cmp byte ptr [eax],42
Core.dll+32B90: 75 10              - jne Core.dll+32BA2
Core.dll+32B92: 8B 4E 08           - mov ecx,[esi+08]
Core.dll+32B95: 6A 00              - push 00
Core.dll+32B97: 40                 - inc eax
Core.dll+32B98: 56                 - push esi
Core.dll+32B99: 89 46 0C           - mov [esi+0C],eax
Core.dll+32B9C: FF 15 10 9B 1F 10  - call dword ptr [Core.GNatives+108]
// ---------- INJECTING HERE ----------
Core.dll+32BA2: 8B 03              - mov eax,[ebx]
// ---------- DONE INJECTING  ----------
Core.dll+32BA4: 8B 54 24 10        - mov edx,[esp+10]
Core.dll+32BA8: 2B C2              - sub eax,edx
Core.dll+32BAA: 89 03              - mov [ebx],eax
Core.dll+32BAC: 8B D8              - mov ebx,eax
Core.dll+32BAE: 8B 44 24 14        - mov eax,[esp+14]
Core.dll+32BB2: 5E                 - pop esi
Core.dll+32BB3: 89 18              - mov [eax],ebx
Core.dll+32BB5: 5B                 - pop ebx
Core.dll+32BB6: 59                 - pop ecx
Core.dll+32BB7: C2 08 00           - ret 0008
}

 

 

InfiniteAmmo:

Спойлер

{ Game   : SplinterCell2.exe
  Version: 
  Date   : 2021-03-06
  Author : Templar

  This script does blah blah blah
}

[ENABLE]

aobscanmodule(InfAmmo,Core.dll,89 0A FF 0F 5F 5E 59) // should be unique
alloc(newmem,$1000)

label(code)
label(return)
label(nodec)
newmem:

code:
  mov [edx],ecx
  ///my code
  ///Фильтр
  cmp [edi+C],#20 ///пистолет - сравниваем с макс. обоймой
  je nodec ///перепрыгиваем отнимание если пистолет
  cmp [edi+C],#30 ///автомат  - сравниваем с макс. обоймой
  je nodec ///перепрыгиваем отнимание если автомат
  ///my code
  dec [edi] ///тут отнимает всё остальное
nodec:
  pop edi
  jmp return

InfAmmo:
  jmp newmem
return:
registersymbol(InfAmmo)

[DISABLE]

InfAmmo:
  db 89 0A FF 0F 5F 5E 59

unregistersymbol(InfAmmo)
dealloc(newmem)

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

Core.dll+32D3B: 80 38 42           - cmp byte ptr [eax],42
Core.dll+32D3E: 75 10              - jne Core.dll+32D50
Core.dll+32D40: 8B 4E 08           - mov ecx,[esi+08]
Core.dll+32D43: 6A 00              - push 00
Core.dll+32D45: 40                 - inc eax
Core.dll+32D46: 56                 - push esi
Core.dll+32D47: 89 46 0C           - mov [esi+0C],eax
Core.dll+32D4A: FF 15 10 9B 1F 10  - call dword ptr [Core.GNatives+108]
Core.dll+32D50: 8B 0F              - mov ecx,[edi]
Core.dll+32D52: 8B 54 24 14        - mov edx,[esp+14]
// ---------- INJECTING HERE ----------
Core.dll+32D56: 89 0A              - mov [edx],ecx 89 0A FF 0F 5F 5E 59
// ---------- DONE INJECTING  ----------
Core.dll+32D58: FF 0F              - dec [edi]
Core.dll+32D5A: 5F                 - pop edi
Core.dll+32D5B: 5E                 - pop esi
Core.dll+32D5C: 59                 - pop ecx
Core.dll+32D5D: C2 08 00           - ret 0008
Core.dll+32D60: CC                 - int 3 
Core.dll+32D61: CC                 - int 3 
Core.dll+32D62: CC                 - int 3 
Core.dll+32D63: CC                 - int 3 
Core.dll+32D64: CC                 - int 3 
}

 

 

NoReload:

Спойлер

[ENABLE]

aobscanmodule(InfAmmoNoReload,Core.dll,89 0A FF 0F 5F 5E 59) // should be unique
alloc(newmem,$1000)

label(code)
label(return)
label(next_code)
label(wrcode)
label(nodec)

newmem:

code:
mov [edx],ecx

cmp [edi+C],#20 ///пистолет - сравниваем с статичным смещением
je wrcode ///прыгаем если пистолет
cmp [edi+C],#30 ///автомат  - сравниваем с статичным смещением
je wrcode ///прыгаем если автомат
jmp next_code ///прыгаем на оригинальный код

wrcode: ///my code
inc [edi+8]  ///NoReload
jmp nodec ///перепрыгиваем отнимание

next_code:
dec [edi] ///тут отнимает всё остальное
nodec:
pop edi

jmp return

InfAmmoNoReload:
  jmp newmem
return:
registersymbol(InfAmmoNoReload)

[DISABLE]

InfAmmoNoReload:
  db 89 0A FF 0F 5F 5E 59

unregistersymbol(InfAmmoNoReload)
dealloc(newmem)

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

Core.dll+32D3B: 80 38 42           - cmp byte ptr [eax],42
Core.dll+32D3E: 75 10              - jne Core.dll+32D50
Core.dll+32D40: 8B 4E 08           - mov ecx,[esi+08]
Core.dll+32D43: 6A 00              - push 00
Core.dll+32D45: 40                 - inc eax
Core.dll+32D46: 56                 - push esi
Core.dll+32D47: 89 46 0C           - mov [esi+0C],eax
Core.dll+32D4A: FF 15 10 9B 1F 10  - call dword ptr [Core.GNatives+108]
Core.dll+32D50: 8B 0F              - mov ecx,[edi]
Core.dll+32D52: 8B 54 24 14        - mov edx,[esp+14]
// ---------- INJECTING HERE ----------
Core.dll+32D56: 89 0A              - mov [edx],ecx 89 0A FF 0F 5F 5E 59
// ---------- DONE INJECTING  ----------
Core.dll+32D58: FF 0F              - dec [edi]
Core.dll+32D5A: 5F                 - pop edi
Core.dll+32D5B: 5E                 - pop esi
Core.dll+32D5C: 59                 - pop ecx
Core.dll+32D5D: C2 08 00           - ret 0008
Core.dll+32D60: CC                 - int 3
Core.dll+32D61: CC                 - int 3
Core.dll+32D62: CC                 - int 3
Core.dll+32D63: CC                 - int 3
Core.dll+32D64: CC                 - int 3
}

 

 

SuperAccuracy:

Спойлер

{ Game   : SplinterCell2.exe
  Version: 
  Date   : 2021-03-16
  Author : Templar

  This script does blah blah blah
}

[ENABLE]

aobscanmodule(SuperAccuracyV2,Echelon.DLL,8B 86 B4 05 00 00) // should be unique
alloc(newmem,$1000)

label(code)
label(return)

newmem:

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

SuperAccuracyV2:
  jmp newmem
  nop
return:
registersymbol(SuperAccuracyV2)

[DISABLE]

SuperAccuracyV2:
  db 8B 86 B4 05 00 00

unregistersymbol(SuperAccuracyV2)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: Echelon.AEWeapon::Tick+26F

Echelon.AEWeapon::Tick+24A: F7 47 60 00 00 02 00  - test [edi+60],00020000
Echelon.AEWeapon::Tick+251: 75 07                 - jne Echelon.AEWeapon::Tick+25A
Echelon.AEWeapon::Tick+253: BF 01 00 00 00        - mov edi,00000001
Echelon.AEWeapon::Tick+258: EB 02                 - jmp Echelon.AEWeapon::Tick+25C
Echelon.AEWeapon::Tick+25A: 33 FF                 - xor edi,edi
Echelon.AEWeapon::Tick+25C: D9 86 B8 05 00 00     - fld dword ptr [esi+000005B8]
Echelon.AEWeapon::Tick+262: D8 9E B4 05 00 00     - fcomp dword ptr [esi+000005B4]
Echelon.AEWeapon::Tick+268: DF E0                 - fnstsw ax
Echelon.AEWeapon::Tick+26A: F6 C4 05              - test ah,05
Echelon.AEWeapon::Tick+26D: 7A 0E                 - jp Echelon.AEWeapon::Tick+27D
// ---------- INJECTING HERE ----------
Echelon.AEWeapon::Tick+26F: 8B 86 B4 05 00 00     - mov eax,[esi+000005B4]
// ---------- DONE INJECTING  ----------
Echelon.AEWeapon::Tick+275: 89 86 B8 05 00 00     - mov [esi+000005B8],eax
Echelon.AEWeapon::Tick+27B: EB 7C                 - jmp Echelon.AEWeapon::Tick+2F9
Echelon.AEWeapon::Tick+27D: D9 86 B4 05 00 00     - fld dword ptr [esi+000005B4]
Echelon.AEWeapon::Tick+283: D9 86 B8 05 00 00     - fld dword ptr [esi+000005B8]
Echelon.AEWeapon::Tick+289: DA E9                 - fucompp 
Echelon.AEWeapon::Tick+28B: DF E0                 - fnstsw ax
Echelon.AEWeapon::Tick+28D: F6 C4 44              - test ah,44
Echelon.AEWeapon::Tick+290: 7B 67                 - jnp Echelon.AEWeapon::Tick+2F9
Echelon.AEWeapon::Tick+292: D9 86 B8 05 00 00     - fld dword ptr [esi+000005B8]
Echelon.AEWeapon::Tick+298: 68 0A D7 23 3C        - push 3C23D70A
}

 

 

 

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

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

Блин, вот почему на все версии "Splinter Cell" , что здесь выложили.., во всех стандартный набор функций...?! Для этой игры второстепенный набор. Наверное, только я заметил.., что -эти игры ("Splinter Cell" ) подразумевают режим "стелс", а значит основные функции то... : невидимость, бесшумность для таких игр. Конечно можно и коды разработчиков повесить на клавиши, но очень не удобно, что и перс при невидимости тоже становится невидим. Кстати действительно на эту игру только один трейнер на ПГ, тоже со стандартным набором функций.  А за сим думаю будет уместно добавить здесь (чтоб не создавать лишние темы) более нужные функции для этой игры. 

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

Спойлер
// фильтр не до конща протестирован, возможно заменить из примечания надо будет.В принципе и без фильтра вылета не было, но кто знает, ни один адрес в инструкции...
//Перса невидят енеми в любом положении.. стоит, или присел. А самое главное не исчезает.., как в чите от разработчиков...
// И ещё не разобрался, в миссии когда на балконе енем с прибором НВ, вообщем видит ГГ, не знай мож кто потом глянет, мне чёт ща эти игры не очень интересны.
{ Game   : splintercell2.exe
  Version: 
  Date   : 2022-02-16
  Author : SerVick
}

[ENABLE]
aobscanmodule(My_Invisible_,Echelon.DLL,D9 9E E4 02 00 00 83) // should be unique
alloc(newmem,$1000)

label(code)
label(return)

newmem://8C=2(4b); 3A8=500(fl); 34=86002 84002, 370=5346 4240 (hex)
  cmp dword ptr [esi+0000008C],#2
  jne code
  fld dword ptr [esi+000002E0]
code:
  fstp dword ptr [esi+000002E4]
  jmp return

My_Invisible_:
  jmp newmem
  db 90
return:
registersymbol(My_Invisible_)

[DISABLE]
My_Invisible_:
  db D9 9E E4 02 00 00

unregistersymbol(My_Invisible_)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: Echelon.AEPawn::GetVisibilityFactor+21C

Echelon.AEPawn::GetVisibilityFactor+1F7: 75 20                 - jne Echelon.AEPawn::GetVisibilityFactor+219
Echelon.AEPawn::GetVisibilityFactor+1F9: D8 0D F4 EA CD 04     - fmul dword ptr [Echelon.AESoundVolume::`vftable'+1FC]
Echelon.AEPawn::GetVisibilityFactor+1FF: 68 00 00 40 3F        - push 3F400000
Echelon.AEPawn::GetVisibilityFactor+204: 51                    - push ecx
Echelon.AEPawn::GetVisibilityFactor+205: 8B CE                 - mov ecx,esi
Echelon.AEPawn::GetVisibilityFactor+207: D9 1C 24              - fstp dword ptr [esp]
Echelon.AEPawn::GetVisibilityFactor+20A: FF 15 00 72 CD 04     - call dword ptr [Echelon.UEGoalTakeHostage::_Run+B610]
Echelon.AEPawn::GetVisibilityFactor+210: D9 55 0C              - fst dword ptr [ebp+0C]
Echelon.AEPawn::GetVisibilityFactor+213: D8 0D 0C B2 CD 04     - fmul dword ptr [Echelon.UETransmissionObj::`vftable'+18C]
Echelon.AEPawn::GetVisibilityFactor+219: 8B 46 64              - mov eax,[esi+64]
// ---------- INJECTING HERE ----------
Echelon.AEPawn::GetVisibilityFactor+21C: D9 9E E4 02 00 00     - fstp dword ptr [esi+000002E4]
// ---------- DONE INJECTING  ----------
Echelon.AEPawn::GetVisibilityFactor+222: 83 C8 20              - or eax,20
Echelon.AEPawn::GetVisibilityFactor+225: 89 46 64              - mov [esi+64],eax
Echelon.AEPawn::GetVisibilityFactor+228: F7 46 60 00 00 08 00  - test [esi+60],00080000
Echelon.AEPawn::GetVisibilityFactor+22F: 75 71                 - jne Echelon.AEPawn::GetVisibilityFactor+2A2
Echelon.AEPawn::GetVisibilityFactor+231: 8B 86 6C 03 00 00     - mov eax,[esi+0000036C]
Echelon.AEPawn::GetVisibilityFactor+237: 85 C0                 - test eax,eax
Echelon.AEPawn::GetVisibilityFactor+239: 74 67                 - je Echelon.AEPawn::GetVisibilityFactor+2A2
Echelon.AEPawn::GetVisibilityFactor+23B: 8B 90 C8 08 00 00     - mov edx,[eax+000008C8]
Echelon.AEPawn::GetVisibilityFactor+241: 8B 8E E4 02 00 00     - mov ecx,[esi+000002E4]
Echelon.AEPawn::GetVisibilityFactor+247: 89 8C 90 A0 08 00 00  - mov [eax+edx*4+000008A0],ecx
}

 

 

2) Бесшумность:

Спойлер
// Полностью бесшумный ГГ когда приседает ((включая хрустящие поверхности) не стал разбираться с детектом когда перс стоя перемещается и его слышат енеми т.к. компенсируется читом ниже "скорость ГГ" и можно всегда перемащаться присев, кому надо разбирайтесь, думаю гдет рядом в структуре))

{ Game   : splintercell2.exe
  Version: 
  Date   : 2022-02-16
  Author : SerVick
}

[ENABLE]
aobscanmodule(My_Silence,Echelon.DLL,89 82 BC 03 00 00) // should be unique
alloc(newmem,$1000)

label(code)
label(return)

newmem:
  xor eax,eax
code:
  mov [edx+000003BC],eax
  jmp return

My_Silence:
  jmp newmem
  db 90
return:
registersymbol(My_Silence)

[DISABLE]
My_Silence:
  db 89 82 BC 03 00 00

unregistersymbol(My_Silence)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: Echelon.AEPlayerController::execSetGroundSpeed+2A1

Echelon.AEPlayerController::execSetGroundSpeed+272: 89 45 08           - mov [ebp+08],eax
Echelon.AEPlayerController::execSetGroundSpeed+275: FF 15 78 72 D9 04  - call dword ptr [Echelon.UEGoalTakeHostage::_Run+B688]
Echelon.AEPlayerController::execSetGroundSpeed+27B: D9 5D 08           - fstp dword ptr [ebp+08]
Echelon.AEPlayerController::execSetGroundSpeed+27E: 8B 55 08           - mov edx,[ebp+08]
Echelon.AEPlayerController::execSetGroundSpeed+281: 8B 86 84 05 00 00  - mov eax,[esi+00000584]
Echelon.AEPlayerController::execSetGroundSpeed+287: 89 96 4C 06 00 00  - mov [esi+0000064C],edx
Echelon.AEPlayerController::execSetGroundSpeed+28D: 8B CA              - mov ecx,edx
Echelon.AEPlayerController::execSetGroundSpeed+28F: 89 88 B8 03 00 00  - mov [eax+000003B8],ecx
Echelon.AEPlayerController::execSetGroundSpeed+295: 8B 86 4C 06 00 00  - mov eax,[esi+0000064C]
Echelon.AEPlayerController::execSetGroundSpeed+29B: 8B 96 84 05 00 00  - mov edx,[esi+00000584]
// ---------- INJECTING HERE ----------
Echelon.AEPlayerController::execSetGroundSpeed+2A1: 89 82 BC 03 00 00  - mov [edx+000003BC],eax
// ---------- DONE INJECTING  ----------
Echelon.AEPlayerController::execSetGroundSpeed+2A7: 8B 86 84 05 00 00  - mov eax,[esi+00000584]
Echelon.AEPlayerController::execSetGroundSpeed+2AD: D9 80 B8 03 00 00  - fld dword ptr [eax+000003B8]
Echelon.AEPlayerController::execSetGroundSpeed+2B3: 8A 88 70 03 00 00  - mov cl,[eax+00000370]
Echelon.AEPlayerController::execSetGroundSpeed+2B9: DC 2D 98 A0 D9 04  - fsubr qword ptr [Echelon.UEReconDataStick::`vftable'+428]
Echelon.AEPlayerController::execSetGroundSpeed+2BF: 83 C4 10           - add esp,10
Echelon.AEPlayerController::execSetGroundSpeed+2C2: F6 C1 04           - test cl,04
Echelon.AEPlayerController::execSetGroundSpeed+2C5: 74 0E              - je Echelon.AEPlayerController::execSetGroundSpeed+2D5
Echelon.AEPlayerController::execSetGroundSpeed+2C7: D8 8E A8 07 00 00  - fmul dword ptr [esi+000007A8]
Echelon.AEPlayerController::execSetGroundSpeed+2CD: D9 86 A0 07 00 00  - fld dword ptr [esi+000007A0]
Echelon.AEPlayerController::execSetGroundSpeed+2D3: EB 0C              - jmp Echelon.AEPlayerController::execSetGroundSpeed+2E1
}

 

 

3) Скорость ГГ:

Спойлер
//Увеличенная скорость ГГ, положение стоя, присев не влияет. Значение можно выставить по желанию.., 3 думаю самое оптимальное...

{ Game   : splintercell2.exe
  Version: 
  Date   : 2022-02-16
  Author : SerVick
}

[ENABLE]
aobscanmodule(HeroSpeed,Echelon.DLL,89 88 B8 03 00 00) // should be unique
alloc(newmem,$1000)

label(code)
label(return)

newmem:
  mov ecx,(float)3
code:
  mov [eax+000003B8],ecx
  jmp return

HeroSpeed:
  jmp newmem
  db 90
return:
registersymbol(HeroSpeed)

[DISABLE]
HeroSpeed:
  db 89 88 B8 03 00 00

unregistersymbol(HeroSpeed)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: Echelon.AEPlayerController::execSetGroundSpeed+28F

Echelon.AEPlayerController::execSetGroundSpeed+26B: 68 00 00 80 40     - push 40800000
Echelon.AEPlayerController::execSetGroundSpeed+270: 50                 - push eax
Echelon.AEPlayerController::execSetGroundSpeed+271: 51                 - push ecx
Echelon.AEPlayerController::execSetGroundSpeed+272: 89 45 08           - mov [ebp+08],eax
Echelon.AEPlayerController::execSetGroundSpeed+275: FF 15 78 72 D9 04  - call dword ptr [Echelon.UEGoalTakeHostage::_Run+B688]
Echelon.AEPlayerController::execSetGroundSpeed+27B: D9 5D 08           - fstp dword ptr [ebp+08]
Echelon.AEPlayerController::execSetGroundSpeed+27E: 8B 55 08           - mov edx,[ebp+08]
Echelon.AEPlayerController::execSetGroundSpeed+281: 8B 86 84 05 00 00  - mov eax,[esi+00000584]
Echelon.AEPlayerController::execSetGroundSpeed+287: 89 96 4C 06 00 00  - mov [esi+0000064C],edx
Echelon.AEPlayerController::execSetGroundSpeed+28D: 8B CA              - mov ecx,edx
// ---------- INJECTING HERE ----------
Echelon.AEPlayerController::execSetGroundSpeed+28F: 89 88 B8 03 00 00  - mov [eax+000003B8],ecx
// ---------- DONE INJECTING  ----------
Echelon.AEPlayerController::execSetGroundSpeed+295: 8B 86 4C 06 00 00  - mov eax,[esi+0000064C]
Echelon.AEPlayerController::execSetGroundSpeed+29B: 8B 96 84 05 00 00  - mov edx,[esi+00000584]
Echelon.AEPlayerController::execSetGroundSpeed+2A1: 89 82 BC 03 00 00  - mov [edx+000003BC],eax
Echelon.AEPlayerController::execSetGroundSpeed+2A7: 8B 86 84 05 00 00  - mov eax,[esi+00000584]
Echelon.AEPlayerController::execSetGroundSpeed+2AD: D9 80 B8 03 00 00  - fld dword ptr [eax+000003B8]
Echelon.AEPlayerController::execSetGroundSpeed+2B3: 8A 88 70 03 00 00  - mov cl,[eax+00000370]
Echelon.AEPlayerController::execSetGroundSpeed+2B9: DC 2D 98 A0 D9 04  - fsubr qword ptr [Echelon.UEReconDataStick::`vftable'+428]
Echelon.AEPlayerController::execSetGroundSpeed+2BF: 83 C4 10           - add esp,10
Echelon.AEPlayerController::execSetGroundSpeed+2C2: F6 C1 04           - test cl,04
Echelon.AEPlayerController::execSetGroundSpeed+2C5: 74 0E              - je Echelon.AEPlayerController::execSetGroundSpeed+2D5
}

 

 

Какая досада, что ранее не умел подобное делать.., может в своё время всю игру тогда бы прошёл.:D

Ещё конечно можно найти счёт тревог (чтоб обнулялся), но в принципе и так вполне комфортно можно проходить..:)

И ещё.. при столкновении с энеми перс детектится. 

Делал на этой версии игры:

Спойлер

Год выпуска: 2004
Жанр: Third-Person Action, Stealth
Разработчик: Ubisoft Shanghai и Ubisoft Annecy
Издатель: Ubi Soft Entertainment
Тип издания: RePack
Язык интерфейса: Английский, Русский
Язык озвучки: Английский, Русский
Версия: 1.0

Игра из Splinter.Cell.Anthology.2003-2013 от R.G. Catalyst

Коды от Tzeentch  (InfiniteHealth, NoReload, SuperAccuracy)на этой версии работают нормально.

 

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

  • 2 недели спустя...

Бесконечный таймер. Миссия не будет провалена. Но бомба всё равно взрывается)

Нужен редко. Но функция может пригодиться.

 

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

  This script does blah blah blah

  Таймер фиксируется. Бомба всё равно взрывается,
  но миссия не проваливается. Забавно
}

[ENABLE]

aobscanmodule(InfTimer,Core.dll,D9 17 5F D9 1A 5E 59 C2 ? ? 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 51 56 8B 74 ? ? 8B 46) // should be unique
alloc(newmem,$1000)

label(code)
label(return)

newmem:
  fst dword ptr [edi]
  ///my code
  cmp [edi+10],#1  ///сравниваем с статичным смещением
  jne code ///прыгаем если не равно
  mov [edi],(float)540 ///9 минут
  ///my code
code:
  pop edi
  fstp dword ptr [edx]
  jmp return

InfTimer:
  jmp newmem
return:
registersymbol(InfTimer)

[DISABLE]

InfTimer:
  db D9 17 5F D9 1A

unregistersymbol(InfTimer)
dealloc(newmem)

{
Address of signature = Core.dll + 0x00033DDC
"\xD9\x17\x5F\xD9\x1A\x5E\x59\xC2\x00\x00\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\x51\x56\x8B\x74\x00\x00\x8B\x46", "xxxxxxxx??xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx??xx"
"D9 17 5F D9 1A 5E 59 C2 ? ? 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 51 56 8B 74 ? ? 8B 46"
// ORIGINAL CODE - INJECTION POINT: Core.dll+33DDC

Core.dll+33DC0: 75 10              - jne Core.dll+33DD2
Core.dll+33DC2: 8B 4E 08           - mov ecx,[esi+08]
Core.dll+33DC5: 6A 00              - push 00
Core.dll+33DC7: 40                 - inc eax
Core.dll+33DC8: 56                 - push esi
Core.dll+33DC9: 89 46 0C           - mov [esi+0C],eax
Core.dll+33DCC: FF 15 10 9B 1F 10  - call dword ptr [Core.GNatives+108]
Core.dll+33DD2: D9 07              - fld dword ptr [edi]
Core.dll+33DD4: 8B 54 24 14        - mov edx,[esp+14]
Core.dll+33DD8: D8 64 24 10        - fsub dword ptr [esp+10]
// ---------- INJECTING HERE ----------
Core.dll+33DDC: D9 17              - fst dword ptr [edi]
// ---------- DONE INJECTING  ----------
Core.dll+33DDE: 5F                 - pop edi
Core.dll+33DDF: D9 1A              - fstp dword ptr [edx]
Core.dll+33DE1: 5E                 - pop esi
Core.dll+33DE2: 59                 - pop ecx
Core.dll+33DE3: C2 08 00           - ret 0008
Core.dll+33DE6: CC                 - int 3 
Core.dll+33DE7: CC                 - int 3 
Core.dll+33DE8: CC                 - int 3 
Core.dll+33DE9: CC                 - int 3 
Core.dll+33DEA: CC                 - int 3 
}

 

 

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

ResetAlarmScore:

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

  This script does blah blah blah

  Данная функция не даёт подниматься счётчику тревоги.
  Только для миссии с лимитом в три тревоги.
  В миссиях с лимитом в одну тревогу - это бесполезно.

}

[ENABLE]

aobscanmodule(ResetAlarmScore,Core.dll,8B 08 8B 54 ? ? 89 0A C2 ? ? 33 D2 66 85 ? 76 ? 8B 44 ? ? 56 8B 74 ? ? 57 2B F0 8D 64 ? ? 8B 3C ? 89 38 0F B7 ? ? 42 83 C0 ? 3B D7 7C ? 5F 5E C2 ? ? 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 44 ? ? 85 C0 74 ? 8B 54) // should be unique
alloc(newmem,$1000)

label(code)
label(return)

newmem:
  cmp [eax+110],#256 ///сравниваем с статичным смещением
  jne code ///прыгаем если не равно
  mov [eax],#0 ///заморозка на нуле. значение выше 3х ломает игру
code:
  mov ecx,[eax]
  mov edx,[esp+04]
  jmp return

ResetAlarmScore:
  jmp newmem
  nop
return:
registersymbol(ResetAlarmScore)

[DISABLE]

ResetAlarmScore:
  db 8B 08 8B 54 24 04

unregistersymbol(ResetAlarmScore)
dealloc(newmem)

{
Address of signature = Core.dll + 0x0005E79E
"\x8B\x08\x8B\x54\x00\x00\x89\x0A\xC2\x00\x00\x33\xD2\x66\x85\x00\x76\x00\x8B\x44\x00\x00\x56\x8B\x74\x00\x00\x57\x2B\xF0\x8D\x64\x00\x00\x8B\x3C\x00\x89\x38\x0F\xB7\x00\x00\x42\x83\xC0\x00\x3B\xD7\x7C\x00\x5F\x5E\xC2\x00\x00\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\x44\x00\x00\x85\xC0\x74\x00\x8B\x54", "xxxx??xxx??xxxx?x?xx??xxx??xxxxx??xx?xxxx??xxx?xxx?xxx??xxxxxxxxxxxxxxxxxxxxxxxxxxxx??xxx?xx"
"8B 08 8B 54 ? ? 89 0A C2 ? ? 33 D2 66 85 ? 76 ? 8B 44 ? ? 56 8B 74 ? ? 57 2B F0 8D 64 ? ? 8B 3C ? 89 38 0F B7 ? ? 42 83 C0 ? 3B D7 7C ? 5F 5E C2 ? ? 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 44 ? ? 85 C0 74 ? 8B 54"
// ORIGINAL CODE - INJECTION POINT: Core.dll+5E79E

Core.dll+5E78A: CC           - int 3 
Core.dll+5E78B: CC           - int 3 
Core.dll+5E78C: CC           - int 3 
Core.dll+5E78D: CC           - int 3 
Core.dll+5E78E: CC           - int 3 
Core.dll+5E78F: CC           - int 3 
Core.dll+5E790: 66 8B 41 38  - mov ax,[ecx+38]
Core.dll+5E794: 66 3D 01 00  - cmp ax,0001
Core.dll+5E798: 75 0F        - jne Core.dll+5E7A9
Core.dll+5E79A: 8B 44 24 08  - mov eax,[esp+08]
// ---------- INJECTING HERE ----------
Core.dll+5E79E: 8B 08        - mov ecx,[eax]
// ---------- DONE INJECTING  ----------
Core.dll+5E7A0: 8B 54 24 04  - mov edx,[esp+04]
Core.dll+5E7A4: 89 0A        - mov [edx],ecx
Core.dll+5E7A6: C2 0C 00     - ret 000C
Core.dll+5E7A9: 33 D2        - xor edx,edx
Core.dll+5E7AB: 66 85 C0     - test ax,ax
Core.dll+5E7AE: 76 23        - jna Core.dll+5E7D3
Core.dll+5E7B0: 8B 44 24 04  - mov eax,[esp+04]
Core.dll+5E7B4: 56           - push esi
Core.dll+5E7B5: 8B 74 24 0C  - mov esi,[esp+0C]
Core.dll+5E7B9: 57           - push edi
}

 

 

Данная функция не даёт подниматься счётчику тревоги. Только для миссии с лимитом в три тревоги. В миссиях с лимитом в одну тревогу - это бесполезно.
 

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

Поправил фильтр для счётчика тревоги. С предыдущим скриптом могло вылетать.

Работает с лимитом в три тревоги. В миссиях с лимитом в одну тревогу - это бесполезно.

 

NoAlarmScore:

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

  This script does blah blah blah

  Данная функция не даёт подниматься счётчику тревоги.
  Только для миссии с лимитом в три тревоги.
  В миссиях с лимитом в одну тревогу - это бесполезно.
}

[ENABLE]

aobscanmodule(NoAlarmScore,Core.dll,8B 08 8B 54 ? ? 89 0A C2 ? ? 33 D2 66 85 ? 76 ? 8B 44 ? ? 56 8B 74 ? ? 57 2B F0 8D 64 ? ? 8B 3C ? 89 38 0F B7 ? ? 42 83 C0 ? 3B D7 7C ? 5F 5E C2 ? ? 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 44 ? ? 85 C0 74 ? 8B 54) // should be unique
alloc(newmem,$1000)

label(code)
label(return)

newmem:
  cmp [eax+C],#75 ///сравниваем с статичным смещением
  jne code ///прыгаем если не равно
  mov [eax],#0 ///обнуляем тревогу
code:
  mov ecx,[eax]
  mov edx,[esp+04]
  jmp return

NoAlarmScore:
  jmp newmem
  nop
return:
registersymbol(NoAlarmScore)

[DISABLE]

NoAlarmScore:
  db 8B 08 8B 54 24 04

unregistersymbol(NoAlarmScore)
dealloc(newmem)

{
Address of signature = Core.dll + 0x0005E79E
"\x8B\x08\x8B\x54\x00\x00\x89\x0A\xC2\x00\x00\x33\xD2\x66\x85\x00\x76\x00\x8B\x44\x00\x00\x56\x8B\x74\x00\x00\x57\x2B\xF0\x8D\x64\x00\x00\x8B\x3C\x00\x89\x38\x0F\xB7\x00\x00\x42\x83\xC0\x00\x3B\xD7\x7C\x00\x5F\x5E\xC2\x00\x00\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\x44\x00\x00\x85\xC0\x74\x00\x8B\x54", "xxxx??xxx??xxxx?x?xx??xxx??xxxxx??xx?xxxx??xxx?xxx?xxx??xxxxxxxxxxxxxxxxxxxxxxxxxxxx??xxx?xx"
"8B 08 8B 54 ? ? 89 0A C2 ? ? 33 D2 66 85 ? 76 ? 8B 44 ? ? 56 8B 74 ? ? 57 2B F0 8D 64 ? ? 8B 3C ? 89 38 0F B7 ? ? 42 83 C0 ? 3B D7 7C ? 5F 5E C2 ? ? 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 44 ? ? 85 C0 74 ? 8B 54"
// ORIGINAL CODE - INJECTION POINT: Core.dll+5E79E

Core.dll+5E78A: CC           - int 3 
Core.dll+5E78B: CC           - int 3 
Core.dll+5E78C: CC           - int 3 
Core.dll+5E78D: CC           - int 3 
Core.dll+5E78E: CC           - int 3 
Core.dll+5E78F: CC           - int 3 
Core.dll+5E790: 66 8B 41 38  - mov ax,[ecx+38]
Core.dll+5E794: 66 3D 01 00  - cmp ax,0001
Core.dll+5E798: 75 0F        - jne Core.dll+5E7A9
Core.dll+5E79A: 8B 44 24 08  - mov eax,[esp+08]
// ---------- INJECTING HERE ----------
Core.dll+5E79E: 8B 08        - mov ecx,[eax]
// ---------- DONE INJECTING  ----------
Core.dll+5E7A0: 8B 54 24 04  - mov edx,[esp+04]
Core.dll+5E7A4: 89 0A        - mov [edx],ecx
Core.dll+5E7A6: C2 0C 00     - ret 000C
Core.dll+5E7A9: 33 D2        - xor edx,edx
Core.dll+5E7AB: 66 85 C0     - test ax,ax
Core.dll+5E7AE: 76 23        - jna Core.dll+5E7D3
Core.dll+5E7B0: 8B 44 24 04  - mov eax,[esp+04]
Core.dll+5E7B4: 56           - push esi
Core.dll+5E7B5: 8B 74 24 0C  - mov esi,[esp+0C]
Core.dll+5E7B9: 57           - push edi
}

 

 

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

  • 2 недели спустя...
В 28.02.2022 в 7:16 PM, Tzeentch сказал:

ResetAlarmScore:

  Показать контент
{ Game   : SplinterCell2.exe
  Version: 
  Date   : 2022-02-27
  Author : Templar

  This script does blah blah blah

  Данная функция не даёт подниматься счётчику тревоги.
  Только для миссии с лимитом в три тревоги.
  В миссиях с лимитом в одну тревогу - это бесполезно.

}

[ENABLE]

aobscanmodule(ResetAlarmScore,Core.dll,8B 08 8B 54 ? ? 89 0A C2 ? ? 33 D2 66 85 ? 76 ? 8B 44 ? ? 56 8B 74 ? ? 57 2B F0 8D 64 ? ? 8B 3C ? 89 38 0F B7 ? ? 42 83 C0 ? 3B D7 7C ? 5F 5E C2 ? ? 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 44 ? ? 85 C0 74 ? 8B 54) // should be unique
alloc(newmem,$1000)

label(code)
label(return)

newmem:
  cmp [eax+110],#256 ///сравниваем с статичным смещением
  jne code ///прыгаем если не равно
  mov [eax],#0 ///заморозка на нуле. значение выше 3х ломает игру
code:
  mov ecx,[eax]
  mov edx,[esp+04]
  jmp return

ResetAlarmScore:
  jmp newmem
  nop
return:
registersymbol(ResetAlarmScore)

[DISABLE]

ResetAlarmScore:
  db 8B 08 8B 54 24 04

unregistersymbol(ResetAlarmScore)
dealloc(newmem)

{
Address of signature = Core.dll + 0x0005E79E
"\x8B\x08\x8B\x54\x00\x00\x89\x0A\xC2\x00\x00\x33\xD2\x66\x85\x00\x76\x00\x8B\x44\x00\x00\x56\x8B\x74\x00\x00\x57\x2B\xF0\x8D\x64\x00\x00\x8B\x3C\x00\x89\x38\x0F\xB7\x00\x00\x42\x83\xC0\x00\x3B\xD7\x7C\x00\x5F\x5E\xC2\x00\x00\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\x44\x00\x00\x85\xC0\x74\x00\x8B\x54", "xxxx??xxx??xxxx?x?xx??xxx??xxxxx??xx?xxxx??xxx?xxx?xxx??xxxxxxxxxxxxxxxxxxxxxxxxxxxx??xxx?xx"
"8B 08 8B 54 ? ? 89 0A C2 ? ? 33 D2 66 85 ? 76 ? 8B 44 ? ? 56 8B 74 ? ? 57 2B F0 8D 64 ? ? 8B 3C ? 89 38 0F B7 ? ? 42 83 C0 ? 3B D7 7C ? 5F 5E C2 ? ? 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 44 ? ? 85 C0 74 ? 8B 54"
// ORIGINAL CODE - INJECTION POINT: Core.dll+5E79E

Core.dll+5E78A: CC           - int 3 
Core.dll+5E78B: CC           - int 3 
Core.dll+5E78C: CC           - int 3 
Core.dll+5E78D: CC           - int 3 
Core.dll+5E78E: CC           - int 3 
Core.dll+5E78F: CC           - int 3 
Core.dll+5E790: 66 8B 41 38  - mov ax,[ecx+38]
Core.dll+5E794: 66 3D 01 00  - cmp ax,0001
Core.dll+5E798: 75 0F        - jne Core.dll+5E7A9
Core.dll+5E79A: 8B 44 24 08  - mov eax,[esp+08]
// ---------- INJECTING HERE ----------
Core.dll+5E79E: 8B 08        - mov ecx,[eax]
// ---------- DONE INJECTING  ----------
Core.dll+5E7A0: 8B 54 24 04  - mov edx,[esp+04]
Core.dll+5E7A4: 89 0A        - mov [edx],ecx
Core.dll+5E7A6: C2 0C 00     - ret 000C
Core.dll+5E7A9: 33 D2        - xor edx,edx
Core.dll+5E7AB: 66 85 C0     - test ax,ax
Core.dll+5E7AE: 76 23        - jna Core.dll+5E7D3
Core.dll+5E7B0: 8B 44 24 04  - mov eax,[esp+04]
Core.dll+5E7B4: 56           - push esi
Core.dll+5E7B5: 8B 74 24 0C  - mov esi,[esp+0C]
Core.dll+5E7B9: 57           - push edi
}

 

 

Только для миссии с лимитом в три тревоги. 
 

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

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

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

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



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

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

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