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

Pitronic

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

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

  • Посещение

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

    20

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

  1. В 05.04.2019 в 20:47, DarDreams сказал:

    1. Нахожу значение с адресом нажимаю ПКМ "найти указатель на этот Адрес" , ничего не находит

    Посмотри здесь,

    Спойлер

     

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

    • Плюс 1
  2. Доброго времени суток. Я здесь новичок. И хочу не много обнаглеть и предложить урок
    Как вы поняли из названия темы мы будем бороться с DMA при помощи простого скрипта.
    Для чего это нужно? Во первых для начинающих. Есть реверсивный способ поска указателе, но когда 
    указатели многоуровневые иногда случается что указатель допустим пяти, шести уровневый, а найти вероятное значение
    СЕ наотрез отказывается находить уже с третьего уровня, конечно же если грамотно подойти то найти легко, но это не для чайников а чайники тоже хотят взламывать игры. К тому же просто адреса иногда имеют преимущество, выбора горячих клавиш для чита. В скрипте только включить выключить, а в адресе более богатый выбор.
    И так создаём искусственный указатель на примере игры чужой космос 2
    открываем игру, открываем СЕ, открываем процесс в СЕ, проходим первый уровень (первый уровень лёгкий), попадаем на базу.

    Спойлер

    CK-1.jpg

    мы видим у нас 1100 плазмы, плазма в игре одновременно и боеприпасы для супер оружия и как внутри игровая валюта.
    открываем СЕ присоединяемся к процессу ищем как вы знаете 1100. Теперь надо нам её отсеять чтобы отсеять нам надо либо потратить плазму,
    либо пополнить. Для этого кликаем на ракеты

    Что мы там видем? У нас 1100 плазмы, плазма это одновременно боеприпасы для супер оружия и внутри игровая валюта, вводим в поиск 1100 жмём поиск, находим много результатов (это я скриншотить не буду, так как наверняка на форуме эта тема есть), для того чтоб отсеять, нам надо либо потратить плазму, либо пополнить, если жмём минус мы возвращаем ракеты базе, плазмы становиться больше, если жмём плюс, мы покупаем ракеты плазмы соответственно меньше. и так меняем значение, и отсеиваем пока не останеться один адрес, если их несколько, по очереди замораживаем и проверяем какой из нех заморожен(этому учить даже нубов не надо). За тем жмём найти инструкции ббращающиеся к этому адресу, соглашаемся на присоединение отладчика, чтоб появились инструкции покупаем или продаём ракеты.
    получаем много инструкций. жмём остановить.

    Что мы сдесь видим? Мы видим что смещение везде одинаково. Это значит что на указателе будет именно смещение DC, запишем его.Бывают случаи что смещение сложное типа этого [esi+eax*4+14],здесь надо поступить так-открыть калькулятор windows выбрать вид,если на хрюше вид инженерный если от виста и новее вид програмиста, в скопированной дополнительной информации через буфер обмена ищем значение в eax делаем вычисление в хексе, значение eax множаем на 4 и прибавляем 14. Могут быть варианты, что будут ещё инструкции с другими смещеними в разных играх, нам нужны инструкции где их есть большенство.
    жмём на любой из них дополнительная информация, я нажал на первую в моём случаи получилось это

    Спойлер
    
    EAX=00002BF2
    EBX=0592E0F0
    ECX=0545C7D0
    EDX=05563B01
    ESI=0545C7D0
    EDI=0000005A
    EBP=0592E0F0
    ESP=0012FE68
    EIP=0041126A
    
    Вероятный базовый указатель =0592E0F0
    
    00411259 - mov edi,0000005A
    0041125E - jnl 00411342
    00411264 - mov eax,[ebp+000000DC]
    0041126A - test eax,eax
    0041126C - jng 00411342

     

    мы видим Вероятный базовый указатель =0592E0F0 так же видим это значение находиться в EBX, сохраняем всё это в блокноте, позже нам это понадобиться,
    сейчас нам нужен любой динамический адрес, в котором всегда после перезапуска игры будет какое то значение всё равно какое нам по барабану, к стати инструкции ещё не закрываем, в СЕ жмём новый поиск и ищем единицу результатов будет много, скажу вам по секрету всему свету первые пятьсот и больше адресов всегда будут иметь значения, после перезапуска игры они могут меняться, нам это не столь важно, главное что они всегда рабочие, вот из них мы и будем делать искусственный указатель. И так я занёс в моём случае первый адрес в таблицу. первый адрес в таблицу он у меня такой 00020008 вот из него мы будем делать указатель. И так открываем наши инструкции и ту инструкцию которую, скопировали в блокноте выделяем и жмём показать в дизассемблере, выбираем инструменты,в контекстном меню выбираем автоассемблер, там выбираем иньекция (AOB) в показвшемся окошке, соглашаемся с предложенным адресом, затем окно переключиться, в окошко с предлжением назвать код(переменные), я напишу plazma, 
    откроется иньекция кода:

    Спойлер
    
    { Game   : unwrapped.exe
      Version: 
      Date   : 2019-04-18
      Author : Pitronic
    
      This script does blah blah blah
    }
    
    [ENABLE]
    
    aobscanmodule(plazma,unwrapped.exe,8B 85 DC 00 00 00 85 C0 0F 8E) // should be unique
    alloc(newmem,$1000)
    
    label(code)
    label(return)
    
    newmem:
    
    code:
      mov eax,[ebp+000000DC]
      jmp return
    
    plazma:
      jmp newmem
      nop
    return:
    registersymbol(plazma)
    
    [DISABLE]
    
    plazma:
      db 8B 85 DC 00 00 00
    
    unregistersymbol(plazma)
    dealloc(newmem)
    
    {
    // ORIGINAL CODE - INJECTION POINT: "unwrapped.exe"+11264
    
    "unwrapped.exe"+1123A: 83 C4 28           -  add esp,28
    "unwrapped.exe"+1123D: C3                 -  ret 
    "unwrapped.exe"+1123E: 8B CE              -  mov ecx,esi
    "unwrapped.exe"+11240: E8 3B 59 06 00     -  call unwrapped.exe+76B80
    "unwrapped.exe"+11245: 84 C0              -  test al,al
    "unwrapped.exe"+11247: 0F 85 86 08 00 00  -  jne unwrapped.exe+11AD3
    "unwrapped.exe"+1124D: 8B 85 A8 00 00 00  -  mov eax,[ebp+000000A8]
    "unwrapped.exe"+11253: 3B 85 AC 00 00 00  -  cmp eax,[ebp+000000AC]
    "unwrapped.exe"+11259: BF 5A 00 00 00     -  mov edi,0000005A
    "unwrapped.exe"+1125E: 0F 8D DE 00 00 00  -  jnl unwrapped.exe+11342
    // ---------- INJECTING HERE ----------
    "unwrapped.exe"+11264: 8B 85 DC 00 00 00  -  mov eax,[ebp+000000DC]
    // ---------- DONE INJECTING  ----------
    "unwrapped.exe"+1126A: 85 C0              -  test eax,eax
    "unwrapped.exe"+1126C: 0F 8E D0 00 00 00  -  jng unwrapped.exe+11342
    "unwrapped.exe"+11272: 39 BD FC 00 00 00  -  cmp [ebp+000000FC],edi
    "unwrapped.exe"+11278: 0F 8E 32 02 00 00  -  jng unwrapped.exe+114B0
    "unwrapped.exe"+1127E: 6A 04              -  push 04
    "unwrapped.exe"+11280: 8B CE              -  mov ecx,esi
    "unwrapped.exe"+11282: E8 59 58 06 00     -  call unwrapped.exe+76AE0
    "unwrapped.exe"+11287: 84 C0              -  test al,al
    "unwrapped.exe"+11289: 0F 85 B3 00 00 00  -  jne unwrapped.exe+11342
    "unwrapped.exe"+1128F: 8A 4C 24 13        -  mov cl,[esp+13]
    }

     

    Собственно осталось в newmem: написать наш код. Мы будем присваивать нашему искуственному адресу, значение адреса ebx
    newmem:
    mov [00020008],ebx

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

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

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

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