Перейти к содержанию
На нашем форуме вы можете получить приватный чит для игры Euro Truck Simulator 2. Подробности по ссылке ниже:
Тема с читом на Euro Truck Simulator 2
Pitronic

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

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

Доброго времени суток форумчане, нужна помощь с этим скриптом, скидываю с коментарием и логами, у меня получилось не красиво, то есть транпорт игрока, неуязвим, а вот с остальным транортом беспредел, всё вокруг взрывается, хотя воздействия не какого нет, хотя я ставил не 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
Исправление грамматических ошибок

Поделиться сообщением


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

Забыл добавить игра Saints Row: The Third репак by xatab

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
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

Поделиться сообщением


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

×

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

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