-
Постов
47 -
Зарегистрирован
-
Посещение
-
Победитель дней
2
Тип контента
Профили
Форумы
Загрузки
Блоги
Сообщения, опубликованные holy
-
-
Just now, SpiritWithim said:
Эт на Win XP указатель
Адрес не находится в адресном пространстве программы. Ты нашел не тот адрес.
Да даже если бы ты нашел якобы тот адрес, то адрес работающий только на одной системе это не правильно. Адрес обычно находят в программе, а не в системных библиотеках.
-
3 minutes ago, Garik66 said:
почему именно тебе нужны указатели?
Потому-что скрипт написать в разы проще ) В чем тут тогда соревнование? Кто быстрее скачает файл и запустит CE?
Иногда, когда реальное расположение значения невозможно поймать, как например в TrainMe Maze, я не прошу находить адреса, так как в том TrainMe реальное значение бегало по массиву и не имело статичного адреса.
Именно для этого и присутствует пункт "Задание". В данном TrainMe всё просто, главное подумать в нужном направлении, и решив задание, ты не скажешь что оно было странным или глупым )
Поверь, правильный ответ у данного TrainMe действительно очень прост, главное понять код и всё станет ясно
16 minutes ago, Garik66 said:В табличке куча адресов с указателями (найдены автопоиском СЕ, я не много из них выбрал, их там очень и очень много)
и скрипт "pointer" с прикреплённым адресом "Value" , активируй скрипт, измени значение в трейнми и в адресе будет
значение (это способ, который я обычно использую).
- К сожалению, ни в одном из указателей не оказалось того значения
- Скрипт работает, но после выключения скрипта и изменения значения в программе - программа крэшится, скорее всего конфликтуют твои имена pointer и Pointer во время DISABLE (отключения) скрипта, изменил имя с Pointer на PointerS и скрипт стал корректно выключаться.
- Однако если захочешь, то подумай над тем, как узнать реальный адрес
-
1 hour ago, SpiritWithim said:
Не работает:
1. Адрес 77C521F8 находится вне адресного пространства кода.
2. У меня адреса 77C521F8 вообще нет.
-
Здравствуйте
Написал относительно простенький TrainMe. Не смотря на его простоту, в нем есть то, с чем новичек сразу не справитсяЗадание:
- Найти указатель на значение (не забудьте проверить его, после перезапуска программы) и скинуть CT файл (мне будет интересно взглянуть на найденные вами адреса). Как вы это сделаете, откуда возьмете - не важно, главное чтобы из адресного пространства программы.
-
Может в телеграмме сделаете конфу ?)
-
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"
-
Garik66, скрипт отлично работает
1 hour ago, gmz said:упх фейл, хоть бы твикнул как следует
Я бы и не смог сделать хорошей защиты
Антиотладка, это таже самая АПИ функция, только копия (чтобы не ставили BP)
А упаковал чтобы статическим анализом не пользовались ) Изменил имена секций чтобы UPX'ом не распаковали (только отладчиком).
-
NullAlex,
Spoiler7 minutes ago, NullAlex said:Накидал бота для клика, и ушел пить чай
Ахахахаха
Твоё решение порадовало
7 minutes ago, NullAlex said:и не пользоваться скриптами
Скриптами можно, главное не заморозить значение
-
14 minutes ago, Garik66 said:
мне влом искать, как это поправить
Ну, надеюсь, что как-нибудь у тебя появится интерес к этому) Потому-что антиотладка там не сложней чем из предыдущей моей темы
Буду рад если кто-то будет пробовать тоже поковырять этот трейнми. Со временем выложу свой вариант решения
-
14 minutes ago, Garik66 said:
СЕ постоянно ругается при подключении к ним
Это не из-за названия.
Мой CE не ругался ни на один из трейнми, даже на этот не ругается
Я бы не стал скидывать что-то подобное.
14 minutes ago, Garik66 said:Извини я не понял задачу
Хм... а по моему "Найти значение и изменить его на 5000, при этом не замораживая его скриптами" понятно написано....
Хорошо, попробую другими словами описать. Надо сделать так, чтобы в программе стало значение 5000 и при нажатий кнопок оно изменялось, а не оставалось постоянно замороженным значением 5000.
Искать указатели, или нет, не важно. Использовать CE или нет, не важно. Главное установить значение 5000.
-
Привет
В дополнение к этой теме, был выпущен дополнительный Level 4 трейнми.
Задание:
Найти значение и изменить его на 5000, при этом не замораживая его скриптами.
Удачи TrainMe by holy - Maze
- 2
-
12 hours ago, Garik66 said:
В табличке и скрипт и адрес с поинтером.
- Адрес с указателем не верный. Адрес msvcrt.dll+B5B00 не находится в адресном пространстве моего кода. Соответственно на той же Windows XP такого адреса не будет (как и библиотеки msvcrt.dll)
// -------
Ну а в остальном понятно, опять быстро взломали Хотя адрес никто и не нашел (основное задание), но скрипты рабочие.
Ну ничего, следующий будет точно сложней!
-
Всем привет )
Фишек трейнми раскрывать не буду, все узнаете сами.
Требуется:
1. Найти указатель на значение
2. Написать скрипт замораживающий значение
TrainMe - http://rgho.st/private/7cpcHSkpL/d40c4cd467f82c82637f05b25e9a299a
- 1
-
Вот мой вариант, замораживает ХП первого игрока:
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)
-
Для версии 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, которое происходило когда код обнаруживался модифицированным.
-
Много времени потратил на реверс функции которая делает вычисления перед отрисовкой. И вот результаты:
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 а модификация файла)
- Добавить в таблицу импорта файла функцию opengl.glColor3f (её нету в коде (а по этому и в таблице импорта), потому-что все рисуется белым цветом о.О)
- Вставить код перед циклом отрисовки шарика, где вызывалась бы эта функция с заданным цветом
P.S. На всякий случай ещё координаты мяча зафигачил (просто подруку попались, не искал особо)
Таблица - http://rgho.st/private/6wDRWY8Y5/91d7d978bc11b51167ccdc7096f694e6
-
8 minutes ago, Garik66 said:
Ждём новых, более сложных задачек
Угу, будут )
-
Garik66, накосячил слегка. Работают все )
Но если изменить в Level 2.2 значение и нажать "Add" или "Dec" то вылезет сообщение моё, о том что была обнаружена модификация значения )
-
2 hours ago, Garik66 said:
Извини, но почему-то скрипты только на 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 и всего делов. И так де на прибавление. Или в каком смысле изменялось корректно Там правда сверху прыжок идет на эти 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 сделаю иначе, чтобы просто так не битхакали
-
Привет народ ) Наткнулся на данный раздел и появилось желание создать данные 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
TrainMe - Chameleon [Level 2]
in Train Me
Опубликовано
Выключи скрипт и нажми кнопку Inc value или Dec value. Программа вылетит. У меня так.
Но не в этом суть, это не важно ) У меня Cheat Engine 6.5.1 может по этому.
P.S. У тебя наверно какой-то плагин имеется в CE, ибо у тебя Lua Engine ругается. Либо скрипт либо ещё что-то, я не знаю )