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

d0c

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

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

  • Посещение

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

  1. А ты вообще трейнеры сам пишешь? Или ТОЛЬКО таблицы делаешь и помогаешь всем?

    В дизасме CE есть подсказки, fstp - store single - сохранение из FPU регистра в память, fld - load floating point value - загрузка значения в FPU.

    Порядок такой сначала fld, потом операции типа fadd,fsub,fsubr, а потом сохранение fstp.

    Понятно спс теперь буду в дизасме смотреть))) не замечал подсказок

  2. Эхх не могу тебе положительную оценку поставить, почему-то не могу, пишет исчерпали лимит но я еще НИ разу ничего не ставил...

    Ну если что-то ломать возьмешься ко мне тоже обращайся, мне самому интересно посмотрю может что-то добавлю(вряд ли конечно), ну короче что будешь разбирать можешь писать в личку, создавать темы и звать меня туда, и всё такое.

    Удачи!!!)))

    А я пока попробую разобраться с собаками, если разберусь напишу и ты если разберешься с ними напишешь ок?

  3. А администрацию прошу наградить

    A1t0r'a за пояснения, за скрины, за разжёвывание каждой буквы, за скрипты, за сдержанность ко мне...

    Всем спасибо!!!( A1t0r'y БОЛЬШЕ ВСЕГО).

    Ну если что пишите в этой теме на счёт фильтров.

    И еще A1t0r если что-то новое сделаешь с Shank'ом там скрипт модифицируешь или еще что-нибудь пиши разберём)))

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

  4. Спасибо большое!!!!

    Вот - я немного модифицировал скрипт:

    [ENABLE]
    aobscan(generalscript,D9 5D 70 E8 ?? ?? ?? ?? 8B C8 E8 ?? ?? ?? ?? D9 45 70) //004C53A9
    label(_generalscript)
    registersymbol(_generalscript)
    aobscan(zaplatka,D9 5B 70 D9 86 ?? ?? ?? ?? ?? ?? ?? ?? F6 C4 05 7A 09) //004C6B1F
    label(_zaplatka)
    registersymbol(_zaplatka)
    aobscan(perehod,55 8B EC 51 89 4D FC 8B 45 FC 8B 40 5C 8B E5 5D) //0040E350
    label(exit)
    label(exit2)
    label(originalcode)
    label(originalcode2)
    alloc(newmem,2048)
    generalscript:
    _generalscript:
    jmp newmem
    nop
    nop
    nop
    newmem:
    cmp [ebp+128],4
    je exit
    originalcode:
    fstp dword ptr [ebp+70]
    exit:
    call perehod
    jmp generalscript+8
    zaplatka:
    _zaplatka:
    jmp newmem+30
    nop
    nop
    nop
    nop
    newmem+30:
    cmp [ebx+128],4
    je exit2
    originalcode2:
    fstp dword ptr [ebx+70]
    exit2:
    fld dword ptr [esi+000000D0]
    jmp zaplatka+9
    [DISABLE]
    aobscan(perehod,55 8B EC 51 89 4D FC 8B 45 FC 8B 40 5C 8B E5 5D) //0040E350
    _generalscript:
    fstp dword ptr [ebp+70]
    call perehod
    _zaplatka:
    fstp dword ptr [ebx+70]
    fld dword ptr [esi+000000D0]
    dealloc(newmem)
    unregistersymbol(_generalscript)
    unregistersymbol(_zaplatka)

    Работает так же проверял

    Эхх есть же такие люди)))...

  5. Ну в общем скрипт рабочий.

    P.S жду скрины

    Только что убивал собаку как ты и сказал с 50 комбо начала раниться

    И еще один вопрос возник - а почему собаки то дохнут только после 50 ударов?? оО

  6. Да скрины пожалуйста скиньте скинь а то очень сложно понять(я недавно только начал этим заниматься).

    И процесс занесения в структуру тоже выложи... Буду ОООООЧЧЧЧЧЧЧЧЧЧЧЕЕЕЕННЬЬЬЬ благодарен.

    Не знаю как без скриптов, но здоровяки и собачки мочатся с комбо 30-60, либо гранатами.

    1) Всмысле без скриптов?

    2) Только что попробовал гранатами - тоже не получается мы оба бессмертные...

    А вот теперь убил - как это понимать...

  7. Добавлю:

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

  8. Сейчас пробую на этой)

    Кажись поддалось)

    В структуре по смещению +128h у Шенка всегда 4, у противников 0.

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

    newmem:
    cmp [ebp+128],4
    je exit

    originalcode:
    fstp dword ptr [ebp+70]

    exit:
    call 0040E350
    jmp returnhere

    004C53A9:
    jmp newmem
    nop
    nop
    nop
    returnhere:

    [DISABLE]
    dealloc(newmem)
    004C53A9:
    fstp dword ptr [ebp+70]
    call 0040E350

    Как и в прошлый раз не доломал я и d0c. Здоровье всё равно отнималось, это происходило из-за ранений от комбо атак противников. Заплатка:

    [ENABLE]
    alloc(newmem2,2048)
    label(returnhere2)
    label(originalcode2)
    label(exit2)

    newmem2:
    cmp [ebx+128],4
    je exit2

    originalcode2:
    fstp dword ptr [ebx+70]

    exit2:
    fld dword ptr [esi+000000D0]
    jmp returnhere2

    004C6B1F:
    jmp newmem2
    nop
    nop
    nop
    nop
    returnhere2:

    [DISABLE]
    dealloc(newmem2)
    004C6B1F:
    fstp dword ptr [ebx+70]
    fld dword ptr [esi+000000D0]

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

    P.S.


    004C6B37 - D9 5B 70 - fstp dword ptr [ebx+70] - лечение
    004841E4 - FF 48 10 - dec [eax+10] - уменьшение гранат

    P.S.S. Можно было попробовать заморозить гранаты и привязываться к ним, но память под них в данном случае выделяется в другом месте. Так что не вариант)

    Скрипт 2 в 1

    [ENABLE]
    alloc(newmem,2048)
    label(returnhere)
    label(originalcode)
    label(exit)
    label(returnhere2)
    label(originalcode2)
    label(exit2)

    newmem:
    cmp [ebp+128],4 - нет ранений от атак
    je exit

    originalcode:
    fstp dword ptr [ebp+70]

    exit:
    call 0040E350
    jmp returnhere

    newmem+30:
    cmp [ebx+128],4 - нет ранений от комбо-атак
    je exit2

    originalcode2:
    fstp dword ptr [ebx+70]

    exit2:
    fld dword ptr [esi+000000D0]
    jmp returnhere2

    004C53A9:
    jmp newmem
    nop
    nop
    nop
    returnhere:

    004C6B1F:
    jmp newmem+30
    nop
    nop
    nop
    nop
    returnhere2:

    [DISABLE]
    dealloc(newmem)
    004C53A9:
    fstp dword ptr [ebp+70]
    call 0040E350

    004C6B1F:
    fstp dword ptr [ebx+70]
    fld dword ptr [esi+000000D0]

    Теперь самое интересное: если сделать гранаты бесконечными, то после гибели персонажа скрипт не работает)))

    А вот на счет заплатки, Вы где-то сверху писали то что поймали еще какую-то(вторую) инструкцию которая отвечает за уменьшение здоровья, как вы ее нашли? Последовательностью каких действий?

    А еще можете скинуть скрин анализа структур?

    И как вы написали адреса в анализаторе структур?

    1 группа:

    1 Адрес) Адрес здоровья шанка

    2 Адрес) кол-во гранат

    2 группа:

    1 Адрес) здоровье enemy1

    2 Адрес) здоровье enemy2 ???

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

    Добавлю кое-что.

    Вы по-моему что-то упустили(или может у меня что-то тупит) в первом уровне когда выходишь из здания там есть большой человек и у него хп столько же сколько у shank'a, он тоже бессмертный опять же проблема 1 уровень пройти невозможно...(такая проблема только с врагом под именем "Big" с другими здоровяками проблем нет)

  9. Хммм... А зачем же это? Если там ниже в скрипте и так показано откуда будет jmp newmem. Ну да ладно - это не важно.

    И вы сказали что привязать к какому-то уникальному идентификатору которого нет у врагов верно?

    Я попробовал но ничего не получилось(пробовал привязать к гранатам, можете наглядно показать? Можно на любой игре.)

  10. И еще спрошу кое-что(наверное не по теме) есть код:

    25442dbb7936df68829c15feb633642c.png

    Я выделил красным то что мне не понятно - alloc(newmem.2048,а это тут для чего????) - ведь без этого не работает

    Вряд ли ID персонажа имеет тип float, нужно искать целое 1-4 байт.

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

    Ну я сначала искал 4 байта но ничего не нахожу(4 байт просто нет! а если и есть то там вообще фигня написана никак не относящаяся к ID

  11. d0c, здоровье всё равно отнимается в этом скрипте или в каком-то другом месте. см. пост #9

    (float)60 у Шенка всегда?

    В том то и дело у него оно почему-то меняется но как-то странно 60 потом другое, потом опять другое, и опять 60 - как-то так(и у врагов то же самое)

    Короче, после каждого удара ID игрока меняется например сначала у shank'a ID (float)60, после удара уже (float)109.6764896796; потом еще удар и (float)80; еще удар и обратно (float)60

    Что же делать?

    как-то же без указателей можно по-любому

  12. Вот что нашлось: стоит обратить внимание на 002C

    dc47e4753f5249e4fc7886503c578b8a.png

    А вот примерный скрипт:

    [ENABLE]

    alloc(newmem,2048)

    label(returnhere)

    label(originalcode)

    label(exit)

    newmem:

    cmp [ebp+2C],#15

    jne exit

    originalcode:

    fstp dword ptr [ebp+70]

    exit:

    call 0040E350

    jmp returnhere

    004C53A9:

    jmp newmem

    nop

    nop

    nop

    returnhere:

    [DISABLE]

    dealloc(newmem)

    004C53A9:

    fstp dword ptr [ebp+70]

    call 0040E350

    Но не всё так радужно. После смерти, например от падения, эти цифры меняются, но для врагов равны между собой.

    Не вижу другого варианта кроме как проходить по цепочке указателей и сравнивать с ebp.

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

    Сделал как у вас в скрипте Вы там написали смещение 2С как это было в анализаторе структур, я сделал так же но результата 0, потом прибавил свое смещение к 70 в HEX получилось 7С и скрипт работает!!!! НО через раз почему-то т.е. 60% ударов не наносят урон, а остальные 40% наносят урон. Что же делать?

    Вот что получилось

    [ENABLE]
    alloc(newmem,1024)
    label(exit)
    label(returnhere)
    label(shank)
    004C53A9:
    jmp newmem
    nop
    nop
    nop
    returnhere:
    newmem:
    cmp [ebp+7C],(float)60
    je shank
    fstp dword ptr [ebp+70]
    jmp exit
    shank:
    nop
    nop
    nop
    exit:
    jmp returnhere
    [DISABLE]
    004C53A9:
    fstp dword ptr [ebp+70]
    dealloc(newmem)

    Может что-то просто не правильно?

  13. Попробуй через АА(автоассемблер) т.е. Просто замени стандартную инструкцию жизни или денег на свою!

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

  14. Именно v1.0, а не v1.0u3?

    Мне кажется это неважно так как скрипт пишу aobscan'ом.

    С начало попробуй так:

    1.Найди адрес жизней своего героя.

    2.Сделай брякпоинт на запись и потеря немного жизней.

    3.Появится инструкция отвечающая жизни твои и скорее всего врагов.

    4.Переходим в отладчик и жмем правой кнопкой мыши на эту инструкцию

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

    Таким образом ты узнаешь адреса врагов и добавь их в таблицу.

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

    с твоей жизнь и жизнью врагов.

    6.Если среди них есть инструкция которой нет у врагов, то тебе возможно не придётся делать фильтр.

    7.Если они все одинаковые тогда ищи на свой адрес здоровья, многоуровневый указатель.

    И пиши скрипт сним.

    Спасибо большое!!

    Фу, блин нашёл! Вот:

    0076584C=>[...+9A4]=>[...+64]=>начало_структуры_игрока+70=здоровье

    или

    630B5023=>[...+9A4]=>[...+64]=>начало_структуры_игрока+70=здоровье

    Заморозил - бессмертен, враги дохнут)

    Скрипт, уж извините, писать лень)

    Ммм.. Если не сложно объясните что это? Я новичок неделю назад начал трейнеры делать.

    P.S Пока что только умею делать скрипты с помощью aobscan...

    Вот пока такое надумал

    но как я уже говорил у всех жизнь бесконечная буду дальше делать как вы подсказали

    [ENABLE]
    aobscan(infhsh,D9 5D 70 E8 ?? ?? ?? ?? 8B C8 E8 ?? ?? ?? ?? D9 45 70)//004C53A9
    label(_infhsh)
    registersymbol(_infhsh)
    aobscan(perehod,55 8B EC 51 89 4D FC 8B 45 FC 8B 40 5C 8B E5 5D C3) //0040E350
    label(exit)
    alloc(newmem,1024)

    infhsh:
    _infhsh:
    jmp newmem
    nop
    nop
    nop
    newmem:
    nop
    call perehod
    exit:
    jmp infhsh+8

    [DISABLE]
    _infhsh:
    fstp dword ptr [ebp+70]
    call 0040E350
    dealloc(newmem)
    unregistersymbol(_infhsh)

    С начало попробуй так:

    1.Найди адрес жизней своего героя.

    2.Сделай брякпоинт на запись и потеря немного жизней.

    3.Появится инструкция отвечающая жизни твои и скорее всего врагов.

    4.Переходим в отладчик и жмем правой кнопкой мыши на эту инструкцию

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

    Таким образом ты узнаешь адреса врагов и добавь их в таблицу.

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

    с твоей жизнь и жизнью врагов.

    6.Если среди них есть инструкция которой нет у врагов, то тебе возможно не придётся делать фильтр.

    7.Если они все одинаковые тогда ищи на свой адрес здоровья, многоуровневый указатель.

    И пиши скрипт сним.

    Проверил как вы сказали. Придётся делать фильтр так как они получают доступ к одной инструкции.

    А многоуровневые указатели искать не хочу не удобно их использовать. С инструкциями получше.

    Ну а на счёт ID игрока поможете?? как его находить? и сверять?

  15. Как создать фильтр в игре на жизнь? Т.е. Когда я заменяю инструкцию нопом на уменьшение жизни то бессмертные становятся все враги и я! Я знаю что надо сделать какой то фильтр с помощью cmp но не знаю как, надо еще и какой-то айди игрока находить а как это сделать?

    Искал на форуме темы с фильтрами нашел темы НО! ни в одной из этих тем я не нашел подробного описания, а только готовые скрипты.

    В гугле тоже искал вообще находит какую-то бредятину.

    Пожалуйста помогите и желательно подробно, с примерами, скриншотами.

    Игра: Shank v1.0

  16. Чтобы добавлялись при нажатии на кнопку, надо отлавливать инструкцию которая чаще всего получает доступ к деньгам т.е. На адрес ставишь бряк на доступ и там иногда есть инструкции которые без каких либо действий в игре получают доступ к твоему адресу по 20-200 запросов в секунду бывает по разному

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

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

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