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

MasterGH

Ветераны
  • Постов

    2 999
  • Зарегистрирован

  • Победитель дней

    129

Сообщения, опубликованные MasterGH

  1. 8 часов назад, srg91 сказал:

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

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

    Осталось понять, почему в случае если массив содержит вектора - используется агрегатный синтаксис. А если содержит числа например, то не агрегатный.

     

    Как я помню. Вектор — класс, массив — структура. В первом случае будут поинтеры, во втором адреса данных. Может быть разные типы данных связаны с дополнительным блоком скобок.

     

    @srg91, если есть возможность, то мог бы в CE DessectData развернутую иерархию данных заскринить. Было бы интересно посмотреть на поинтеры

  2. Может так

    Screenshot_1.png

     

    Предполагаю, что там где описание массива из векторов —там кажется что скобки лишние. Двойка в описании массива означает инициализацию двух элементов, которые можно заполнить в массиве после знака "=", что и происходит

     

     

  3. В 03.04.2018 в 22:04, vadik111 сказал:

    Возможно ли узнать вообще все иды моделек в этой игре ?

     

    1. Сравнить структуры

    2. Найти адрес id модели, хотя это если повезет. Может вообще не быть. Если нет id, то сам адрес структуры

    3. На адрес id или на адрес структуры ставится брейкпоинт. Находим инструкцию, которая работает со всеми id или адресами структур и выводим их куда надо и как надо. Либо через АА скрипты, либо через Lua скрипты. Через последние проще.

     

    Нет гарантии, что все id-моделей сейчас на игровой сцене...

  4. 20 часов назад, JustHack сказал:

    Вопрос вот в чем. Как можно вычислить координаты аномалии, чтобы обернуть её в визуалы?

     

    По RTTI писать не буду, надо изучать и пробовать.

     

    Если в теории, то такой способ даже в играх, в которых нет RTTI.

     

    Найти координаты любого игрового объекта, например, главного персонажа.

    На них поставить брейкпоинт на доступ в CE.

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

    Среди этого многообразия адресов долго будет вручную найти координаты аномалии.

     

    Можно написать Lua скрипт, который найден ближайший игровой объект рядом с другим игровым объектом и вывести список таких координат.

    Если координаты аномалии движутся, то можно вручную найти или опять скриптом через Lua.

  5. 3 часа назад, X86Jumps сказал:

    а актуально делать ответ когда даже сам автор выложил его?)

     

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

    Будем ждать новую подобную версию. Без готового решения.

     

    Окей. Решение выложили, тему закрываю

  6. 4 часа назад, GameHacker сказал:

    Я просто эти регистры не понимаю потому что в ютубе нет про них обучение!

     

    Надо тему подводить к итогу и завершать, потому что прошло много времени.

    Нужно написать подробно, что делал, что не получилось. Скриншоты, видео, текст.

     

  7. В 14.03.2018 в 19:05, MasterGH сказал:

    Поставить брейкпоинт на любой адрес координат.

     

    19 часов назад, GameHacker сказал:

    Не могу когда я нажимаю на F5 то адресс становится зеленым, а игра не запускается (зависает)

     

    Это должен быть адрес одной из координат.

    Если игра зависает при подключении отладчика, то может попробовать включить VEH дебаггер.

     

    20 часов назад, GameHacker сказал:

    есть ли видео пример или скрин хотябы чтобы я понял.?

     

     

    22 часа назад, GameHacker сказал:

    Расструктуризовать dessect data/structure

    В отладчике из меню вызывается "dessect data/structure " и там в окне указывается адрес начала структуры. Если смотреть скриншот выше это был бы адрес из ebx

    Когда ты кликнешь на инструкцию у тебя появится регистр плюс смещение.

    mov [ebx+ смещение]

    ebx будет началом структуры

  8. 4 минуты назад, GameHacker сказал:

    есть ли видео про это?

    и да как сделать АА скрипт

     

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

    • Плюс 1
  9. В 12.03.2018 в 18:32, GameHacker сказал:

    Нашел 2 координаты 1-ый координата указывает лево-право, 2-ой вперед-назад, а что с ними делать? 

     

    Поставить брейкпоинт на любой адрес координат.

    Найти начало структуры. Начало лежит в регистре. Например [eax + 0xx]. Начало в eax

    Расструктуризовать dessect data/structure

    Взять случайные смещения рядом с eax + 0xx и поменять значения по ним раза в два больше. Зайти в игру и посмотреть, что поменялось.

    Потратить время и по всей структуре поменять рандомно значения раза в два больше. Тип float к примеру. Если игра вылетает, то повторить с другими смещениями.

    • Плюс 1
  10. 16 минут назад, ReWanet сказал:

    Вот чисто ради интереса кто одобрил эту тему?

    Возвращайся модератором работать. Тему я одобрил, не успел ответить.

    Создаем тему в запросах. Закрыто

  11. 2 часа назад, GameHacker сказал:

    Нашел 2 координаты 1-ый координата указывает лево-право, 2-ой вперед-назад, а что с ними делать?

     

    Как в предыдущей теме. Скорость может быть в структуре рядом с координатами или рядом с velocity. Либо в другой структуре.

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

     

  12. 2 часа назад, Ray сказал:

    У это эмуля нет асамблера и всяких фитч как у читэнджин.

    Для эмулятора достаточен обычно встроенный сканер памяти. Иногда надо редактировать код через свой отладчик/дизассемблер. Предполагаю можно поискать подходящий эмуль или же каким-то образом сделать на Cheat Engine, возможно будет сложнее

  13. Не знал про эту инструкцию. Запрятали

     

    Спойлер
    
    alloc(memTestMemory, 0x400)
    registerSymbol(memTestMemory)
    
    memTestMemory:
      reassemble("Tutorial-i386.exe"+24B25)
      reassemble("Tutorial-i386.exe"+24B29)
      reassemble("Tutorial-i386.exe"+24B2D)
    
    //// Read Memory
    // Tutorial-i386.exe+24B25 - 83 45 EC 01           - add dword ptr [ebp-14],01
    // Tutorial-i386.exe+24B29 - 83 7D EC 64           - cmp dword ptr [ebp-14],64
    // Tutorial-i386.exe+24B2D - 74 02                 - je Tutorial-i386.exe+24B31
    
    //// Assembled Memory
    // memTestMemory - 83 45 EC 01           - add dword ptr [ebp-14],01
    // 003F0004      - 83 7D EC 64           - cmp dword ptr [ebp-14],64
    // 003F0008      - 0F84 234B0300         - je Tutorial-i386.exe+24B31

     

     

    • Плюс 1
  14. Привлекло то, что игра на движке UE4.

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

     

    Спойлер

     

     

    flymode и ghostmode с моим видео про высокий прыжок в Сталкере немножко не связано. Суперпрыжок это отдельный чит — прыгает высоко и далеко на мелкой карте, ударяется о стены. Этот чит я сделал, посмотрел как работает. Но это не flymode.

     

    Сделал через поиск скорости как в Сталкере, но с одним нюансом. Инъекцию делал в инструкцию, которая один раз пишет в момент прыжка

    Спойлер
    
    { Game   : HelloNeighbor-Win64-Shipping.exe
      Version: 
      Date   : 2018-03-10
      Author : MasterGH
    
      This script does blah blah blah
    }
    
    [ENABLE]
    //code from here to '[DISABLE]' will be used to enable the cheat
    
     
     
    aobscanmodule(INJECT_SuperJump2,HelloNeighbor-Win64-Shipping.exe,FF 90 80 07 00 00 48 8B 07 41) // should be unique
    alloc(newmem,$1000,"HelloNeighbor-Win64-Shipping.exe"+10759DE)
    alloc(newmem2,$1000,"HelloNeighbor-Win64-Shipping.exe"+10759DE)
    
    label(code)
    label(return)
    
    label(scaleXY)
    label(scaleZ)
    registersymbol(scaleXY)
    registersymbol(scaleZ)
    
    newmem2:
    scaleXY:
     dd (float)4
    scaleZ:
     dd (float)4
    
    newmem:
      movss xmm0,[rdi+00000104] // LEFT or RIGHT
      mulss xmm0,[scaleXY]
      movss [rdi+00000104],xmm0
    
      movss xmm0,[rdi+00000108] // FORWARD or BACKWARD
      mulss xmm0,[scaleXY]
      movss [rdi+00000108],xmm0
    
      movss xmm0,[rdi+0000010C] // UP or DOWN
      mulss xmm0,[scaleZ]
      movss [rdi+0000010C],xmm0
    code:
      call qword ptr [rax+00000780]
      jmp return
    
    
    INJECT_SuperJump2:
      jmp newmem
      nop
    return:
    registersymbol(INJECT_SuperJump2)
    
    [DISABLE]
    //code from here till the end of the code will be used to disable the cheat
    INJECT_SuperJump2:
      db FF 90 80 07 00 00
    
    unregistersymbol(INJECT_SuperJump2)
    dealloc(newmem)
    
    {
    // ORIGINAL CODE - INJECTION POINT: "HelloNeighbor-Win64-Shipping.exe"+10759DE
    
    "HelloNeighbor-Win64-Shipping.exe"+107599E: F3 0F 58 00                    -  addss xmm0,[rax]
    "HelloNeighbor-Win64-Shipping.exe"+10759A2: F3 0F 11 87 04 01 00 00        -  movss [rdi+00000104],xmm0
    "HelloNeighbor-Win64-Shipping.exe"+10759AA: F3 0F 10 48 04                 -  movss xmm1,[rax+04]
    "HelloNeighbor-Win64-Shipping.exe"+10759AF: F3 0F 58 8F 08 01 00 00        -  addss xmm1,[rdi+00000108]
    "HelloNeighbor-Win64-Shipping.exe"+10759B7: F3 0F 11 8F 08 01 00 00        -  movss [rdi+00000108],xmm1
    "HelloNeighbor-Win64-Shipping.exe"+10759BF: F3 0F 10 40 08                 -  movss xmm0,[rax+08]
    "HelloNeighbor-Win64-Shipping.exe"+10759C4: F3 0F 58 87 0C 01 00 00        -  addss xmm0,[rdi+0000010C]
    "HelloNeighbor-Win64-Shipping.exe"+10759CC: F3 0F 11 87 0C 01 00 00        -  movss [rdi+0000010C],xmm0
    "HelloNeighbor-Win64-Shipping.exe"+10759D4: 48 8B 8F 88 01 00 00           -  mov rcx,[rdi+00000188]
    "HelloNeighbor-Win64-Shipping.exe"+10759DB: 48 8B 01                       -  mov rax,[rcx]
    // ---------- INJECTING HERE ----------
    "HelloNeighbor-Win64-Shipping.exe"+10759DE: FF 90 80 07 00 00              -  call qword ptr [rax+00000780]
    // ---------- DONE INJECTING  ----------
    "HelloNeighbor-Win64-Shipping.exe"+10759E4: 48 8B 07                       -  mov rax,[rdi]
    "HelloNeighbor-Win64-Shipping.exe"+10759E7: 41 B1 01                       -  mov r9l,01
    "HelloNeighbor-Win64-Shipping.exe"+10759EA: 4D 8B C6                       -  mov r8,r14
    "HelloNeighbor-Win64-Shipping.exe"+10759ED: 4C 89 74 24 30                 -  mov [rsp+30],r14
    "HelloNeighbor-Win64-Shipping.exe"+10759F2: 33 D2                          -  xor edx,edx
    "HelloNeighbor-Win64-Shipping.exe"+10759F4: 48 8B CF                       -  mov rcx,rdi
    "HelloNeighbor-Win64-Shipping.exe"+10759F7: FF 90 88 06 00 00              -  call qword ptr [rax+00000688]
    "HelloNeighbor-Win64-Shipping.exe"+10759FD: 44 38 B7 AC 01 00 00           -  cmp [rdi+000001AC],r14l
    "HelloNeighbor-Win64-Shipping.exe"+1075A04: 75 36                          -  jne HelloNeighbor-Win64-Shipping.exe+1075A3C
    "HelloNeighbor-Win64-Shipping.exe"+1075A06: 48 8B 07                       -  mov rax,[rdi]
    }

     

     

    Убрать урон от падения. Почти занопил первую и тем самым одну из инструкций чтения адреса скорости. Чисто экспериментально.

    Спойлер
    
    { Game   : HelloNeighbor-Win64-Shipping.exe
      Version: 
      Date   : 2018-03-10
      Author : MasterGH
    
      This script does blah blah blah
    }
    
    [ENABLE]
    //code from here to '[DISABLE]' will be used to enable the cheat
    
     
     
    aobscanmodule(INJECT_NODIE,HelloNeighbor-Win64-Shipping.exe,8B 40 08 89 43 08 48 8B C3 48 8B 5C 24 40 48 83 C4 30 5F C3 CC) // should be unique
    alloc(newmem,$1000,"HelloNeighbor-Win64-Shipping.exe"+13160CE)
    
    label(code)
    label(return)
    
    newmem:
      xor eax, eax
    code:
      //mov eax,[rax+08]
      mov [rbx+08],eax
      jmp return
    
    INJECT_NODIE:
      jmp newmem
      nop
    return:
    registersymbol(INJECT_NODIE)
    
    [DISABLE]
    //code from here till the end of the code will be used to disable the cheat
    INJECT_NODIE:
      db 8B 40 08 89 43 08
    
    unregistersymbol(INJECT_NODIE)
    dealloc(newmem)
    
    {
    // ORIGINAL CODE - INJECTION POINT: "HelloNeighbor-Win64-Shipping.exe"+13160CE
    
    "HelloNeighbor-Win64-Shipping.exe"+13160A6: 48 8B 07              -  mov rax,[rdi]
    "HelloNeighbor-Win64-Shipping.exe"+13160A9: 48 8B CF              -  mov rcx,rdi
    "HelloNeighbor-Win64-Shipping.exe"+13160AC: FF 90 D8 05 00 00     -  call qword ptr [rax+000005D8]
    "HelloNeighbor-Win64-Shipping.exe"+13160B2: 48 85 C0              -  test rax,rax
    "HelloNeighbor-Win64-Shipping.exe"+13160B5: 74 08                 -  je HelloNeighbor-Win64-Shipping.exe+13160BF
    "HelloNeighbor-Win64-Shipping.exe"+13160B7: 48 05 04 01 00 00     -  add rax,00000104
    "HelloNeighbor-Win64-Shipping.exe"+13160BD: EB 07                 -  jmp HelloNeighbor-Win64-Shipping.exe+13160C6
    "HelloNeighbor-Win64-Shipping.exe"+13160BF: 48 8D 05 22 64 8B 01  -  lea rax,[HelloNeighbor-Win64-Shipping.exe+2BCC4E8]
    "HelloNeighbor-Win64-Shipping.exe"+13160C6: F2 0F 10 00           -  movsd xmm0,[rax]
    "HelloNeighbor-Win64-Shipping.exe"+13160CA: F2 0F 11 03           -  movsd [rbx],xmm0
    // ---------- INJECTING HERE ----------
    "HelloNeighbor-Win64-Shipping.exe"+13160CE: 8B 40 08              -  mov eax,[rax+08]
    "HelloNeighbor-Win64-Shipping.exe"+13160D1: 89 43 08              -  mov [rbx+08],eax
    // ---------- DONE INJECTING  ----------
    "HelloNeighbor-Win64-Shipping.exe"+13160D4: 48 8B C3              -  mov rax,rbx
    "HelloNeighbor-Win64-Shipping.exe"+13160D7: 48 8B 5C 24 40        -  mov rbx,[rsp+40]
    "HelloNeighbor-Win64-Shipping.exe"+13160DC: 48 83 C4 30           -  add rsp,30
    "HelloNeighbor-Win64-Shipping.exe"+13160E0: 5F                    -  pop rdi
    "HelloNeighbor-Win64-Shipping.exe"+13160E1: C3                    -  ret 
    "HelloNeighbor-Win64-Shipping.exe"+13160E2: CC                    -  int 3 
    "HelloNeighbor-Win64-Shipping.exe"+13160E3: CC                    -  int 3 
    "HelloNeighbor-Win64-Shipping.exe"+13160E4: CC                    -  int 3 
    "HelloNeighbor-Win64-Shipping.exe"+13160E5: CC                    -  int 3 
    "HelloNeighbor-Win64-Shipping.exe"+13160E6: CC                    -  int 3 
    }

     

     

    По flymode  в теории можно искать скорость по вертикальной оси и морозить её на нужной высоте  горячими клавишами уменьшая или увеличивая её. "Морозить" или писать в адрес лучше АА кодом. Скрипт я не стал делать.

     

    ghostmod - либо через перемещение по координатам через АА скрипт, либо отключением галки физики на персонаже. Как её отключить не знаю.

    Спойлер

    Screenshot_8.png

     

    Случайно нашел видео на испанском (или иной язык), как был сделан ghost. Я посмотрел, как подходит и отходит от коллизий, таким способом не искал. Времени нет

    Спойлер

     

    На канале много другого видео по взлому с CE...

     

    Автор, что делать? По fly mode и ghost mode  я предлагаю искать координаты и менять их через АА код по горячим клавишам, чем-то похоже на скрипт АА телепорта, только новую позицию увеличиваем по клавишам движения. Скорости как на видео о Сталкере искать не нужно. Задавая скорость нельзя пройти сквозь стену, если конечно не сделать на неё чит как у испанца.

     

    • Плюс 1
  15. В 09.03.2018 в 23:56, Ray сказал:

    snes

     

    Я думаю,  можно найти эмулятор snes с хорошим дизассемблером, отладчиком и сканером памяти  и в нем сделать чит. ИМХО Cheat Engine можно не использовать/ Предположительно это сложнее как в поиске адреса, так и в редактировании кода эмулятора snes

  16. debugger_onBreakpoint=nil скорее всего не позволит использовать эту функцию до перезапуска.

     

    Способ 1. Переключая isActiveonBreakpoinFunction = false или isActiveOnBreakpoinFunction = true

    Спойлер
    
    isActiveOnBreakpoinFunction  = false
    
    function debugger_onBreakpoint()
      if not isActiveOnBreakpoinFunction then
        return
      end
      --todo:...
    end
    
    debug_setBreakpoint(0x0040CEA6)
    
    --todo:...
    -- debug_removeBreakpoint(0x0040CEA6)

     

     

    Способ 2. Назначить свою функцию

    Спойлер
    
    function onBreakpointMyFunction1()
     --todo:...
    end
    
    debug_setBreakpoint(0x0040CEA6, onBreakpointMyFunction1)
    --todo:...
    -- debug_removeBreakpoint(0x0040CEA6)

     

    • Понравилось 1
  17. Он ищет не три значения, а все по

    protectionflags = "+W*X-C"

    и пишет в адрес ноль

    findValueAndReplace('BA:8 BS:128 OOO:U f:250000 f:1000000 f:36000000', 0)

    Попробуй разобраться в Lua коде и в документации

    Можешь попробовать не групповой поиск, а другой. Например, поиск float (как с форума Cheat Engine). Проверить, отладить.

    Потом отладить групповой поиск. В Lua console есть пошаговая отладка, можно отладить любую строчку.

    Больше ни чем помочь не могу

     

     

  18. 2 часа назад, artemking4 сказал:

    Как с мобильной юнити игры портировать на пк?

     

    Что портировать? Мод к Drive Ahead  или игру Drive Ahead ? С какой на какую платформу? У ПК и у мобильных игр может быть множество платформ в виде разных ОС.

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

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

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