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

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

Всем привет игра DYING LIGHT, в игре есть полоска выносливости,когда кого ни будь колотишь,она уменьшается до 0, когда полоска восстанавливается, то показывает Float 1,5, можно сделать что бы выносливость, восстанавливалась не с нуля, когда уменьшится до нуля, а сразу с Float 1 то есть с од нерки 1.

Вот скрипт 

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

[ENABLE]

aobscanmodule(Endurance,gamedll_x64_rwdi.dll,F3 0F 10 41 10 0F 2F C6)
alloc(newmem,2048,"Endurance)
label(returnhere)
label(originalcode)

newmem:
mov [rcx+10],(float)1,5
originalcode:
movss xmm0,[rcx+10]
jmp returnhere

Endurance:
jmp newmem
returnhere:
registersymbol(Endurance)

[DISABLE]
Endurance:
db F3 0F 10 41 10

unregistersymbol(Endurance)
dealloc(newmem)

 

 

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

Сегодня как раз делал выносливость. У меня полоска 1.75 максимальное значение может из-за 250 легендарного уровня. Могу сразу таблицу кинуть, если нужно.
 

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

{ Game   : DyingLightGame.exe
  Version: 
  Date   : 2016-06-01
  Author : partoftheworlD

  This script does blah blah blah
}

[ENABLE]

aobscanmodule(stamina,gamedll_x64_rwdi.dll,F3 0F 11 7B 10 0F 28 7C 24 60) // should be unique
alloc(newmem,$1000,"gamedll_x64_rwdi.dll"+C02AC7)

label(code)
label(return)

newmem:
  mov [rbx+10],(float)2.0
  jmp return
code:
  movss [rbx+10],xmm7
  jmp return

stamina:
  jmp newmem
return:
registersymbol(stamina)

[DISABLE]

stamina:
  db F3 0F 11 7B 10

unregistersymbol(stamina)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: "gamedll_x64_rwdi.dll"+C02AC7

"gamedll_x64_rwdi.dll"+C02AA4: F3 0F 10 4B 10        -  movss xmm1,[rbx+10]
"gamedll_x64_rwdi.dll"+C02AA9: F3 41 0F 5C C8        -  subss xmm1,xmm8
"gamedll_x64_rwdi.dll"+C02AAE: 0F 2F CF              -  comiss xmm1,xmm7
"gamedll_x64_rwdi.dll"+C02AB1: 72 0D                 -  jb gamedll_x64_rwdi.dll+C02AC0
"gamedll_x64_rwdi.dll"+C02AB3: 0F 2F C8              -  comiss xmm1,xmm0
"gamedll_x64_rwdi.dll"+C02AB6: 76 05                 -  jna gamedll_x64_rwdi.dll+C02ABD
"gamedll_x64_rwdi.dll"+C02AB8: 0F 28 F8              -  movaps xmm7,xmm0
"gamedll_x64_rwdi.dll"+C02ABB: EB 03                 -  jmp gamedll_x64_rwdi.dll+C02AC0
"gamedll_x64_rwdi.dll"+C02ABD: 0F 28 F9              -  movaps xmm7,xmm1
"gamedll_x64_rwdi.dll"+C02AC0: 0F 2F 3D 79 53 7D 00  -  comiss xmm7,[gamedll_x64_rwdi.dll+13D7E40]
// ---------- INJECTING HERE ----------
"gamedll_x64_rwdi.dll"+C02AC7: F3 0F 11 7B 10        -  movss [rbx+10],xmm7
// ---------- DONE INJECTING  ----------
"gamedll_x64_rwdi.dll"+C02ACC: 0F 28 7C 24 60        -  movaps xmm7,[rsp+60]
"gamedll_x64_rwdi.dll"+C02AD1: 73 07                 -  jae gamedll_x64_rwdi.dll+C02ADA
"gamedll_x64_rwdi.dll"+C02AD3: C7 43 10 00 00 00 00  -  mov [rbx+10],00000000
"gamedll_x64_rwdi.dll"+C02ADA: 44 0F 2E 4B 10        -  ucomiss xmm9,[rbx+10]
"gamedll_x64_rwdi.dll"+C02ADF: 0F 85 36 01 00 00     -  jne gamedll_x64_rwdi.dll+C02C1B
"gamedll_x64_rwdi.dll"+C02AE5: 48 8B 03              -  mov rax,[rbx]
"gamedll_x64_rwdi.dll"+C02AE8: 48 8B CB              -  mov rcx,rbx
"gamedll_x64_rwdi.dll"+C02AEB: FF 50 20              -  call qword ptr [rax+20]
"gamedll_x64_rwdi.dll"+C02AEE: 48 8B F8              -  mov rdi,rax
"gamedll_x64_rwdi.dll"+C02AF1: 80 78 50 00           -  cmp byte ptr [rax+50],00
}
Изменено пользователем partoftheworlD
Ссылка на комментарий
Поделиться на другие сайты

Спасибо тебе,partoftheworLD но таблица мене не нужна, мене именно по моей теме надо, чтобы мене помогли. 

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

53 минуты назад, Baracuda сказал:

можно сделать что бы выносливость, восстанавливалась не с нуля, когда уменьшится до нуля, а сразу с Float 1 то есть с од нерки 1.

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

[ENABLE]
aobscanmodule(Endurance,gamedll_x64_rwdi.dll,F3 0F 10 41 10 0F 2F C6)
alloc(newmem,2048,"Endurance)
label(returnhere)
label(originalcode)
registersymbol(Endurance)

newmem:
cmp [rcx+10],(float)0
jne originalcode
mov [rcx+10],(float)1

originalcode:
movss xmm0,[rcx+10]
jmp returnhere

Endurance:
jmp newmem
returnhere:

[DISABLE]
Endurance:
db F3 0F 10 41 10

unregistersymbol(Endurance)
dealloc(newmem)

 

Если я тебя правильно понял, попробуй так.

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

Легче тогда поставить проверку и когда значение будет меньше или равно 1 - тогда прыгнуть на свой код, а то есть 1.5 В итоге оно будет восстанавливаться всегда как только значение достигнет 1_ или будет ниже его.  Хотя вопрос какой то странный :rolleyes: не одному Игорю он не понятен конкретно.  

Хотя правильно - Игорь вроде бы как надо сделал. Но это если он подумал так же как я сейчас спустя 5 минут :) Но тогда не допишет до максимального значения. Фиг его знает в общем конкретная цель какая. 

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

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

Игорь вроде бы как надо сделал

По видимому я не правильно понял Baracuda.

Baracuda, напиши более подробно и понятно. До скольки должна упасть выносливость и со скольки должна подняться. (в твоём описании не очень понятно).

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

Все вроде бы хорошо РАБОТАЕТ GARIK66, и тут для меня новая проблема, если полоску выносливости использовать не до нуля 0, а до 0,00963452, то с 1, не восстанавливает  а восстанавливает именно с 0,00963452, а как мене сделать что бы полоска выносливости восстанавливалась с любого числа. 

я надеюсь понятно написал

СЕЙЧАС В ДАННЫЙ МОМЕНТ ПОЛОСКА ВОССТАНАВЛИВАЕТСЯ С 1, ЕСЛИ ВЫНОСЛИВОСТЬ ДОВЕСТИ ДО 0, ЕСЛИ ВЫНОСЛИВОСТЬ НЕ ДОВОДИТЬ ДО НУЛЯ, ТО ПОЛОСКА НЕ ВОССТАНАВЛИВАЕТСЯ С 1 А КАК СДЕЛАТЬ ЧТО БЫ НЕ ТОЛЬКО С НУЛЯ ВОССТАНАВЛИВАЛАСЬ А С ЛЮБОГО ЧИСЛА.

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

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

а как мене сделать что бы полоска выносливости восстанавливалась с любого числа. 

Это уже сложнее.

Это можно либо сделать принудительно (по хоткею), либо отслеживать, когда Герой прекратил тратиь выносливость (что сложнее).

 

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

Ну Garik66 ещё можно сделать вот так, но это вариант подходит только если полоска выносливости 1 до 100, а не так как 1-0,009347464

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

[ENABLE]
aobscanmodule(Endurance,gamedll_x64_rwdi.dll,F3 0F 10 41 10 0F 2F C6)
alloc(newmem,2048,"Endurance)
label(returnhere)
label(originalcode)
registersymbol(Endurance)

newmem:
cmp [rcx+10],(float)0
jne @F
mov [rcx+10],(float)1

@@:
cmp [rcx+10],(float)2
jne @F
mov [rcx+10],(float)1

@@:
cmp [rcx+10],(float)3
jne @F
mov [rcx+10],(float)1

@@:
cmp [rcx+10],(float)4 и так до максимума но это если полоска 1 до 100 а если нет
jne @F
mov [rcx+10],(float)1

originalcode:
movss xmm0,[rcx+10]
jmp returnhere

Endurance:
jmp newmem
returnhere:

[DISABLE]
Endurance:
db F3 0F 10 41 10

unregistersymbol(Endurance)
dealloc(newmem)

 

 

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

16 минуту назад, Baracuda сказал:

а как мене сделать что бы полоска выносливости восстанавливалась с любого числа. 

Сейчас сделаю нормально, кажись придумал.

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

52 минуты назад, Baracuda сказал:

а как мене сделать что бы полоска выносливости восстанавливалась с любого числа. 

Baracuda, вроде написал, скрипт по идее должен работать так, пока предыдущее значение выносливости больше текущего, т.е. выносливость тратиться, то ничего не будет происходить, как только выносливость начнёт расти, то выносливость сразу станет максимальной, т.е. 1,5 во float.

Попробуй скрипт, отпишись о результатах.

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

[ENABLE]
aobscanmodule(Endurance,gamedll_x64_rwdi.dll,F3 0F 10 41 10 0F 2F C6)
alloc(newmem,2048,"Endurance)
label(returnhere)
label(originalcode)
label(TEndur)  // предыдущее значение выносливости, с ним и будем сравнивать.
registersymbol(Endurance)

newmem:
push rax
mov eax,[rcx+10]
cmp [TEndur],eax
pop rax
ja @f
mov [rcx+10],(float)1.5
mov [TEndur],(float)1.5
jmp originalcode

@@:
mov [TEndur],eax

originalcode:
movss xmm0,[rcx+10]
jmp returnhere

TEndur:
dd (float)1,5

Endurance:
jmp newmem
returnhere:

[DISABLE]
Endurance:
db F3 0F 10 41 10

unregistersymbol(Endurance)
dealloc(newmem)

 

 

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

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

 

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

 

Поставь . вместо , 

Забыл.

Поправил скрипт в предыдущем сообщении.

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

Он не работает так как ты написал,Garik66 он работает как обычный скрипт на заморозку.

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

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

Он не работает так как ты написал,Garik66 он работает как обычный скрипт на заморозку.

По-видимому в этой инструкции ещё не начинается изменение выносливости, т.к. инструкция на чтение.

Дай АА-скрипт на запись.

Но доделать смогу только вечером.

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

Игру у меня нет, испытывал на другой игре, та у меня слетела уже 3 раз, я тебе дам другую инструкцию другой игры,

вот инструкция на Чтения. Эти инструкции тоже выносливость, только Float от 0 до 100.

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

[ENABLE]

alloc(newmem,2048,"GTA5.exe"+68710D)//////0F 2F 83 00 0C 00 00 73
label(returnhere)
label(originalcode)

newmem:
mov [rbx+00000C00],(float)100

originalcode:
comiss xmm0,[rbx+00000C00]
jmp returnhere

"GTA5.exe"+68710D:
jmp newmem
nop
nop
returnhere:

[DISABLE]
dealloc(newmem)
"GTA5.exe"+68710D:
comiss xmm0,[rbx+00000C00]

/////db 0F 2F 83 00 0C 00 00

{
// ORIGINAL CODE - INJECTION POINT: "GTA5.exe"+68710D

"GTA5.exe"+6870DC: E8 57 6E FC FF           -  call GTA5.exe+64DF38
"GTA5.exe"+6870E1: 83 3D 84 6B 76 01 02     -  cmp dword ptr [GTA5.exe+1DEDC6C],02
"GTA5.exe"+6870E8: 0F 84 C4 00 00 00        -  je GTA5.exe+6871B2
"GTA5.exe"+6870EE: 48 8D 8B 00 02 00 00     -  lea rcx,[rbx+00000200]
"GTA5.exe"+6870F5: E8 BE 00 00 00           -  call GTA5.exe+6871B8
"GTA5.exe"+6870FA: 48 8B CB                 -  mov rcx,rbx
"GTA5.exe"+6870FD: E8 46 E1 CB FF           -  call GTA5.exe+345248
"GTA5.exe"+687102: 48 8B CB                 -  mov rcx,rbx
"GTA5.exe"+687105: E8 46 9C 00 00           -  call GTA5.exe+690D50
"GTA5.exe"+68710A: 0F 57 C0                 -  xorps xmm0,xmm0
// ---------- INJECTING HERE ----------
"GTA5.exe"+68710D: 0F 2F 83 00 0C 00 00     -  comiss xmm0,[rbx+00000C00]
// ---------- DONE INJECTING  ----------
"GTA5.exe"+687114: 73 13                    -  jae GTA5.exe+687129
"GTA5.exe"+687116: 48 8B 93 60 01 00 00     -  mov rdx,[rbx+00000160]
"GTA5.exe"+68711D: 48 8D 8B 64 0C 00 00     -  lea rcx,[rbx+00000C64]
"GTA5.exe"+687124: E8 D3 FB FF FF           -  call GTA5.exe+686CFC
"GTA5.exe"+687129: 83 A3 7C 0C 00 00 00     -  and dword ptr [rbx+00000C7C],00
"GTA5.exe"+687130: 48 8B CB                 -  mov rcx,rbx
"GTA5.exe"+687133: E8 9C 47 00 00           -  call GTA5.exe+68B8D4
"GTA5.exe"+687138: 48 8B CB                 -  mov rcx,rbx
"GTA5.exe"+68713B: E8 08 AB 00 00           -  call GTA5.exe+691C48
"GTA5.exe"+687140: 48 8B CB                 -  mov rcx,rbx
}

 

вот инструкция на запись. 

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

{ Game   : GTA5.exe
  Version: 
  Date   : 2016-06-02
  Author : Silicon Valley

  This script does blah blah blah
}

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

 
 
aobscanmodule(INJECT,GTA5.exe,F3 0F 11 BB 00 0C 00 00) // should be unique
alloc(newmem,$1000,"GTA5.exe"+6707A1)

label(code)
label(return)

newmem:

code:
  movss [rbx+00000C00],xmm7
  jmp return

INJECT:
  jmp code
  nop
  nop
  nop
return:
registersymbol(INJECT)

[DISABLE]
//code from here till the end of the code will be used to disable the cheat
INJECT:
  db F3 0F 11 BB 00 0C 00 00

unregistersymbol(INJECT)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: "GTA5.exe"+6707A1

"GTA5.exe"+670774: 0F 2F CF                 -  comiss xmm1,xmm7
"GTA5.exe"+670777: 0F 86 AB 00 00 00        -  jbe GTA5.exe+670828
"GTA5.exe"+67077D: 0F 28 C6                 -  movaps xmm0,xmm6
"GTA5.exe"+670780: F3 41 0F 59 F0           -  mulss xmm6,xmm8
"GTA5.exe"+670785: F3 0F 58 83 B8 05 00 00  -  addss xmm0,[rbx+000005B8]
"GTA5.exe"+67078D: F3 0F 5C CE              -  subss xmm1,xmm6
"GTA5.exe"+670791: F3 0F 11 83 B8 05 00 00  -  movss [rbx+000005B8],xmm0
"GTA5.exe"+670799: 0F 2F CF                 -  comiss xmm1,xmm7
"GTA5.exe"+67079C: 72 03                    -  jb GTA5.exe+6707A1
"GTA5.exe"+67079E: 0F 28 F9                 -  movaps xmm7,xmm1
// ---------- INJECTING HERE ----------
"GTA5.exe"+6707A1: F3 0F 11 BB 00 0C 00 00  -  movss [rbx+00000C00],xmm7
// ---------- DONE INJECTING  ----------
"GTA5.exe"+6707A9: E9 2D FF FF FF           -  jmp GTA5.exe+6706DB
"GTA5.exe"+6707AE: F3 0F 10 89 04 0C 00 00  -  movss xmm1,[rcx+00000C04]
"GTA5.exe"+6707B6: F3 0F 10 91 00 0C 00 00  -  movss xmm2,[rcx+00000C00]
"GTA5.exe"+6707BE: 0F 2F D1                 -  comiss xmm2,xmm1
"GTA5.exe"+6707C1: 73 65                    -  jae GTA5.exe+670828
"GTA5.exe"+6707C3: 83 A1 B8 05 00 00 00     -  and dword ptr [rcx+000005B8],00
"GTA5.exe"+6707CA: 4D 85 C0                 -  test r8,r8
"GTA5.exe"+6707CD: 74 1F                    -  je GTA5.exe+6707EE
"GTA5.exe"+6707CF: 49 8B 80 98 14 00 00     -  mov rax,[r8+00001498]
"GTA5.exe"+6707D6: 48 85 C0                 -  test rax,rax
}

 

 

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

4 часа назад, Baracuda сказал:

вот инструкция на запись. 

Попробуй так:

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

{ Game   : GTA5.exe
  Version:
  Date   : 2016-06-02
  Author : Silicon Valley

  This script does blah blah blah
}

[ENABLE]
aobscanmodule(INJECT,GTA5.exe,F3 0F 11 BB 00 0C 00 00) // should be unique
alloc(newmem,$1000,"GTA5.exe"+6707A1)
label(code)
label(return)
label(TEndur)
registersymbol(INJECT)

newmem:
  movss [rbx+00000C00],xmm7
  push rax
  mov eax,[rbx+00000C00]
  cmp [TEndur],eax
  jb code
  mov [TEndur],eax
  pop rax
  jmp return

code:
  pop rax
  mov [rbx+00000C00],(float)100
  mov [TEndur],(float)100
  jmp return

TEndur:
dd (float)100

INJECT:
  jmp newmem
  db 90 90 90
return:

[DISABLE]
INJECT:
  db F3 0F 11 BB 00 0C 00 00

unregistersymbol(INJECT)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: "GTA5.exe"+6707A1

"GTA5.exe"+670774: 0F 2F CF                 -  comiss xmm1,xmm7
"GTA5.exe"+670777: 0F 86 AB 00 00 00        -  jbe GTA5.exe+670828
"GTA5.exe"+67077D: 0F 28 C6                 -  movaps xmm0,xmm6
"GTA5.exe"+670780: F3 41 0F 59 F0           -  mulss xmm6,xmm8
"GTA5.exe"+670785: F3 0F 58 83 B8 05 00 00  -  addss xmm0,[rbx+000005B8]
"GTA5.exe"+67078D: F3 0F 5C CE              -  subss xmm1,xmm6
"GTA5.exe"+670791: F3 0F 11 83 B8 05 00 00  -  movss [rbx+000005B8],xmm0
"GTA5.exe"+670799: 0F 2F CF                 -  comiss xmm1,xmm7
"GTA5.exe"+67079C: 72 03                    -  jb GTA5.exe+6707A1
"GTA5.exe"+67079E: 0F 28 F9                 -  movaps xmm7,xmm1
// ---------- INJECTING HERE ----------
"GTA5.exe"+6707A1: F3 0F 11 BB 00 0C 00 00  -  movss [rbx+00000C00],xmm7
// ---------- DONE INJECTING  ----------
"GTA5.exe"+6707A9: E9 2D FF FF FF           -  jmp GTA5.exe+6706DB
"GTA5.exe"+6707AE: F3 0F 10 89 04 0C 00 00  -  movss xmm1,[rcx+00000C04]
"GTA5.exe"+6707B6: F3 0F 10 91 00 0C 00 00  -  movss xmm2,[rcx+00000C00]
"GTA5.exe"+6707BE: 0F 2F D1                 -  comiss xmm2,xmm1
"GTA5.exe"+6707C1: 73 65                    -  jae GTA5.exe+670828
"GTA5.exe"+6707C3: 83 A1 B8 05 00 00 00     -  and dword ptr [rcx+000005B8],00
"GTA5.exe"+6707CA: 4D 85 C0                 -  test r8,r8
"GTA5.exe"+6707CD: 74 1F                    -  je GTA5.exe+6707EE
"GTA5.exe"+6707CF: 49 8B 80 98 14 00 00     -  mov rax,[r8+00001498]
"GTA5.exe"+6707D6: 48 85 C0                 -  test rax,rax
}

 

По первому скрипту заметил у себя ошибку:

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

pop rax                   // восстановили значение регистра
ja @f
mov [rcx+10],(float)1.5
mov [TEndur],(float)1.5
jmp originalcode

@@:
mov [TEndur],eax          // и записали это значение сюда, но в eax лежит уже не значенние выносливости. Error (: Невнимательность блин.

 

Поправлю и первый скрипт здесь:

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

[ENABLE]
aobscanmodule(Endurance,gamedll_x64_rwdi.dll,F3 0F 10 41 10 0F 2F C6)
alloc(newmem,2048,"Endurance)
label(returnhere)
label(originalcode)
label(TEndur)  // предыдущее значение выносливости, с ним и будем сравнивать.
registersymbol(Endurance)

newmem:
push rax
mov eax,[rcx+10]
cmp [TEndur],eax
ja @f
pop rax
mov [rcx+10],(float)1.5
mov [TEndur],(float)1.5
jmp originalcode

@@:
mov [TEndur],eax
pop rax

originalcode:
movss xmm0,[rcx+10]
jmp returnhere

TEndur:
dd (float)1,5

Endurance:
jmp newmem
returnhere:

[DISABLE]
Endurance:
db F3 0F 10 41 10

unregistersymbol(Endurance)
dealloc(newmem)

 

Вот теперь и он должен сработать.

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

Не Garik66 он работает как обычный скрипт на заморозку, самый первый скрипт который ты выложил, он больше подходить как раз, так что СПАСИБО ТЕБЕ Garik66 

ТЕМУ МОЖНО ЗАКРЫВАТЬ 

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

  • Гость закрыл тема
Гость
Эта тема закрыта для публикации ответов.
×
×
  • Создать...

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

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