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

imaginary

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

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

  • Посещение

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

    43

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

  1. Только что, Derk сказал:

    Давай в скайпе или дискорде

    Да вроде ничего сложного ведь, смотри к примеру скрипт сгенерировался.

    Спойлер
    
    [ENABLE]
    aobscanmodule(INJECT,cheatengine-x86_64.exe,C3 00 00 00 00 48 8D 64 24 D8 C6)
    alloc(newmem,$1000,"cheatengine-x86_64.exe"+1ABB0)
    
    label(code)
    label(return)
    //Тут регистрируешь метку
    
    newmem:
    //Сюда вставляешь твой код
    
    code:
      lea rsp,[rsp-28]
      jmp return
    
    //Тут задаёшь размер
    
    INJECT+05:
      jmp newmem
    return:
    registersymbol(INJECT)
    
    [DISABLE]
    INJECT+05:
      db 48 8D 64 24 D8
    
    unregistersymbol(INJECT)
    dealloc(newmem)
    

     

    Тебе нужно вставлять свой код в этих местах (это пример). Если уж не получится, то можно дискорд

  2. 7 минут назад, Derk сказал:

    Я написал,но пишет "не все инструкции пригодны к инъекции"

    Странно, что за процесс, для которого ты делаешь? и ещё, должно писать в какой строке ошибка.
    и в AOB скриптах обычно

    jmp return

    А такой метки у тебя как раз и нету, как и exit.

  3. 30 минут назад, Derk сказал:

    Можно ли с помощью кода

    Можно, если ты хочешь его увидеть во время работы процесса, то тебе нужно сделать скрипт.
    Пример:

    Есть инструкция

    mov ecx,[ebx+4]

    Тебе надо знать значение регистра на момент выполнения этого кода, например тебе нужен регистр ebx.
    Делаешь внедрение и метку, в которую будешь записывать регистр в этот момент:
     

    Спойлер
    
    label(EbxChecker)
    registersymbol(EbxChecker) //Регистрируешь метку
    
    yourcode:
    mov [EbxChecker],ebx //Записываешь в твою метку ebx
    
    originalcode:
    mov ecx,[ebx+4]
    
    jmp exit
    
    EbxChecker: //Размер метки, 4 байта
    dd 0

     


    Теперь просто добавляешь в таблицу "EbxChecker"
    и активируешь скрипт, наблюдаешь за значением в таблице - это значение регистра.

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

    А почему не воспользоваться соответствующими командами

    А почему всё надо усложнять и делать 8 байт? Если использует команду mul, значит число 4 байта, значит целое, и в таком случае можно его сразу загружать с переводом и после выгружать:

    Спойлер
    
    //Вариант если множитель float или doble
    fild dword (muller) //Загружаем число 4 байтов с переводом в число с пл запятой
    fmul dword (mult) //Умножаем на множитель который во float
    fistp dword (Куда выгружать готовое) //Выгружаем с переводом в 4 байта
    
    //Вариант если множитель целое число
    fild dword (muller) //Загружаем число 4 байтов с переводом в число с пл запятой
    fild dword (mult) //Загружаем в стек множитель
    fmul st(1) //Умножаем
    fistp dword (Куда выгружать готовое) //Выгружаем число с переводом в 4 байта
    fstp st(0) //Убираем лишнее число из стека (множитель)
    
    muller:
    dd (твоё умножаемое число)
    
    mult:
    //Если float
    dd (float)100 //(умножаем на 100, так и писать в метку (float)100)
    //Если простое
    dd #100 //100
    
    

     


    У меня есть урок по fpu если интересно

  5. 44 минуты назад, Nickson сказал:

    Вот в этой программе не понял, как сделать

    Тут всё просто, тебе нужно использовать функцию "Sleep", то есть - нажимается кнопка, потом происходит "Sleep" после - отжимается кнопка.
    Гляди, вот к примеру код, при нажатии на F12 происходит зажатие пробела на 2 секунды (2000 мс), это заряжает пушку ровно на 65%

     

    Спойлер
    
    F12::
    
    Send, {Space Down}
    Sleep, 2000 
    Send, {Space Up}
    
    Return

     

     

    • Плюс 1
  6. 4 минуты назад, Xipho сказал:

    Не стоит предоставлять сразу готовое решение

    В таком случае:

    В 21.04.2019 в 22:39, Nickson сказал:

    с определенной силой удара

    Ты можешь сделать очень простой скрипт. Ищешь видимую силу удара (ту что показывает справа) она в doble от нуля до одного. Потом по ней ищи настоящую силу удара и на ту инструкцию делай скрипт, а значения задавай какие хочешь. Можешь сделать условия с кнопками хоткеями, нажимаешь одну, ставится например 20, на другую - 50... Кстати, всё это будет моментально и не придётся ждать заряда.

    • Понравилось 1
  7. Это можно просто найти таким образом - ищешь что обращается к координатам персонажа если он пересекает край карты, ведь происходит что нибудь? например не пойти дальше, или отталкивает и тп. В это время смотришь обращения - если появляются новые, с ними и работаешь, смотришь какие там есть проверки на координаты, сравниваемое и будет координата края карты,  и если центр (0,0,0) где нибудь в углу, то ты получаешь размер карты. Если центр в середине ты получаешь половину размера.
    Если ничего не появляется - проверяешь все инструкции что обращаются к координатам игрока, можешь просто НОПить некоторые, и смотреть что происходит при пересечении края. Ну или просто исследовать код и сравнения.

    Способ для CE

  8. 5 часов назад, partoftheworlD сказал:

    А это уже баг/механика игры,  не зависящий от правки инструкций. Это к разработчикам.

    И он идёт пишет разработчикам "Здравствуйте, я тут вашу игру взламываю и тут происходит баг... ...исправьте это безобразье!"

     

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

    mov eax,[eax+8]

    или ищешь как то не правильно, или адрес хранится только в момент обращения а после перезаписывается.

  10. 4 часа назад, Garik66 сказал:

    :D Какие?

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

  11. 5 часов назад, Garik66 сказал:

    Приведи в одному типу:

    пример:

    Зачем такие извращения, после загрузки без разницы float оно или doble, можно сразу работать без всяких временных переменных. Важно только то как будет выгружено в конце

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

    Осилишь самостоятельное создание эффекта "Camera Sway"

    Не вижу тут никакой выгоды... Ладно бы мне свою игру делать надо было.. ?
     

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

    Также осилишь получение Yaw, Pitch, Roll из видовой матрицы 3x3 с обратной конвертацией в неё? А из кватернионов 1x4?

    Если оно мне приспичит то осилю.. Даже человек который ничего не знает о взломах может осилить если оно будет надо ?. Вон у меня в Танках онлайн был скрипт - движение в сторону поворота камеры - то есть танк двигает туда куда смотрит камера. Там непонятно что за поворот, есть 2 значения, одно 2... что то там, другое в это время -2... и они странным образом меняются. Так мне пришлось сначала вычислить одно постоянное используя другое как условие, а потом формулу кривой создать потому что там когда поворачиваешься в бок выходило 67 или вроде того а не 90 градусов. а на 180 и ноль - нормально. Незнаю что это было, может радианы какие а может матрица..) Я наглядно всё беру, не разбираюсь что там - мне главное получить нормальное...
     

  13. 18 минут назад, mumut сказал:

    Мне интересно можно ли в луа скрипте сделать метку.

    Вот таким образом:

    {$lua}
    [ENABLE]
    metka = allocateMemory(4) --Выделяем допустим 4 байта памяти
    unregisterSymbol('lol') --На всякий случай снимаем регистрацию
    registerSymbol('lol',metka) --Регистрируем lol в области metka
    lol = 0
     
    [DISABLE]
    unregisterSymbol('lol')

    После в таблицу можешь добавить 'lol'.

  14. 59 минут назад, Garik66 сказал:

    У ТС вопрос не как в СЕ-асм скрипте это сделать, а как в LUA?

    У него вообще непонятно что за вопрос, в теме одно а в названии другое. И потом, метки это когда адрес помечается ссылкой, а у него переменные в скрипте...?

  15. Многие из вас слышали такие понятия как AIM, автонаведение, автоприцел и тому подобное, когда прицел игрока автоматически наводится на какой нибудь объект.
    В видео показано как сделать такое на LUA, ассемблер ничем не будет отличаться, разве что кучей команд ?.

    В первых четырёх (включая пример) видео - создание и мелкие нюансы.. В 5 просто демонстрация.
    Патроны летят в цель, неровная камера - просто обновления и это не влияет. Попадание зависит от разброса оружия ?.
     

    Видео о поиске значений ♦️:

    Спойлер

     


    Видео о создании и вычислениях ?:

    Спойлер

     


    Видео дополнение ко второму (запись сломалась и потому пришлось доснять тут):

    Спойлер

     


    Обзор первый:

    Спойлер

     


    Обзор второй:

    Спойлер

     


    Ну и скрипт на LUA:

    Спойлер
    
    {$lua}
    [ENABLE]
    OnHit = readPointer('HitUkaz+4') --Получаем адрес указателя с ID на прицеле
    PCam = getAddress('engine.dll+4E05F4') --Получаем адрес Y камеры
    
    local function AngMath(timer) --Функция выполняющаяся таймером
     if(isKeyPressed(VK_LMENU)) then
     if(readInteger(OnHit+11344)<60) then
      --координаты игрока
      PX = readFloat('client.dll+624C58') --X
      PY = readFloat('client.dll+624C5C') --Y
      PZ = readFloat('client.dll+624C60') --Z
      --Цель
      Goal = readPointer('HitUkaz') --Получаем адрес цели
      GX = readFloat(Goal+648) --X
      GY = readFloat(Goal+652) --Y
      GZ = readFloat(Goal+656) --Z
      --Гипотенуза (дистанция до объекта) Y
      DistZ = PZ - GZ + 10 --Дистанция по высоте (пригодится позже)
      Dist = math.sqrt((PX - GX)*(PX - GX)+(PY - GY)*(PY - GY)+DistZ*DistZ)
      AngV = math.deg(math.asin(DistZ / Dist))
      writeFloat(PCam,AngV) --Запись в Y камеры
      --X камеры расчёт
      AngG = math.deg(math.atan((PY - GY) / (PX - GX)))
      if(PX - GX > 0) then
      AngG = 180 + AngG
      end
      writeFloat(PCam+4,AngG) --Запись в X
     end
     end
    end
    
    --Таймер
    mathTimer = createTimer(nil, false) --Создаём выключенный таймер
    mathTimer.Interval = 1 --Задаём ему интервал - 1 (частота выполнений)
    mathTimer.OnTimer = AngMath --Функция которая будет вызываться
    mathTimer.Enabled = true --Включаем таймер
     
    [DISABLE]
    mathTimer.destroy() --Уничтожаем таймер

     


     

    • Понравилось 3
    • Плюс 3
  16. В 28.02.2019 в 08:29, MEDBEDb сказал:

    в какую сторону то копать хотя бы

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

    • Понравилось 1
  17. 43 минуты назад, mumut сказал:

    показать модель ГГ при свободной камере

    В Borderlands я сомневаюсь что это сработает, так как там нету вида от 3 лица, только при просмотре навыков. Но там вероятно статическая модель с анимацией, а ходьба и пр не анимируются, потому что незачем. Так что - вероятно никак. Но если очень хочешь то можешь попробовать поискать что меняется при просмотре древа навыков. (предполагаю что ты конкретно про эту игру так как все время в ней сидишь)

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

    Subterrain.CT

    • Плюс 1
  19. 15 часов назад, TxapH сказал:

    Максимальный

    Почему ты написал в названии "бесконечные значения"? если хочешь получить бесконечные, то впиши вместо цифр туда inf+, будет бесконечность (float только)
    Заместо поиска указателей попробуй сделать скрипт который будет сохранять в метку адрес игрока или какой нибудь выше по списку, и от него получи указатели, таким образом проблем не возникнет. Таких уроков полно, в том числе и на канале есть такой.

    UPD: посмотрю игру, покажу пример

     

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

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

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