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

partoftheworlD

Пользователи+
  • Постов

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

  • Посещение

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

    172

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

  1. Его доработать, чтобы восстанавливал значения после выключения и будет все хорошо.

     

     

    Спойлер
    
    { Game   : Borderlands2.exe
      Version: 
      Date   : 2019-01-18
      Author : Alexander
    
      This script does blah blah blah
    }
    
    [ENABLE]
    
    aobscanmodule(pBase,Borderlands2.exe,8B 06 8B 4D EC 8D 04 88 85 C0 0F 84 ? ? ? ? 8B 55 C0 89 10 E9 ? ? ? ? 3C 02 75 5F 8B 46 1C 8B 4E 20 89 45 EC 40 89 46 1C 3B C1 7E 46) // should be unique
    alloc(newmem,$1000)
    
    label(code)
    label(return)
    
    newmem:
    
    code:
      mov eax,[esi]
      push edi
      push ebx
      mov edi, eax
      mov ebx, eax
      add ebx, 30
      mov ebx, [ebx]
      add ebx, A4
      mov ebx, [ebx]
      mov [ebx+580],(float)9999
      mov [ebx+5A8],(float)9999
      mov [ebx+5D0],(float)9999
      mov [ebx+5F8],(float)9999
      mov [ebx+620],(float)9999
      mov [ebx+648],(float)9999
      add edi, 2C
      mov edi, [edi]
      add edi, A4
      mov edi, [edi]
      mov [edi+4C8],(float)9999
      mov [edi+4A0],(float)9999
      mov [edi+4B4],(float)9999
      mov [edi+4DC],(float)9999
      mov [edi+4F0],(float)9999
      mov [edi+464],(float)9999
      mov [edi+478],(float)9999
      mov [edi+450],(float)9999
      mov [edi+374],(float)9999
      mov [edi+57C],(float)9999
      mov [edi+540],(float)9999
      mov [edi+554],(float)9999
      mov [edi+568],(float)9999
      mov [edi+52C],(float)9999
      mov [edi+590],(float)9999
    
      pop ebx
      pop edi
      mov ecx,[ebp-14]
      jmp return
    
    pBase:
      jmp newmem
    return:
    registersymbol(pBase)
    
    [DISABLE]
    
    pBase:
      db 8B 06 8B 4D EC
    unregistersymbol(pBase)
    dealloc(newmem)

     

     

  2. У каждого игрока, есть инвентарь, но так же существует скрытый сундук в котором лежит ключ, кто первый найдет ключ, то получит Hot Lava в виде подарка в стиме.

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

     

    Ограничений по использованию программ и техник: Нет.
    Ключ формата: [A-Z0-9_]{28}

     

    Решение отправлять в личку, в сообщении должен содержаться скрин массива со структурами, победная строка и описание процесса поиска.

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

     

     

    69826980B213AB9D0C3E2D4BCA220E3816108A23.7z

    Ссылка на случай, если файл не качается с форума.

  3. Можно удалить, если не интересно.

     

    Тогда напишу такой же туториал для радара на примере Titanfall 2. (чисто ради того, чтобы заинтерисовать радаром.)

     

    Перед тем как мы приступим нам понадобится:

    1. Radare2

    2. Более менее прямые ручки.

    3. Хорошая внимательность.

    Для начала открываем консоль, пописываем:

    radare2.exe <путь к файлу>

    после того как загрузиться файл, необходимо будет его проанализировать, для этого  пишем:

     

    aa

    и после

    aac

    Первая команда объявляет точку входа как функцию, а вторая команда анализирует вызовы функций.

    Для поиска по строке(m_iHealth) надо будет ввести такую команду:

     

    / m_iHealth

    Как только найдется строка, нужно будет посмотреть все перекрестные ссылки для этого пишем:

     

    axt hit0_0

    Сама команда ищет данные перекрестных ссылок от адреса по которому была найдена строка.

    На выходе получаем информацию о перекрестных ссылках:

     

    sub.should_never_see_this_0 0x1800e00ad [DATA] lea rdx, str.m_iHealth
    sub.should_never_see_this_610 0x180130b2f [DATA] lea rdx, str.m_iHealth
    sub.should_never_see_this_780 0x180168943 [DATA] lea rdx, str.m_iHealth
    sub.should_never_see_this_540 0x1802bd680 [DATA] lea rdx, str.m_iHealth
    sub.should_never_see_this_9e0 0x180582af8 [DATA] lea rdx, str.m_iHealth
    sub.should_never_see_this_c60 0x180584f37 [DATA] lea rdx, str.m_iHealth

    Выбираем любую понравившуюся строку и выводим дизассемблерный листинг по выбранному адресу

     

    [0x180807f5c]> pd 6 @ 0x1800e00ad
    |           0x1800e00ad      488d15acd67c.  lea rdx, str.m_iHealth ; hit0_0 ; 0x1808ad760 ; "m_iHealth"
    |           0x1800e00b4      488d0df5a6b1.  lea rcx, [0x180bfa7b0]
    |           0x1800e00bb      41b890030000   mov r8d, 0x390             ; 912
    |           0x1800e00c1      48897c2428     mov qword [local_28h], rdi ; arg2
    |           0x1800e00c6      48897c2420     mov qword [local_20h], rdi ; arg1
    |           0x1800e00cb      e890f00e00     call fcn.1801cf160

     

    0x390 наше смещение на m_iHealth.

     

    Команда:

    pd 

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

     

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

    • Понравилось 1
    • Плюс 2
  4. В зависимости от ключа шифрования значения,  шифрованное значение может как увеличиться, так и уменьшаться. Поэтому надежней всего искать неизвестное 4 байта изменилось/не изменилось.

     

    Спойлер
    
    #Пример кода шифрования значения с ключем 0x66
    a = 1000
    
    for i in range(1,20):
        print "{} = {}".format(a - i, hex((a - i) ^ 0x66))
    
    
    ====================================================================
    
    999 = 0x381
    998 = 0x380
    997 = 0x383
    996 = 0x382
    995 = 0x385
    994 = 0x384
    993 = 0x387
    992 = 0x386
    991 = 0x3b9
    990 = 0x3b8
    989 = 0x3bb
    988 = 0x3ba
    987 = 0x3bd
    986 = 0x3bc
    985 = 0x3bf
    984 = 0x3be
    983 = 0x3b1
    982 = 0x3b0
    981 = 0x3b3

     

     

  5. 8 минут назад, Stigmaer сказал:

    у меня этой проблемы нет

    У нас тут тоталитарный режим, аватарки по карточкам можно ставить, максимальный размер 0,49 мб на файл, если картинка больше по размеру, надо помогать форуму в развитии и с первой премии сможешь установить какой захочешь файл.

  6. Если все совсем плохо с игрой, можно попробовать извращения, сравнить стек вызовов у игрока и противника и если они отличаются(например из разных мест вызывается функция нанесение урона), то фильтровать по адресу возврата. Например, 

     

    cmp [esp+размер кадра стека + количество положеных в стек регистров в прологе], адрес возврата (адрес в какую функцию вернуть выполнение кода, уникальный вызов дяя игрока)
    je code
    //ohk для противников
    code:
    //бессмертие

    Если с адресами, то есть несколько инструкций, которые вызывают одну функцию из разных мест для игрока и NPC, значит адрес возврата будет уникальный для игрока. Возьмем к примеру адрес возврата игрока 0xDEADF00D, для NPC 0xDEADFACE, внутри вызываемой функции они будут иметь одинаковое смещение по стеку к примеру 0x44(размер кадра стека) + 4 байта на сохраненный адрес кадра стека функции откуда происходил вызов + 4 байта на адрес куда вернуть выполнение кода, после вызова функции.

     

    //cmp [esp+0x44+4+4], 0xDEADF00D
    cmp [esp+0x4C], 0xDEADF00D
    
    je code
    //ohk для противников
    code:
    //бессмертие

     

  7. 37 минут назад, Alex2411 сказал:

    у меня  не получаеться

    Получи адрес который работает с этой инструкцией 

    fld qword ptr [eax+40]

    А после ставь бряк на доступ по найденному адресу, должны появиться ещё инструкции работающие с этим адресом и пробуй делать инжект на них. Так же, можно найти откуда берется значение в адресе [eax+40] и использовать скрипт для записи в адрес, который будет писать значение в [eax+40].

  8. 46 минут назад, qymb сказал:

    только я не могу понять, почему при добавлении [400000 + 005352B0] -> 02C0C370 ?

    Указатель. Адрес  [4000000 + 005352B0] указывает данные внутри 45352B0, которые равны 0x2C0C370.

    • Плюс 1
  9. 2 часа назад, Garik66 сказал:

    Ничего удивительного, я как минимум для двух игр делал фильтры по esp (и работала всегда и у всех)

    Проблема была только в том что по esp в зависимости от ОС отличался на 8.

    По идее это сравнение выглядит как сравнение с esp и адресом, но кадр стека обычно выделяется случайно, поэтому если эта проверка работает, то либо нереальное везение, либо я что-то не понимаю в работе стека. Вот для примера:

     

    Спойлер

    image.thumb.png.fcec5c2b70e5e410f3cd5c930cac90cf.png

     

  10. Вызови функцию, которая меняет владельца машины, декомпилированные скрипты игры в интернете есть, архитектура самп позволяет клиентом влиять на других клиентов.
     

    27 минут назад, TimaS сказал:

    Я искал, bool значение , которая если 1 - то игрок в машине, если 0 - то игрок не в машине

    Я тоже написал скрипт, так же, которая делает всегда 1.

    Но игра вылетает

    Какое-то рукоблудство с заскоком обмануть серверную часть игры.

  11. 13 часов назад, AlienJesus сказал:

    В том и дело, что не работает.. вот видео, потом переделал на SendInput, всё тоже самое..

    Тогда остаётся отправлять консольную команду в игру, через твоё приложение( подобная тема была на форуме)

     

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

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

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