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

Garik66

Помогаторы
  • Постов

    5 750
  • Зарегистрирован

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

    292

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

  1. 1 минуту назад, ShaoShur сказал:

     

    Сдвигал камеру в правую сторону персонажа, при переключении через alt+tab камера фиксировалась в этом положении. Искал увеличенное значение. Потом центрировал на персонаже, и сдвигал влево.

    Камера начинает "двигаться" если двигать мышку (право-лево), присесть - сдвигается в низ. Жать "W" - сдвигается вверх

    алт таб - понятно.

    Попробую помочь

     

  2. 6 минут назад, ShaoShur сказал:

     

     Долго и муторно. Мол изменилось/не изменилось. Получилось 1300 значений. Ну и по половине отсеивал "замораживая" адреса) Муторно

    Как в CE это делается понятно, что в игре делал?

  3. 1 минуту назад, ShaoShur сказал:

    Там прилепил картинку. Повесил на "стрелочки" горячие клавиши, увеличивающие и уменьшающие позицию на 150) Я пока даже не пытался в скрипты

    Понятно, просто нашел твою инструкцию, чтобы не искать координаты камеры, но она работает с Кило адресов,
    А как искал координаты камеры?

  4. В 24.01.2020 в 15:05, ShaoShur сказал:

    Комрады привет всем!

    Привет!

    видео (не свободная камера):}

     

    скрипт:

    Спойлер
    
    { Game   : DarkDevotion.exe
      Version: 
      Date   : 2020-01-25
      Author : Garik66
    
      This script does blah blah blah
    }
    
    [ENABLE]
    aobscanmodule(COORD,DarkDevotion.exe,8B 4F 4C 8B 77 58) // should be unique
    alloc(newmem,$1000)
    label(code)
    label(return)
    label(T_coord)
    label(T_flag)
    registersymbol(T_flag)
    registersymbol(COORD)
    
    newmem:
      cmp [T_flag],2
      je @f
      mov ecx,[edi+4C]
      cmp [T_flag],1
      jne code
      mov [T_flag],0
      mov [T_coord],ecx
      jmp code
    
    @@:
      cmp [T_coord],0
      je code
      mov ecx,[T_coord]
      mov [edi+4C],ecx
      mov [T_flag],0
    
    code:
      mov esi,[edi+58]
      jmp return
    
    T_coord:
      dd 0
    T_flag:
      dd 0
    
    COORD:
      jmp newmem
      db 90
    return:
    
    [DISABLE]
    COORD:
      db 8B 4F 4C 8B 77 58
    
    unregistersymbol(T_flag)
    unregistersymbol(COORD)
    dealloc(newmem)
    
    {
    // ORIGINAL CODE - INJECTION POINT: "DarkDevotion.exe"+74824
    
    "DarkDevotion.exe"+747FB: 89 88 EC 00 00 00        -  mov [eax+000000EC],ecx
    "DarkDevotion.exe"+74801: 0F B7 47 18              -  movzx eax,word ptr [edi+18]
    "DarkDevotion.exe"+74805: 0D 00 00 F5 FF           -  or eax,FFF50000
    "DarkDevotion.exe"+7480A: 50                       -  push eax
    "DarkDevotion.exe"+7480B: 57                       -  push edi
    "DarkDevotion.exe"+7480C: E8 7F 08 00 00           -  call DarkDevotion.exe+75090
    "DarkDevotion.exe"+74811: A1 0C 3C 17 00           -  mov eax,[DarkDevotion.exe+103C0C]
    "DarkDevotion.exe"+74816: 83 C4 08                 -  add esp,08
    "DarkDevotion.exe"+74819: 89 B0 EC 00 00 00        -  mov [eax+000000EC],esi
    "DarkDevotion.exe"+7481F: A1 0C 3C 17 00           -  mov eax,[DarkDevotion.exe+103C0C]
    // ---------- INJECTING HERE ----------
    "DarkDevotion.exe"+74824: 8B 4F 4C                 -  mov ecx,[edi+4C]
    "DarkDevotion.exe"+74827: 8B 77 58                 -  mov esi,[edi+58]
    // ---------- DONE INJECTING  ----------
    "DarkDevotion.exe"+7482A: 8B 7F 5C                 -  mov edi,[edi+5C]
    "DarkDevotion.exe"+7482D: 8B 90 A8 00 00 00        -  mov edx,[eax+000000A8]
    "DarkDevotion.exe"+74833: 8B C1                    -  mov eax,ecx
    "DarkDevotion.exe"+74835: 2B C6                    -  sub eax,esi
    "DarkDevotion.exe"+74837: 89 4D F0                 -  mov [ebp-10],ecx
    "DarkDevotion.exe"+7483A: 33 C9                    -  xor ecx,ecx
    "DarkDevotion.exe"+7483C: 89 55 F8                 -  mov [ebp-08],edx
    "DarkDevotion.exe"+7483F: 3B C2                    -  cmp eax,edx
    "DarkDevotion.exe"+74841: 8B 45 FC                 -  mov eax,[ebp-04]
    "DarkDevotion.exe"+74844: 0F 9D C1                 -  setge cl
    }

     

    табличку выложил - ТУТ

     

  5. В 13.01.2020 в 21:45, Babyls сказал:

    хотел кое что узнать?

    Плохо объясняешь.
    Лучше напиши:

    1. С этим адресом работает какая-нибудь инструкция во время игры?
    2. Что ты хочешь сделать:

       2.1 Изменить значение в этом адресе?
       Если да и нет инструкции, то делается просто
      на любой часто читающей игровой инструкции делаешь инъекцию и записываешь в этот адрес нужное тебе значение.
     

    mov [01002100],a // где a - нужное тебе значение.

     

  6. 5 часов назад, vitalijtuz сказал:

    Так проблема в том что значение нахожу во float но если заморозить игра вылетает! 

    ты нашел одно из значений, которое по - коду игры потом скорее всего сверяется и сверяется скорее всего с шифрованным значением - поэтому и вылет.
    Нужно искать неизвестное 4 байта, изменилось(это 100 %   )/не изменилось (тут уже нужно смотреть игру).
    Есть игры. где не изменилось приведет к потери искомого значения.

  7. 14 часов назад, Pitronic сказал:

    Нужен такой скрипт

    1. Название игры.
    2. Что за опция (характеристика).

    3. СЕ-ный скрипт с ЛОГами.
    Без вот этих 3-х пунктов, лично я больше отвечать не буду.
    Результат таких запросов - простая тема разрастается на несколько страниц.
     

    Ты проде выкладывал несколько трейнеров?
    И при этом не можешь написать элементарный скрипт?

     

    • Понравилось 1
  8. 3 минуты назад, ЛАГАРИУМ сказал:

    там нельзя скачивать 

    Сколько тебе нужно выложить предов, чтобы ты почитал правила форума? ПРАВИЛА
     

    Спойлер

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

    Табличка: 

    Fallout3_byGarik66_ v1.1.CT

  9. 1 час назад, Carrion сказал:

    Как можно добавлять такой адрес в таблицу при каждом заходе в игру автоматически?

    Все \то уже есть и в видосах, и в темах, и в статьях форума.
    Вкратце:
    1. Сохраняешь rbx с помощью скрипта в переменной.
    2. добавляешь адрес в таблицу с поинтером (твоя переменная) и смещением 1С.
    3. При активации скрипта из п. 1 и срабатывании твоей инструкции в игре -> в адресе из п. 2 будет нужное тебе значение.

  10. 1 час назад, partoftheworlD сказал:

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

    Может трассировкой попробовать?

  11. ЗЫ: тогда можно и в приемник писать:
     

    Спойлер
    
    [ENABLE]
    alloc(newmem,2048,"VCRUNTIME140.dll"+122E)
    label(returnhere)
    label(code)
    
    
    newmem:
    repe movsb
    cmp [flag],1
    jne code
    mov [rdi+2],#50
    mov [rdi+c],#21
    //////////////   т.д.
    //////////////
    
    code:
    pop rsi
    pop rdi
    ret
    jmp returnhere
    
    
    ///////////////////////
    "VCRUNTIME140.dll"+122E:
    jmp newmem
    returnhere:
    [DISABLE]
    dealloc(newmem)
    "VCRUNTIME140.dll"+122E:
    repe movsb
    pop rsi
    pop rdi
    ret
    
    {
    // ORIGINAL CODE - INJECTION POINT: "VCRUNTIME140.dll"+122E
    
    "VCRUNTIME140.dll"+1213: CC                                            -  int 3
    "VCRUNTIME140.dll"+1214: CC                                            -  int 3
    "VCRUNTIME140.dll"+1215: CC                                            -  int 3
    "VCRUNTIME140.dll"+1216: 66 66 0F 1F 84 00 00 00 00 00                 -  nop [rax+rax+00000000]
    "VCRUNTIME140.dll"+1220: 57                                            -  push rdi
    "VCRUNTIME140.dll"+1221: 56                                            -  push rsi
    "VCRUNTIME140.dll"+1222: 49 8B C3                                      -  mov rax,r11
    "VCRUNTIME140.dll"+1225: 48 8B F9                                      -  mov rdi,rcx
    "VCRUNTIME140.dll"+1228: 49 8B C8                                      -  mov rcx,r8
    "VCRUNTIME140.dll"+122B: 49 8B F2                                      -  mov rsi,r10
    // ---------- INJECTING HERE ----------
    "VCRUNTIME140.dll"+122E: F3 A4                                         - repe  movsb
    "VCRUNTIME140.dll"+1230: 5E                                            -  pop rsi
    "VCRUNTIME140.dll"+1231: 5F                                            -  pop rdi
    "VCRUNTIME140.dll"+1232: C3                                            -  ret
    // ---------- DONE INJECTING  ----------
    "VCRUNTIME140.dll"+1233: CC                                            -  int 3
    "VCRUNTIME140.dll"+1234: CC                                            -  int 3
    "VCRUNTIME140.dll"+1235: CC                                            -  int 3
    "VCRUNTIME140.dll"+1236: CC                                            -  int 3
    "VCRUNTIME140.dll"+1237: CC                                            -  int 3
    "VCRUNTIME140.dll"+1238: CC                                            -  int 3
    "VCRUNTIME140.dll"+1239: 0F 1F 80 00 00 00 00                          -  nop [rax+00000000]
    "VCRUNTIME140.dll"+1240: 4C 8B D9                                      -  mov r11,rcx
    "VCRUNTIME140.dll"+1243: 4C 8B D2                                      -  mov r10,rdx
    "VCRUNTIME140.dll"+1246: 49 83 F8 10                                   -  cmp r8,10
    }

     

     

  12. 3 минуты назад, Antonshka сказал:

    А идея отличная у тебя, если бы не ассинхронизация, я бы её и использовал.

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

    В источник (именно) по-идее можно будет записать, отключив на время  repe movsb

    Спойлер
    
    [ENABLE]
    alloc(newmem,2048,"VCRUNTIME140.dll"+122E)
    label(returnhere)
    label(code)
    
    newmem:
    cmp [flag],1   // флаг объявить и регулировать в своём скрипте с потоком
    je code        // при флаге = 1 записать в источник нужные данные
    repe movsb     // как все запишется (флаг = 0) пропустить эту инструкцию.
    
    code:
    pop rsi
    pop rdi
    ret
    jmp returnhere
    
    
    ///////////////////////
    "VCRUNTIME140.dll"+122E:
    jmp newmem
    returnhere:
    [DISABLE]
    dealloc(newmem)
    "VCRUNTIME140.dll"+122E:
    repe movsb
    pop rsi
    pop rdi
    ret
    
    {
    // ORIGINAL CODE - INJECTION POINT: "VCRUNTIME140.dll"+122E
    
    "VCRUNTIME140.dll"+1213: CC                                            -  int 3
    "VCRUNTIME140.dll"+1214: CC                                            -  int 3
    "VCRUNTIME140.dll"+1215: CC                                            -  int 3
    "VCRUNTIME140.dll"+1216: 66 66 0F 1F 84 00 00 00 00 00                 -  nop [rax+rax+00000000]
    "VCRUNTIME140.dll"+1220: 57                                            -  push rdi
    "VCRUNTIME140.dll"+1221: 56                                            -  push rsi
    "VCRUNTIME140.dll"+1222: 49 8B C3                                      -  mov rax,r11
    "VCRUNTIME140.dll"+1225: 48 8B F9                                      -  mov rdi,rcx
    "VCRUNTIME140.dll"+1228: 49 8B C8                                      -  mov rcx,r8
    "VCRUNTIME140.dll"+122B: 49 8B F2                                      -  mov rsi,r10
    // ---------- INJECTING HERE ----------
    "VCRUNTIME140.dll"+122E: F3 A4                                         - repe  movsb
    "VCRUNTIME140.dll"+1230: 5E                                            -  pop rsi
    "VCRUNTIME140.dll"+1231: 5F                                            -  pop rdi
    "VCRUNTIME140.dll"+1232: C3                                            -  ret
    // ---------- DONE INJECTING  ----------
    "VCRUNTIME140.dll"+1233: CC                                            -  int 3
    "VCRUNTIME140.dll"+1234: CC                                            -  int 3
    "VCRUNTIME140.dll"+1235: CC                                            -  int 3
    "VCRUNTIME140.dll"+1236: CC                                            -  int 3
    "VCRUNTIME140.dll"+1237: CC                                            -  int 3
    "VCRUNTIME140.dll"+1238: CC                                            -  int 3
    "VCRUNTIME140.dll"+1239: 0F 1F 80 00 00 00 00                          -  nop [rax+00000000]
    "VCRUNTIME140.dll"+1240: 4C 8B D9                                      -  mov r11,rcx
    "VCRUNTIME140.dll"+1243: 4C 8B D2                                      -  mov r10,rdx
    "VCRUNTIME140.dll"+1246: 49 83 F8 10                                   -  cmp r8,10
    }

     

    Короче нужно тестить.
    Чёй-то у меня голова не варит. :)

  13. 1 минуту назад, Antonshka сказал:

    Мой собственный поток это будет просто обычная инструкция MOV и переменная счетчик.

    Это понятно.

    Выложи скрипт СЕ рядом с 

    VCRUNTIME140.memcmp+EE - F3 A4                 - repe movsb 

    попробую свою мысль скриптом выразить. а то писать долго.

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

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

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