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

Нужен скрипт с двойным сравнением и двумя флагами


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

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

Спойлер

{ Game   : saintsrowthethird_dx11.exe
  Version: 
  Date   : 2020-04-27
  Author : Pitronic

  This script does blah blah blah
}

[ENABLE]

aobscanmodule(HealthCar,saintsrowthethird_dx11.exe,F3 0F 2A 43 0C F3 0F 2A) // should be unique
alloc(newmem,$1000)

label(code)
label(return)
label(return)
label(return)
registersymbol(HealthCar)
registersymbol(CarPayarGang)
registersymbol(CarEnemiesGang)
newmem:

code:
cvtsi2ss xmm0,[ebx+0C] // то всем понятно адрес всего транспорта // [ebx+04] это адрес максимального здоровья транспорта // cmp [ebx+E4],1 это фильтр значение 1 соответствует фильтру игрока
jmp return
CarPayarGang:
dd 0
CarEnemiesGang
dd 0
HealthCar:
  jmp newmem
return:


[DISABLE]

HealthCar:
  db F3 0F 2A 43 0C

unregistersymbol(HealthCar)
unregistersymbol(CarPayarGang)
unregistersymbol(CarEnemiesGang)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: "saintsrowthethird_dx11.exe"+69DF58

"saintsrowthethird_dx11.exe"+69DF3C: E8 2D 88 40 00        -  call saintsrowthethird_dx11.exe+AA676E
"saintsrowthethird_dx11.exe"+69DF41: 8B E5                 -  mov esp,ebp
"saintsrowthethird_dx11.exe"+69DF43: 5D                    -  pop ebp
"saintsrowthethird_dx11.exe"+69DF44: C3                    -  ret 
"saintsrowthethird_dx11.exe"+69DF45: 80 7D 1C 00           -  cmp byte ptr [ebp+1C],00
"saintsrowthethird_dx11.exe"+69DF49: 74 0D                 -  je saintsrowthethird_dx11.exe+69DF58
"saintsrowthethird_dx11.exe"+69DF4B: F3 0F 2A 45 18        -  cvtsi2ss xmm0,[ebp+18]
"saintsrowthethird_dx11.exe"+69DF50: 0F 57 C9              -  xorps xmm1,xmm1
"saintsrowthethird_dx11.exe"+69DF53: 0F 2F C8              -  comiss xmm1,xmm0
"saintsrowthethird_dx11.exe"+69DF56: 76 D6                 -  jna saintsrowthethird_dx11.exe+69DF2E
// ---------- INJECTING HERE ----------
"saintsrowthethird_dx11.exe"+69DF58: F3 0F 2A 43 0C        -  cvtsi2ss xmm0,[ebx+0C]
// ---------- DONE INJECTING  ----------
"saintsrowthethird_dx11.exe"+69DF5D: F3 0F 2A 4B 04        -  cvtsi2ss xmm1,[ebx+04]
"saintsrowthethird_dx11.exe"+69DF62: 8B 55 18              -  mov edx,[ebp+18]
"saintsrowthethird_dx11.exe"+69DF65: 33 C9                 -  xor ecx,ecx
"saintsrowthethird_dx11.exe"+69DF67: 80 BE D0 0B 00 00 01  -  cmp byte ptr [esi+00000BD0],01
"saintsrowthethird_dx11.exe"+69DF6E: 8D 86 88 06 00 00     -  lea eax,[esi+00000688]
"saintsrowthethird_dx11.exe"+69DF74: 0F 95 C1              -  setne cl
"saintsrowthethird_dx11.exe"+69DF77: F3 0F 5A C0           -  cvtss2sd xmm0,xmm0
"saintsrowthethird_dx11.exe"+69DF7B: F3 0F 5A C9           -  cvtss2sd xmm1,xmm1
"saintsrowthethird_dx11.exe"+69DF7F: F2 0F 5E C1           -  divsd xmm0,xmm1
"saintsrowthethird_dx11.exe"+69DF83: F2 0F 5A C0           -  cvtsd2ss xmm0,xmm0
}

 

Нужны такие функции,  cmp [CarPayarGang],0   если не равно то сначала cmp [ebx+E4],1 если равно то адрес [ebx+04] записать в адрес [ebx+0С]  далее снова сравнение но с другим флагом cmp, [CarEnemiesGang],0 если не равно то опять таки сравнение фильтра cmp [ebx+E4],1 если не равно, то здесь тоже сравнить адрес  [ebx+04] с адресом  [ebx+0С]  если не равно то mov  [ebx+0С],0. заранее благодарю всех кто подскажет.

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

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

а вот с остальным транортом беспредел

Делаются потому что такие вещи не на тех функциях. И делаются такие вещи в разных вариантах. Самый простенький, мне кажется такой. 

Спойлер

newmem:
cmp [ebx+E4],1
je Player
cmp [ebx+E4],0 // или сколько там ?
je Enemy
jmp code
Player:
cmp [CarPayaGang],0
jz code
cvtsi2ss xmm1,[ebx+04]
movss [ebx+0C],xmm1
jmp code
Enemy:
cmp [CarEnemiesGang],0
jz code
xorps xmm1,xmm1
movss [ebx+0C],xmm1
jmp code
code:
cvtsi2ss xmm0,[ebx+0C]
jmp return

 

У мня же такого нет беспредела  :) Хотя я не так сделал функции. Я реализовал быстрый подрыв не через обнуление жизни машин..а через урон самого оружия.

Спойлер

 

 

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

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

через урон самого оружия.

Если не жалко поделись пожалуйста

 

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

или сколько там ?

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

 

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

// или сколько там ?

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

 

Подправил твой скрипт, спасибо за помощь, без тебя бы не справился, всё работает вот твой скрипт, с комментариями на поправку.

Спойлер

[ENABLE]
aobscanmodule(HealthCar,saintsrowthethird_dx11.exe,F3 0F 2A 43 0C F3 0F 2A) // should be unique
alloc(newmem1,$1000)

label(code1)
label(return1)
label(CarPayarGang)
label(CarEnemiesGang)
label(PlayerCar)
label(EnemyCar)

registersymbol(HealthCar)
registersymbol(CarPayarGang)
registersymbol(CarEnemiesGang)
newmem1:
cmp [ebx+E4],1
je PlayerCar
cmp [ebx+E4],1 // в этом месте тоже еденица но прыжок не через je а jne
jne EnemyCar 
jmp code1
PlayerCar:
cmp [CarPayarGang],1
jz code1
cvtsi2ss xmm1,[ebx+04]
movss [ebx+0C],xmm1
jmp code1
EnemyCar:
cmp [CarEnemiesGang],0
jz code1
xorps xmm1,xmm1
movss [ebx+0C],xmm1
jmp code1
code1:
  cvtsi2ss xmm0,[ebx+0C]
  jmp return1
CarPayarGang:
dd 0
CarEnemiesGang:
dd 0
HealthCar:
  jmp newmem1
return1:

[DISABLE]

HealthCar:
db F3 0F 2A 43 0C

unregistersymbol(HealthCar)
unregistersymbol(HealthCar)
unregistersymbol(CarPayarGang)
unregistersymbol(CarEnemiesGang)

dealloc(newmem1)

 

жалко что второй плюс не могу за видос поставить.

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

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

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

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