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

holy

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

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

  • Посещение

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

    2

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

  1. 31 minutes ago, Garik66 said:

    Странно у меня всё работает

    Выключи скрипт и нажми кнопку Inc value или Dec value. Программа вылетит. У меня так.

    Но не в этом суть, это не важно ) У меня Cheat Engine 6.5.1 может по этому.

     

    P.S. У тебя наверно какой-то плагин имеется в CE, ибо у тебя Lua Engine ругается. Либо скрипт либо ещё что-то, я не знаю )

  2. Just now, SpiritWithim said:

    Эт на Win XP указатель

    Адрес не находится в адресном пространстве программы. Ты нашел не тот адрес.

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

  3. 3 minutes ago, Garik66 said:

    почему именно тебе нужны указатели? 

    Потому-что скрипт написать в разы проще ) В чем тут тогда соревнование? Кто быстрее скачает файл и запустит CE?

    Иногда, когда реальное расположение значения невозможно поймать, как например в TrainMe Maze, я не прошу находить адреса, так как в том TrainMe реальное значение бегало по массиву и не имело статичного адреса.

    Именно для этого и присутствует пункт "Задание". В данном TrainMe всё просто, главное подумать в нужном направлении, и решив задание, ты не скажешь что оно было странным или глупым )

    Поверь, правильный ответ у данного TrainMe действительно очень прост, главное понять код и всё станет ясно :)

     

    16 minutes ago, Garik66 said:

    В табличке куча адресов с указателями (найдены автопоиском СЕ, я не много из них выбрал, их там очень и очень много)

    и скрипт  "pointer" с прикреплённым адресом "Value" , активируй скрипт, измени значение в трейнми и в адресе будет

    значение (это способ, который я обычно использую). 

    • К сожалению, ни в одном из указателей не оказалось того значения :(
    • Скрипт работает, но после выключения скрипта и изменения значения в программе - программа крэшится, скорее всего конфликтуют твои имена pointer и Pointer во время DISABLE (отключения) скрипта, изменил имя с Pointer на PointerS и скрипт стал корректно выключаться.
    • Однако если захочешь, то подумай над тем, как узнать реальный адрес :)
  4. Здравствуйте :)


    Написал относительно простенький TrainMe. Не смотря на его простоту, в нем есть то, с чем новичек сразу не справится :)

     

    Задание:

    - Найти указатель на значение (не забудьте проверить его, после перезапуска программы) и скинуть CT файл (мне будет интересно взглянуть на найденные вами адреса). Как вы это сделаете, откуда возьмете - не важно, главное чтобы из адресного пространства программы.

     

    Скачать

  5. On 28.03.2010 at 6:06 PM, MasterGH said:

    А теперь разберём инструкции подробнее:

    Unit1.cpp.32: if (fhealth>10) {fhealth-=5;};

    00401CF8 D90598414000 fld dword ptr [$00404198] //грузим в стек FPU 100.0

    00401CFE D9052C1D4000 fld dword ptr [$00401d2c] // грузим в стек FPU 5.0

     

    Кажется тут в комментариях должно было быть "грузим в стек FPU 10.0" вместо "грузим в стек FPU 5.0"

  6. Garik66, скрипт отлично работает :)

     

    1 hour ago, gmz said:

    упх фейл, хоть бы твикнул как следует

    Я бы и не смог сделать хорошей защиты :)

    Антиотладка, это таже самая АПИ функция, только копия (чтобы не ставили BP)

    А упаковал чтобы статическим анализом не пользовались ) Изменил имена секций чтобы UPX'ом не распаковали (только отладчиком).

     

     

  7. NullAlex,

    Spoiler
    7 minutes ago, NullAlex said:

    Накидал бота для клика, и ушел пить чай

     

    Ахахахаха :D

    Твоё решение порадовало

     

    7 minutes ago, NullAlex said:

    и не пользоваться скриптами

    Скриптами можно, главное не заморозить значение ;)

  8. 14 minutes ago, Garik66 said:

    мне влом искать, как это поправить

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

     

    Буду рад если кто-то будет пробовать тоже поковырять этот трейнми. Со временем выложу свой вариант решения :)

  9. 14 minutes ago, Garik66 said:

    СЕ постоянно ругается при подключении к ним

    Это не из-за названия.

    Мой CE не ругался ни на один из трейнми, даже на этот не ругается :(

    Я бы не стал скидывать что-то подобное.

     

    14 minutes ago, Garik66 said:

    Извини я не понял задачу

    Хм... а по моему "Найти значение и изменить его на 5000, при этом не замораживая его скриптами" понятно написано....

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

    Искать указатели, или нет, не важно. Использовать CE или нет, не важно. Главное установить значение 5000.

  10. 12 hours ago, Garik66 said:

    В табличке и скрипт и адрес с поинтером.

     

    - Адрес с указателем не верный. Адрес msvcrt.dll+B5B00 не находится в адресном пространстве моего кода. Соответственно на той же Windows XP такого адреса не будет (как и библиотеки msvcrt.dll)

     

    // -------

     

    Ну а в остальном понятно, опять быстро взломали :) Хотя адрес никто и не нашел (основное задание), но скрипты рабочие.

    Ну ничего, следующий будет точно сложней!

     

  11. Вот мой вариант, замораживает ХП первого игрока:

    Spoiler
    
    [ENABLE]
    
    alloc(newmem,2048)
    label(returnhere)
    label(skipdec)
    
    newmem:
      push eax // Сохраняем предыдущее значение EAX
      mov eax, [ebp+8] // Ссылка на структуру видимо
      cmp byte [eax], 1 // Сверяем первый байт с номером игрока
      pop eax // Восстанавливаем предыдущее значение
      je skipdec // Если 1 игрок, то перепрыгиваем вычитание
      dec ebx // Вычитание
    skipdec:
      mov [keng_trnme.exe+10C5], ebx // Сохранение значения в буфере
      jmp returnhere
    
    "keng_trnme.exe"+217A:
      jmp newmem
      nop
      nop
    returnhere:
    
    [DISABLE]
    
    "keng_trnme.exe"+217A:
      dec ebx
      mov [keng_trnme.exe+10C5], ebx
    
    dealloc(newmem)

     

     

  12. Для версии d

    Скрытый текст
    
    [ENABLE]
    alloc(newmem,2048)
    label(returnhere)
    
    newmem:
    mov ecx, #5000
    mov eax, 0
    mov edx,[TrainME.exe+3394]
    jmp returnhere
    
    TrainME.exe+123D: // Защита от проверки целостности кода
    // Код в этой памяти делил на 0, что вызывало крэш программы
    // Теперь он не будет делить на ноль
    nop
    nop
    nop
    nop
    
    TrainME.exe+1260: // Тоже защита, сразу после предыдущей следует
    nop
    nop
    nop
    nop
    
    "TrainME.exe"+1350: // Инъекция для заморозки значения
    jmp newmem
    nop
    nop
    nop
    nop
    nop
    nop
    returnhere:
    
    [DISABLE]
    dealloc(newmem)
    
    "TrainME.exe"+1350: // Восстанавливаем после инъекции
    mov ecx,[ebp-04]
    mov edx,[TrainME.exe+3394]
    add ecx, eax
    
    TrainME.exe+123D: // Восстанавливаем деление на 0
    mov al, 0
    div al
    
    TrainME.exe+1260:
    mov al, 0
    div al

     

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

    В данном случае я просто убрал деление на 0, которое происходило когда код обнаруживался модифицированным.

  13. Много времени потратил на реверс функции которая делает вычисления перед отрисовкой. И вот результаты:

     

    On 31.07.2014 at 3:04 AM, Xipho said:

    1. Найти очки игрока 1 и написать иньекцию кода с заморозкой значения

    2. То же самое, но для второго игрока

    3. Найти статичный указатель для очков игрока 1

    4. То же самое для второго игрока

    5. Найти и заморозить координаты ракеток (обеих)

    6. Изменить размер ракеток на двойной

    7. Увеличить вдвое размера шарика

    8. Сделать так, чтобы скорость шарика не увеличивалась с течением времени

    9. (Сложно) Перекрасить шарик в красный цвет

     

    1, 2, 3, 4 - Найдено и сделано

     

    5 - Лень было уже искать...

     

    6 - В таблице просто адрес содержащий размер ракеток, но размер не физический а визуальный :(

     

    7 - Также и с мячем, в таблице есть адрес размера мяча, но только визуально увеличивается

     

    8 - Имелось ввиду по оси X ? Нашел адрес и сделал возможность заморозки увеличения этого значения. На всякий случае в таблице есть еще одно значение (коэфицент по оси Y) на всякий случай, но механизм генерации этого числа иной, он не увеличивается с течением времени, а приобретает значения в зависимости от места удара об ракетку.

     

    9 - Не стал это делать, но теоретический план был таков (тут уже не Cheat Engine а модификация файла)

    1. Добавить в таблицу импорта файла функцию opengl.glColor3f (её нету в коде (а по этому и в таблице импорта), потому-что все рисуется белым цветом о.О)
    2. Вставить код перед циклом отрисовки шарика, где вызывалась бы эта функция с заданным цветом

    P.S. На всякий случай ещё координаты мяча зафигачил (просто подруку попались, не искал особо)

     

    Таблица - http://rgho.st/private/6wDRWY8Y5/91d7d978bc11b51167ccdc7096f694e6

  14. 2 hours ago, Garik66 said:

    Табличка СЕ для всех 4.

     

    Оказался проще всех остальных.

    TrainMe Level All.CT

    Извини, но почему-то скрипты только на Level 1 применялись :( На остальных не работало

     

    3 hours ago, LIRW said:

    Записать прям на прямую и всё. 

    
    TrainMe - Level 3.exe+1385 - 83 28 0A              - sub dword ptr [eax],0A { 10 }

    Через mov dword ptr [eax],#5000 и всего делов.  И так де на прибавление. Или в каком смысле изменялось корректно :rolleyes: Там правда сверху прыжок идет на эти 3 байта nop но его затереть и всё. Всё пашет - не вылетает, а более и не надо не чего.

     

    Как простой вариант - согласен.

     

    30 minutes ago, partoftheworlD said:

    О каких механизмах защиты шла речь?  Взломал все 4 приложения и что-то не заметил. Это которая проверка с выводом сообщения?

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

    Описание защит (я не говорю что они суперские, просто я решил реализовать их):

    - Level 1: Просто указатель, классика ) тут без комментариев

    - Level 2.1: Фейковое значение (отображается значение которое хранится в зашифрованном виде в памяти). Тут требовалось найти адрес значения (находится достаточно быстро, приложение маленькое и неизвестные значения быстро отсеиваются), затем узнать как оно хранится и записать туда зашифрованное число 5000.

    - Level 2.2: Контрольная сумма. При изменении значения в памяти проверяется контрольная сумма. Тут требовалось в дизассемблере Cheat Engine (ибо там пару строк) найти где хранится хеш-сумма и найти как туда сохраняется значение после нажатия клавиш Add и Dec.

    - Level 3: Его я назвал сложнее предыдущих потому-что это модификация Level 1 с одним лишь исключением, в памяти не хранится указатель в явном виде, он хранится в памяти в зашифрованном виде.

     

    В принципе, бит хак тоже уместен. Но это не такое красивое решение :)

     

    Следующие TrainMe сделаю иначе, чтобы просто так не битхакали :D

  15. Привет народ ) Наткнулся на данный раздел и появилось желание создать данные TrainMe.

     

    Немного о них:

    Написаны они на C и имеют 4 разных механизма защиты.

    Программы представляют из себя простые окна с 2-мя кнопками "Add value" и "Dec value" которые прибавляют и убавляют значение на 10.

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

     

    Уровни сложности:

    Level 1 - легкий

    Level 2.1, Level 2.2 - средний

    Level 3 - я считаю что сложный, но возможно тоже средний

     

    Задание:

    Требуется во всех 4х программах суметь установить значение в 5000 чтобы при нажатии кнопки "Add value" и "Dec value" оно изменялось корректно.

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

    Не обязательно писать трейнеры к ним либо скидывать CheatEngine-файлы (хотя это было бы всё плюсом), достаточно просто описать ваш алгоритм действия.

     

    Доступны по ссылке - http://rgho.st/private/8GPnCjVFd/060bcfffb341a2520c617e4516d8b7a4

    • Плюс 1
×
×
  • Создать...

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

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