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

Crying is not Enough - Телепорт минуя препятствия


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

В общем телепорт который я написал через препятствия с помощью LIRW не телепортирует, как
сделать так, чтобы телепортировал игрока через препятствия?

ЕЩЕ НЕТ В ЭТОЙ ИГРЕ МОДУЛЬНОЙ АДРЕСАЦИИ, И АДРЕС ПРИХОДИТСЯ ИСКАТЬ ПОСТОЯННО ЧЕРЕЗ
СИГНАТУРУ ПОСЛЕ ПЕРЕЗАПУСКА ИГРЫ.

 

Спойлер

 

 

ТЕЛЕПОРТ СКРИПТ - С написанием скрипта помог Lirw так как мой вариант работал криво

 

Спойлер

[ENABLE]
aobscanmodule(Teleport,UnityPlayer.dll,ED F3 0F 11 56 10) // should be unique
alloc(Teleportmem,$1000,Teleport)
registersymbol(Teleport)
registersymbol(_saveCoords)
registersymbol(_loadCoords)
label(coordX)
label(coordY)
label(coordZ)
label(_save)
label(_load)
label(_saveCoords)
label(_loadCoords)
label(_exit_Teleport)
label(_Teleport_back_)

 Teleportmem:
  cmp dword ptr [rsi+1C],01140004
  jne _exit_Teleport

 _save:
  cmp byte ptr [_saveCoords],1
  jne short _load

  movss xmm2,dword ptr [rsi+10]
  movss [coordX],xmm2
  movss xmm3,dword ptr [rsi+14]
  movss [coordY],xmm3
  movss xmm4,dword ptr [rsi+18]
  movss [coordZ],xmm4
  cmp byte ptr [_saveCoords],0
  setz [_saveCoords]
  jmp _exit_Teleport

  _load:
  cmp [coordX],0
  je _exit_Teleport
  cmp byte ptr [_loadCoords],1
  jne short _exit_Teleport

  movss xmm2,dword ptr [coordX]
  movss [rsi+10],xmm2
  movss xmm3,dword ptr [coordY]
  movss [rsi+14],xmm3
  movss xmm4,dword ptr [coordZ]
  movss [rsi+18],xmm4
  cmp byte ptr [_loadCoords],0
  setz [_loadCoords]

 _exit_Teleport:
  movss [rsi+10],xmm2
  movss [rsi+14],xmm3
  movss [rsi+18],xmm4
  jmp _Teleport_back_

  coordX:
  dd 0
  coordY:
  dd 0
  coordZ:
  dd 0
 _saveCoords:
  db 0
 _loadCoords:
  db 0

Teleport+01:
  jmp Teleportmem
  db 90 90 90 90 90 90 90 90 90 90
_Teleport_back_:

[DISABLE]

Teleport+01:
  db F3 0F 11 56 10 F3 0F 11 5E 14 F3 0F 11 66 18

unregistersymbol(Teleport)
unregistersymbol(_saveCoords)
unregistersymbol(_loadCoords)
dealloc(Teleportmem)

{
// ORIGINAL CODE - INJECTION POINT: "UnityPlayer.dll"+DD3A3B

"UnityPlayer.dll"+DD3A0B: F3 0F 10 43 14              -  movss xmm0,[rbx+14]
"UnityPlayer.dll"+DD3A10: F3 0F 10 6B 10              -  movss xmm5,[rbx+10]
"UnityPlayer.dll"+DD3A15: F3 0F 10 4B 18              -  movss xmm1,[rbx+18]
"UnityPlayer.dll"+DD3A1A: F3 0F 59 13                 -  mulss xmm2,[rbx]
"UnityPlayer.dll"+DD3A1E: F3 0F 59 5B 04              -  mulss xmm3,[rbx+04]
"UnityPlayer.dll"+DD3A23: F3 0F 59 63 08              -  mulss xmm4,[rbx+08]
"UnityPlayer.dll"+DD3A28: F3 0F 58 56 10              -  addss xmm2,dword ptr [rsi+10]
"UnityPlayer.dll"+DD3A2D: F3 0F 58 5E 14              -  addss xmm3,dword ptr [rsi+14]
"UnityPlayer.dll"+DD3A32: F3 0F 58 66 18              -  addss xmm4,dword ptr [rsi+18]
"UnityPlayer.dll"+DD3A37: F3 0F 59 ED                 -  mulss xmm5,xmm5
// ---------- INJECTING HERE ----------
"UnityPlayer.dll"+DD3A3B: F3 0F 11 56 10              -  movss [rsi+10],xmm2
// ---------- DONE INJECTING  ----------
"UnityPlayer.dll"+DD3A40: F3 0F 11 5E 14              -  movss [rsi+14],xmm3
"UnityPlayer.dll"+DD3A45: F3 0F 11 66 18              -  movss [rsi+18],xmm4
"UnityPlayer.dll"+DD3A4A: 8B 03                       -  mov eax,[rbx]
"UnityPlayer.dll"+DD3A4C: 89 02                       -  mov [rdx],eax
"UnityPlayer.dll"+DD3A4E: 8B 43 04                    -  mov eax,[rbx+04]
"UnityPlayer.dll"+DD3A51: 89 42 04                    -  mov [rdx+04],eax
"UnityPlayer.dll"+DD3A54: 8B 43 08                    -  mov eax,[rbx+08]
"UnityPlayer.dll"+DD3A57: 89 42 08                    -  mov [rdx+08],eax
"UnityPlayer.dll"+DD3A5A: 44 89 62 0C                 -  mov [rdx+0C],r12d
"UnityPlayer.dll"+DD3A5E: 8B 43 10                    -  mov eax,[rbx+10]
}

 

 

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

Ребят может я не правильно вопрос поставил.

Смотрю мне не кто не отвечает.

Кто нибудь знает как сделать телепорт чтобы игрок не застревал у стен?

На видео посмотрите что игрок не может при телепортации проскочить мимо стены.

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

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

 

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

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

Попробуй найти другие координаты

А другие, это какие?

Просто какие могут быть там еще координаты, поподробнее можно.

Для проверки я замораживаю эти координати игрока, все - он не в лево, не в право никуда не движется. Что то там еще можно найти?

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

23 минуты назад, Dison сказал:

А другие, это какие?

Другие, которые обращаются к этим что бы измениться, попробуй поискать через инструкции обращения

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

7 часов назад, imaginary сказал:

Другие, которые обращаются к этим что бы измениться, попробуй поискать через инструкции обращения

Ты права, не те координаты нашел, сейчас все работает!

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

У меня все так же актуален вопрос про вызов функции createthread

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

То-есть код игры начинает генерироваться после действий, инструкций постоянно считывающих нет, только когда сделаешь действие какое либо в игре.

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

 

Скрипт на предметы:

 

Спойлер

[ENABLE]
aobscan(Item.Inf,48 63 48 48 FF C9) // should be unique
alloc(newmem,$1000,05D265F6)
registersymbol(Item.Inf)
label(code)
label(return)

newmem:
mov [rax+48],#99
code:
  movsxd  rcx,dword ptr [rax+48]
  dec ecx
  jmp return

Item.Inf:
  jmp newmem
  db 90
return:

[DISABLE]

Item.Inf:
  db 48 63 48 48 FF C9

unregistersymbol(Item.Inf)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: 05D265F6

05D265C5: 90                             -  nop 
05D265C6: 49 BB 70 9A 8A 07 00 00 00 00  -  mov r11,00000000078A9A70
05D265D0: 41 FF D3                       -  call r11
05D265D3: 48 8B C8                       -  mov rcx,rax
05D265D6: 83 39 00                       -  cmp dword ptr [rcx],00
05D265D9: 49 BA C8 59 27 16 01 00 00 00  -  mov r10,00000001162759C8
05D265E3: 66 66 90                       -  nop 
05D265E6: 49 BB 40 4C 8A 07 00 00 00 00  -  mov r11,00000000078A4C40
05D265F0: 41 FF D3                       -  call r11
05D265F3: 4C 8B F8                       -  mov r15,rax
// ---------- INJECTING HERE ----------
05D265F6: 48 63 48 48                    -  movsxd  rcx,dword ptr [rax+48]
05D265FA: FF C9                          -  dec ecx
// ---------- DONE INJECTING  ----------
05D265FC: 89 48 48                       -  mov [rax+48],ecx
05D265FF: 49 63 47 48                    -  movsxd  rax,dword ptr [r15+48]
05D26603: 83 F8 01                       -  cmp eax,01
05D26606: 0F 8D CC 00 00 00              -  jnl 05D266D8
05D2660C: 48 8B 47 48                    -  mov rax,[rdi+48]
05D26610: 48 89 45 A0                    -  mov [rbp-60],rax
05D26614: B9 A8 B2 EB 0E                 -  mov ecx,0EEBB2A8
05D26619: 48 8D 64 24 00                 -  lea rsp,[rsp+00]
05D2661E: 49 BB 60 0F 86 06 00 00 00 00  -  mov r11,0000000006860F60
05D26628: 41 FF D3                       -  call r11
}

 

 

Сама функция в полном обБёме

Спойлер

09853C7F - 00 55 48              - add [rbp+48],dl
09853C82 - 8B EC                 - mov ebp,esp
09853C84 - 48 81 EC 80000000     - sub rsp,00000080 { 128 }
09853C8B - 48 89 5D D0           - mov [rbp-30],rbx
09853C8F - 48 89 75 D8           - mov [rbp-28],rsi
09853C93 - 48 89 7D E0           - mov [rbp-20],rdi
09853C97 - 4C 89 65 E8           - mov [rbp-18],r12
09853C9B - 4C 89 6D F0           - mov [rbp-10],r13
09853C9F - 4C 89 7D F8           - mov [rbp-08],r15
09853CA3 - 48 8B F9              - mov rdi,rcx
09853CA6 - 48 8B F2              - mov rsi,rdx
09853CA9 - 48 8B 47 28           - mov rax,[rdi+28]
09853CAD - 48 8B C8              - mov rcx,rax
09853CB0 - 48 8B D6              - mov rdx,rsi
09853CB3 - 83 38 00              - cmp dword ptr [rax],00 { 0 }
09853CB6 - 49 BB B0A0EA0700000000 - mov r11,0000000007EAA0B0 { (-326416299) }
09853CC0 - 41 FF D3              - call r11
09853CC3 - 48 8B D0              - mov rdx,rax
09853CC6 - 48 8B CF              - mov rcx,rdi
09853CC9 - 48 8D 64 24 00        - lea rsp,[rsp+00]
09853CCE - 49 BB D040850900000000 - mov r11,00000000098540D0 { (-326416299) }
09853CD8 - 41 FF D3              - call r11
09853CDB - 48 8B F0              - mov rsi,rax
09853CDE - 83 F8 FF              - cmp eax,-01 { 255 }
09853CE1 - 0F84 24030000         - je 0985400B
09853CE7 - 48 8B 47 48           - mov rax,[rdi+48]
09853CEB - 4C 8B E0              - mov r12,rax
09853CEE - 48 8B DE              - mov rbx,rsi
09853CF1 - 83 38 00              - cmp dword ptr [rax],00 { 0 }
09853CF4 - 49 63 44 24 18        - movsxd  rax,dword ptr [r12+18]
09853CF9 - 3B D8                 - cmp ebx,eax
09853CFB - 0F83 28030000         - jae 09854029
09853D01 - 49 8B 44 24 10        - mov rax,[r12+10]
09853D06 - 48 63 CB              - movsxd  rcx,ebx
09853D09 - 48 8D 44 C8 20        - lea rax,[rax+rcx*8+20]
09853D0E - 48 8B 00              - mov rax,[rax]
09853D11 - 0FB6 40 35            - movzx eax,byte ptr [rax+35]
09853D15 - 85 C0                 - test eax,eax
09853D17 - 0F84 16020000         - je 09853F33
09853D1D - 48 8B 47 50           - mov rax,[rdi+50]
09853D21 - 4C 8B E8              - mov r13,rax
09853D24 - 89 75 B0              - mov [rbp-50],esi
09853D27 - 83 38 00              - cmp dword ptr [rax],00 { 0 }
09853D2A - 49 63 45 18           - movsxd  rax,dword ptr [r13+18]
09853D2E - 39 45 B0              - cmp [rbp-50],eax
09853D31 - 0F83 09030000         - jae 09854040
09853D37 - 49 8B 45 10           - mov rax,[r13+10]
09853D3B - 48 63 4D B0           - movsxd  rcx,dword ptr [rbp-50]
09853D3F - 48 63 C9              - movsxd  rcx,ecx
09853D42 - 48 8D 44 C8 20        - lea rax,[rax+rcx*8+20]
09853D47 - 48 8B 00              - mov rax,[rax]
09853D4A - 48 8B C8              - mov rcx,rax
09853D4D - 83 38 00              - cmp dword ptr [rax],00 { 0 }
09853D50 - 48 8D 64 24 00        - lea rsp,[rsp+00]
09853D55 - 90                    - nop 
09853D56 - 49 BB 0095730700000000 - mov r11,0000000007739500 { (-326416299) }
09853D60 - 41 FF D3              - call r11
09853D63 - 48 8B C8              - mov rcx,rax
09853D66 - 83 39 00              - cmp dword ptr [rcx],00 { 0 }
09853D69 - 41 BA E0B2CDF2        - mov r10d,F2CDB2E0 { (0EF97788) }
09853D6F - 48 8D AD 00000000     - lea rbp,[rbp+00000000]
09853D76 - 49 BB 80BE170800000000 - mov r11,000000000817BE80 { (58394.28) }
09853D80 - 41 FF D3              - call r11
09853D83 - 4C 8B F8              - mov r15,rax
09853D86 - 48 63 48 48           - movsxd  rcx,dword ptr [rax+48]
09853D8A - FF C9                 - dec ecx
09853D8C - 89 48 48              - mov [rax+48],ecx
09853D8F - 49 63 47 48           - movsxd  rax,dword ptr [r15+48]
09853D93 - 83 F8 01              - cmp eax,01 { 1 }
09853D96 - 0F8D CC000000         - jnl 09853E68
09853D9C - 48 8B 47 48           - mov rax,[rdi+48]
09853DA0 - 48 89 45 A0           - mov [rbp-60],rax
09853DA4 - B9 A8A1FA0E           - mov ecx,0EFAA1A8 { (0ECA9468) }
09853DA9 - 48 8D 64 24 00        - lea rsp,[rsp+00]
09853DAE - 49 BB 600F860600000000 - mov r11,0000000006860F60 { (-326416299) }
09853DB8 - 41 FF D3              - call r11
09853DBB - 4C 8B C0              - mov r8,rax
09853DBE - 48 8B 45 A0           - mov rax,[rbp-60]
09853DC2 - 41 C7 40 30 FFFFFFFF  - mov [r8+30],FFFFFFFF { (0) }
09853DCA - 48 8B C8              - mov rcx,rax
09853DCD - 48 8B D6              - mov rdx,rsi
09853DD0 - 83 38 00              - cmp dword ptr [rax],00 { 0 }
09853DD3 - 66 66 90              - nop 
09853DD6 - 49 BB C0AC730700000000 - mov r11,000000000773ACC0 { (58394.28) }
09853DE0 - 41 FF D3              - call r11
09853DE3 - 48 8B 47 50           - mov rax,[rdi+50]
09853DE7 - 4C 8B F8              - mov r15,rax
09853DEA - 89 75 A8              - mov [rbp-58],esi
09853DED - 83 38 00              - cmp dword ptr [rax],00 { 0 }
09853DF0 - 49 63 47 18           - movsxd  rax,dword ptr [r15+18]
09853DF4 - 39 45 A8              - cmp [rbp-58],eax
09853DF7 - 0F83 5B020000         - jae 09854058
09853DFD - 49 8B 47 10           - mov rax,[r15+10]
09853E01 - 48 63 4D A8           - movsxd  rcx,dword ptr [rbp-58]
09853E05 - 48 63 C9              - movsxd  rcx,ecx
09853E08 - 48 8D 44 C8 20        - lea rax,[rax+rcx*8+20]
09853E0D - 48 8B 00              - mov rax,[rax]
09853E10 - 48 8B C8              - mov rcx,rax
09853E13 - 83 38 00              - cmp dword ptr [rax],00 { 0 }
09853E16 - 49 BB 0095730700000000 - mov r11,0000000007739500 { (-326416299) }
09853E20 - 41 FF D3              - call r11
09853E23 - 48 8B C8              - mov rcx,rax
09853E26 - 33 D2                 - xor edx,edx
09853E28 - 83 38 00              - cmp dword ptr [rax],00 { 0 }
09853E2B - 66 66 90              - nop 
09853E2E - 49 BB A0C5730700000000 - mov r11,000000000773C5A0 { (-326416299) }
09853E38 - 41 FF D3              - call r11
09853E3B - 48 89 45 C0           - mov [rbp-40],rax
09853E3F - 48 8B C8              - mov rcx,rax
09853E42 - 83 38 00              - cmp dword ptr [rax],00 { 0 }
09853E45 - 90                    - nop 
09853E46 - 49 BB 203A720700000000 - mov r11,0000000007723A20 { (-326416299) }
09853E50 - 41 FF D3              - call r11
09853E53 - 48 8B C8              - mov rcx,rax
09853E56 - 49 BB 4045C60600000000 - mov r11,0000000006C64540 { (-326416299) }
09853E60 - 41 FF D3              - call r11
09853E63 - E9 A3010000           - jmp 0985400B
09853E68 - 49 63 47 48           - movsxd  rax,dword ptr [r15+48]
09853E6C - 83 F8 01              - cmp eax,01 { 1 }
09853E6F - 0F85 4C000000         - jne 09853EC1
09853E75 - 49 8B CF              - mov rcx,r15
09853E78 - 41 83 3F 00           - cmp dword ptr [r15],00 { 0 }
09853E7C - 66 90                 - nop 
09853E7E - 49 BB 1647720700000000 - mov r11,0000000007724716 { (232) }
09853E88 - 41 FF D3              - call r11
09853E8B - 48 8B C8              - mov rcx,rax
09853E8E - 83 39 00              - cmp dword ptr [rcx],00 { 0 }
09853E91 - 41 BA 989ECBF2        - mov r10d,F2CB9E98 { (0EF97788) }
09853E97 - 48 8D AD 00000000     - lea rbp,[rbp+00000000]
09853E9E - 49 BB B249730700000000 - mov r11,00000000077349B2 { (232) }
09853EA8 - 41 FF D3              - call r11
09853EAB - 48 8B C8              - mov rcx,rax
09853EAE - BA 80081306           - mov edx,06130880 { (062210B8) }
09853EB3 - 48 8B 00              - mov rax,[rax]
09853EB6 - FF 90 C8020000        - call qword ptr [rax+000002C8]
09853EBC - E9 4A010000           - jmp 0985400B
09853EC1 - 49 8B CF              - mov rcx,r15
09853EC4 - 41 83 3F 00           - cmp dword ptr [r15],00 { 0 }
09853EC8 - 48 8D 64 24 00        - lea rsp,[rsp+00]
09853ECD - 90                    - nop 

 

 

 

 

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

Похоже игра на Mono и Unity. 

 

Найти метод по некоторому названию (где-то выше по коду) в CE и скомпилировать это метод по названию (перед активацией скрипта АА)

 

Пример если название функции "TakeDamage" (здесь просто нопинг)

Спойлер

{$STRICT}
define(bytes,89 47 60)
////
//// ------------------------------ ENABLE ------------------------------
[ENABLE]
{$lua}
if syntaxcheck then return end
if LaunchMonoDataCollector() ~= 0 then
    local mId = mono_findMethod('Assembly-CSharp', 'PlayerStatsManager', 'TakeDamage')
    --local mId = mono_findMethod('', 'PlayerStatsManager', 'TakeDamage') ---- This also works
    mono_compile_method(mId)
end
{$asm}

assert(PlayerStatsManager:TakeDamage+8A, bytes)
PlayerStatsManager:TakeDamage+8A:
  nop
  nop
  nop

////
//// ------------------------------ DISABLE ------------------------------
[DISABLE]
PlayerStatsManager:TakeDamage+8A:
  db bytes
  // mov [edi+60],eax

 

 

 

Вообще,  у @Xipho было видео по Subnautica на канале Gamehacklab[RU]. Там monodessector и там разные подходы.

У меня в блоге тоже можно поискать как ломать игры на Unity. Если движок знаешь, да еще и игра на Моно, да еще и без обфускации, то можно что хочешь с ней делать. Документация Unity функций.

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

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

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

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