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

Akama

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

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

  • Посещение

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

    16

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

  1. Как всегда активирующий скрипт + указатели.

    За основу взят скрипт от Recifense + добавил указатель на ману героя + добавил функции бесконечного строительства и бесконечной маны.

    Все функции лень описывать, покажу скрин со всеми.

    9710a5b0b2ea193d5c0a0932b04f41de.png

    Скрипт работает со всеми версиями, ибо сделан с помощью aobscan.

    Скачать

    Зеркало

    • Плюс 3
  2. Никто ничего не путает. Публикация файлов на форуме это временная мера.

    если так, то зачем вводить какие-то правила публикации вообще? их же не будет потом на форуме, на сколько я понял.

  3. Кажется многие путают предназначение сайта и форума.

    У меня такое предложение - сделать как на cheatengine.org:

    сайт - для таблиц и софта.

    форум - для общения и обсуждения таблиц.

    ввод дополнительных правил и цензуры форуму на пользу не пойдёт ИМХО.

  4. Таблица для игры Rage.

    Возможности:


    • бессмертие
    • быстрое убийство
    • без перезарядки
    • гранаты, бумиранги и тд.* (не используйте, находясь в машине)
    • ускорение*
    • броня транспорта*
    • добавить 100$

    *-бесконечное

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

    Скачать

    Зеркало

    Ещё зеркало

    • Плюс 3
  5. Решил написать статью о том, как правильно скрипты писать. Она не призвана научить вас писать скрипты с нуля "шоб работало". Пишу лишь для того, чтоб народ понял как грамотно делать ту или иную функцию, и выглядело это красиво.

    И так - по порядку:

    1. Бессмертие.

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

    Очень любит подобными вещами заниматься Grom-Skynet, из-за чего его функции выглядят слегка "колхозно".

    mov [eax+смещение]#999999 //а то и больше девяток, сколько смелость позволит )))

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

    Грамотнее всего в данном случае либо найти максимум здоровья и присвоить его текущему здоровью (не полиниться и найти есть ли такой), или просто занопить. Поверьте, визуально это будет выглядеть более эстетично.

    Если есть максимум здоровья, то сделать чит с его помощью проще простого. Предположим, что текущее значение здоровья это еах+04, а максимальное значение еах+08, тогда:


    push [eax+08] //запоминаем значение максимума
    pop [eax+04] //восстанавливаем его в текущее здоровье

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

    fst [eax+08]

    если значения максимума нет, то нопить функции можно таким способом


    [enable]
    db 90,90,90,90 //в зависимости от того, сколько байт занимает исходная инструкция
    [disable]
    db 45,FA,25,65 // просто оригинальные байты

    2. Стрельба без перезарядки

    В данной ситуации ищется кол-во патронов в обоиме и изменяется, но опять таки не на 999 (и снова Grom-Skynet здесь мастак это делать).

    От такого кол-ва патронов игра так же начнёт тупить и думать, а можно ли перезарядку делать или нет (обоимы то разные).

    Такая функция делается следующим образом, предположим, что кол-во патронов это еах+10.

    Вот так делать НЕ ПРАВИЛЬНО:


    mov esi,#999
    mov [eax+10],esi //родной кусок кода

    А вот так ПРАВИЛЬНО:


    inc esi //увеличивает значение esi на 1
    mov [eax+10],esi //родной кусок кода

    ИЛИ


    add esi,1 //в данном случае нужно указывать на сколько увеличить esi
    mov [eax+10],esi //родной кусок кода

    Значение патронов в обоиме будет всегда максимально и гемора будет меньше в будущем.

    3. Деньги (или ещё какой-нить шмот)

    И опять сами-знаете-кто любит присвоить деньгам значение 9999999 (денег же много не бывает).

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

    Я предпочитаю в данном случае либо морозить значение денег на определённой отметке, чтоб ниже его не опускалось (например денег может быть и 51862, и 56923, но ниже 50000 не опустится), либо просто функцию добавления денег (+1000 золотый например).

    Если хотите, чтоб значение не опускалось ниже 50000, то нужно отлавливать функцию, которая записывает новое значение в адрес денег. Пусть еах+65 это деньги.


    mov [eax+65],ebx //именно так эти функции выглядят.

    то скрипт в данном случае будет выглядеть так:


    cmp ebx,#50000
    jge originalcode
    mov ebx,#50000
    originalcode:
    mov [eax+65],ebx

    Т.о. меньше, чем 50000 денег не станет как ни старайтесь...

    Если хотите добавлять 1000 денег, то нужно отлавливать функцию, которая чаще всех будет получать доступ к деньгам.

    mov ebx,[eax+65] //функция доступа выглядит примерно так...

    Далее нужно ввести некую переменную (пусть будет _money), и навесить на неё хоткей чтоб тот присваивал переменной значение 1.

    Скрипт будет выглядеть так.


    cmp dword ptr [_money],1
    jne originalcode
    add [eax+65],#1000
    mov [_money],0 //чтоб бесконечного цикла не получилось...
    originalcode:
    mov ebx,[eax+65]

    на нажатию хоткея добавится 1000 денег (как резко зависит от того, как часто инструкция получает доступ к деньгам)

    4. Прыжки

    Чем меньше флагов в скрипте - тем лучше, но полностью от них отказаться не возможно. По-этому свидём использование их к минимуму.

    Тут уже сам Dark Byte зачем-то в стандартном шаблоне навтыкал ненужные флаги - а именно exit и originalcode. Покажу вам наглядно как обойтись без них.

    Подопытным кроликом я использовал игру The Elder Scrolls 3: Morrowind (не кидайтесь плз фикалиями, знаю что старьё).

    По-мимо прыжков на флаги можно использовать прыжки через байты.


    jmp +3
    je +3
    jne +3

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

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


    [ENABLE]
    alloc(newmem,2048)
    label(returnhere)

    newmem:
    fstp dword ptr [ecx+08]
    push [ecx+04]
    pop [ecx+08]
    ret 0010
    jmp returnhere

    "Morrowind.exe"+122F:
    jmp newmem
    nop
    returnhere:


    [DISABLE]
    dealloc(newmem)
    "Morrowind.exe"+122F:
    fstp dword ptr [ecx+08]
    ret 0010
    //Alt: db D9 59 08 C2 10 00

    и знаю, что в ecx+0c хранится идентификатор героя 746464.

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

    Вычисляется кол-во байт следующим образом. в данном случае мне нужно перепрыгнуть push [ecx+04] и pop [ecx+08].

    1. Активируем скрипт каков он есть.

    2. смотрим в отладчике что скрипт делает теперь и замечаем байты нужных нам строк.

    30b1042f21cc275f1cd1d3643b44c4e6.png

    Я обвёл красным те байты, которые мне нужно перепрыгнуть. Судя по картинке их 6 (шесть круглешков)

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


    [ENABLE]
    alloc(newmem,2048)
    label(returnhere)

    newmem:
    fstp dword ptr [ecx+08]
    cmp [ecx+0C],746464
    jne +6 // если не равно перепрыгнуть через 6 байт.
    push [ecx+04]
    pop [ecx+08]
    ret 0010
    jmp returnhere

    "Morrowind.exe"+122F:
    jmp newmem
    nop
    returnhere:


    [DISABLE]
    dealloc(newmem)
    "Morrowind.exe"+122F:
    fstp dword ptr [ecx+08]
    ret 0010
    //Alt: db D9 59 08 C2 10 00

    как видите обошёлся двумя флагами (один из которых и флаг и выделение памяти под скрипт).

    • Плюс 5
  6. На счёт бесконечной ходьбы и тд уже давно всё изобретено, вот таблица - изучай...

    На счёт остального, я так и не въехал зачем тебе отлавливать функции нажатия клавишь, но если не трудно, то объясни для тех, кто в танке )))

    Shogun2_V110_AOB_V21.zip

  7. Таблица на СЕ 6.1

    4 функции:

    - бессмертие

    - убийство с одного выстрела

    - бесконечные патроны

    - замедление времени.

    Один активирующий скрипт, а остальное переменные, соответственно если поставить 1, то функция включится, если 0, то не будет работать...

    В принципе можно ещё функцию с опытом сделать, но там её нет ибо лень было приделывать. Если есть желание, то можете сделать её сами, функция, которая работает с опытом, у меня сохранена...

    F.E.A.R. 3.rar

    • Плюс 3
  8. по видимому там просто сделан фильтр типа "свой-чужой" и вместо загрузки текущего здоровья делается загрузка максимального здоровья.

    Надо бы статейку написать, вещи элементарные, но вопросы вызывают у народа...

  9. Данной мне властью выкладываю здесь сиё творение, дабы не испытывал нужды человек в поисках инструкции по байтам.

     

     
    sl = AOBScan("ХХ ХХ ХХ ХХ ХХ");
    
    if(sl == nil) then
        print("No code found!");
    else
       j = stringlist_getCount(sl);
       print("Found:",j);
       for i = 1, j do
          print(stringlist_getString(sl,i-1));
       end
       object_destroy(sl);
    end
    

     

    Вместо букв "Х" вписываете нужные байты (не обязательно 5 пар, их может быть больше). Если что-то найдёт, то скажет Found: кол-во_адресов и список их, в обратном случае скажет No code found!

    Код вставлять в Lua Engine, как его вызывать думаю знаете...

    • Плюс 7
  10. в принципе просто найти функцию при изменении z-координаты и поставить умножение например на 2 или 3. Но при этом нужно предусмотреть тот вариант, что игрок может перемещаться по z не только прыгая, но и просто поднимаясь вверх (по лестнице или лифту)...

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

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

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