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

ТрейнМи by DEViOUS


live_4_ever

Рекомендуемые сообщения

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

Требования: Сделать полный бар, сделать больше 10 жизней, сделать больше 50,000 денег.

ghme1lvl1.rar

Ссылка на комментарий
Поделиться на другие сайты

  • 4 недели спустя...

Статья попалась. Спец. написанная для этого трейнми.

Муть конечно...

Trainme Devious Level 1

Автор: Bie

Перевод: Guru.eXe

--------------------------------------------------------------------------------

Инструменты

Trainme Devious Level 1

TSearch

Правила

Остановить обе полосы

Установить значение денег 50000

10 жизней

Запрещается NOPить

Начнем

Деньги

Начинаем искать текущее значение, предварительно установив тип: 4 Bytes. Нашли один адрес, к примеру, C7F010. У вас это значение будет другим, так как трейнми использует динамическое распределение памяти. Используя AutoHack в TSearch получаем:

004011d6 B805000000 mov eax,0x5 <--- поднимаемся чуть выше и видим это

004011db 294604 sub [esi+0x4],eax <--- сюда мы приземляемся

Пояснения

mov eax,0x5 - устанавливаем значение 5 в регистр EAX

sub [esi+0x4],eax - вычитаем из текущего значения денег, значение, которое занесено в регистр EAX, а там у нас 5

Решение

Измените значение находящееся по адресу 004011d6 с 5 на 50000. Используйте Калькулятор, чтобы перевести десятичное значение 50000 в шестнадцатеричное. 50000 в DEC = C350 в HEX.

В окне AutoHack кликните правой клавише мыши по строке находящейся по адресу 004011d6 и нажмите Assemble. Теперь впишите туда следующий код:

mov eax,0xC350 <--- помещаем 50000 в регистр EAX

Теперь сделаем так, чтобы значение денег всегда было постоянным, для этого кликните правой клавишей мыши по строке с адресом 004011db и нажмите Assemble, стандартный кол измените на:

mov [esi+0x4],eax <--- устанавливаем значение 50000 по DMA адресу

После этого у нас будет постоянно 50000, чего, собственно, мы и добивались.

Результат

004011D6 B850C30000 mov eax,0xC350

004011db 894604 mov [esi+0x4],eax

Код для Trainer Maker Kit

Poke 4011D6 B8 50 C3 00 00 89 46 04

Первая полоска

Вы запомнили адрес инструкции, уменьшающей деньги? Ок.. идем дальше.

004011d6 B805000000 mov eax,0x5

004011db 294604 sub [esi+0x4],eax <-- уменьшаем деньги

004011de B805000000 mov eax,0x5

004011e3 294608 sub [esi+0x8],eax <-- уменьшаем что-то еще

По адресу 004011e3 происходит тоже уменьшение какого-то значения. Хм.. проверим что именно. Кликните по строке по адресу 004011e3 и выберите Register. Теперь перейдите во вкладку Register. Активируем слежение за изменением регистра, для этого установите флаг слева от записи. Поле Register с EAX измените на ESI. Продолжите выполнение трейнми, то есть снимите с паузы.

Теперь смотрим на значение Original Value. У меню значение хранящееся в регистру ESI равно d7f00c. Сейчас добавим к этому значению 8. Почему? Ведь у нас - esi+0x8. У меню получилось D7F014. Перейдите в главное окно TSearch и добавь в список полученный адрес.

Пояснения

mov eax,0x5 - записываем в регистр EAX значение 5

sub [esi+0x8],eax - уменьшаем значение находящееся по DMA адресу на значение находящееся в регистре EAX, то есть на 5

Решение

Измените значение находящееся по адресу 004011de с 5 на 100. Используйте Калькулятор, чтобы перевести десятичное значение 100 в шестнадцатеричное. 100 в DEC = 64 в HEX.

В окне AutoHack кликните правой клавише мыши по строке находящейся по адресу 004011de и нажмите Assemble. Теперь впишите туда следующий код:

mov eax,0x64 <--- помещаем 100 в регистр EAX

Теперь сделаем так, чтобы значение денег всегда было постоянным, для этого кликните правой клавишей мыши по строке с адресом 004011e3 и нажмите Assemble, стандартный кол измените на:

mov [esi+0x8],eax <--- устанавливаем значение 100 по DMA адресу

После этого у нас будет постоянно 100.

Результат

004011DE B864000000 mov eax,0x64

004011E3 894608 mov [esi+0x8],eax

Код для Trainer Maker Kit

Poke 4011DE B8 64 00 00 00 89 46 08

Жизни

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

004011d6 B805000000 mov eax,0x5 <-- помещаем 5 в регистр eax

004011db 294604 sub [esi+0x4],eax <-- уменьшаем количество денег на 5

004011de B805000000 mov eax,0x5 <-- помещаем 5 в регистр eax

004011e3 294608 sub [esi+0x8],eax <-- уменьшаем верхнюю полоску на 5

004011e6 8B4608 mov eax,[esi+0x8] <-- помещаем значение шершней полоски в eax

004011e9 0BC0 or eax,eax <-- если возвращается - истина

004011eb 7532 jnz short 0x0040121F <-- переходим на адрес 40121f

004011ed B864000000 mov eax,0x64 <-- если нет, устанавливаем 100 в регистр eax

004011f2 894608 mov [esi+0x8],eax <-- устанавливаем 100 в верхнюю полоску

004011f5 8B460C mov eax,[esi+0xC] <-- хммм... интересно

004011f8 0BC0 or eax,eax <-- если возвращается - истина

004011fa 751B jnz short 0x00401217 <-- переходим на адрес 401217

004011fc 6A00 push 0x0 <-- если нет, очищаем

004011fe 6800304000 push 0x403000 <-- показываем заголовок 'Game Over'

00401203 680A304000 push 0x40300A <-- показываем сообщение 'You suck...

00401208 FF7508 push dword ptr [ebp+0x8]<--

0040120b E874010000 call 0x00401384 выход из трейнми

00401210 6A00 push 0x0

00401212 E873010000 call 0x0040138A <--

00401217 B801000000 mov eax,0x1 <-- помещаем 1 в регистр eax, прыжок с 4011fa,

сравнивается текущее значение с 0, для уменьшения жизней на 1

0040121c 29460C sub [esi+0xC],eax <-- уменьшаем жизнь на 1

Первое решение

Итак, мы не хотим осуществление перехода по адресу 4011eb. Как же запретить прыжок не заNOPив инструкцию? Ответ прост, мы будем использовать прыжок, сначала необходимо уничтожить инструкцию:

004011e9 0BC0 or eax,eax

Теперь кликните правой клавишей мыши по строке с адресом 4011e9 и нажмите Assemble. Там измените инструкцию на jmp 4011ed.

Второе решение

Этот шаг необходим, поскольку он дает вам 10 жизней, хотя при старте мы имеем всего 5. Используя метод, который мы применяли выше, изменим:

00401217 B801000000 mov eax,0x1 <-- помещаем 1 в регистр Eax

0040121c 29460C sub [esi+0xC],eax <-- уменьшаем количество жизней на 1

на

00401217 B80A000000 mov eax,0xA <-- помещаем 10 в регистр EAX

0040121c 0089460C mov [esi+0xC],eax <-- устанавливаем 10 жизней

Код для Trainer Maker Kit

Poke 4011E9 EB 02

Poke 401217 B8 0A 00 00 00 00 89 46 0C

Вторая полоска

Заключительная часть нашего урока, посмотрим как следует на код.

004011d6 B805000000 mov eax,0x5 <-- помещаем 5 в регистр eax

004011db 294604 sub [esi+0x4],eax <-- уменьшаем количество денег на 5

004011de B805000000 mov eax,0x5 <-- помещаем 5 в регистр eax

004011e3 294608 sub [esi+0x8],eax <-- уменьшаем верхнюю полоску на 5

004011e6 8B4608 mov eax,[esi+0x8] <-- помещаем значение шершней полоски в eax

004011e9 0BC0 or eax,eax <-- если возвращается - истина

004011eb 7532 jnz short 0x0040121F <-- переходим на адрес 40121f

004011ed B864000000 mov eax,0x64 <-- если нет, устанавливаем 100 в регистр eax

004011f2 894608 mov [esi+0x8],eax <-- устанавливаем 100 в верхнюю полоску

004011f5 8B460C mov eax,[esi+0xC] <-- хммм... интересно

004011f8 0BC0 or eax,eax <-- если возвращается - истина

004011fa 751B jnz short 0x00401217 <-- переходим на адрес 401217

004011fc 6A00 push 0x0 <-- если нет, очищаем

004011fe 6800304000 push 0x403000 <-- показываем заголовок 'Game Over'

00401203 680A304000 push 0x40300A <-- показываем сообщение 'You suck...

00401208 FF7508 push dword ptr [ebp+0x8]<--

0040120b E874010000 call 0x00401384 выход из трейнми

00401210 6A00 push 0x0

00401212 E873010000 call 0x0040138A <--

00401217 B801000000 mov eax,0x1 <-- помещаем 1 в регистр eax, прыжок с 4011fa,

сравнивается текущее значение с 0, для уменьшения жизней на 1

0040121c 29460C sub [esi+0xC],eax <-- уменьшаем жизнь на 1

0040121f B801000000 mov eax,0x1 <-- помещаем 1 в регистр EAX, прыжок с 4011eb,

сравнивается текущее значение с 0, уменьшаем значение на 1

00401224 294610 sub [esi+0x10],eax <-- уменьшаем значение полоски на 1

Решение

Все просто. Меняем:

0040121f B801000000 mov eax,0x1 <-- помещаем 1 в регистр EAX

00401224 294610 sub [esi+0x10],eax <-- уменьшаем значение полоски на 1

на

0040121f B864000000 mov eax,0x64 <-- помещаем в регистр EAX - 100

00401224 894610 mov [esi+0x10],eax <-- устанавливаем значение

Код для Trainer Maker Kit

Poke 40121f B8 64 00 00 00 89 46 10

Для опытный геймхакеров

Деньги

;004011d6 B805000000 mov eax,0x5

;004011db 294604 sub [esi+0x4],eax

;Устанавливаем значение 50000

;004011D6 B850C30000 mov eax,0xC350

;004011db 894604 mov [esi+0x4],eax

Первая полоска

;004011de B805000000 mov eax,0x5

;004011e3 294608 sub [esi+0x8],eax

;Устанавливаем значение 100

;004011de B864000000 mov eax,0x64

;004011e3 894608 mov [esi+0x8],eax

Жизни

;004011E9 0BC0 or eax,eax

;00401217 B801000000 mov eax,0x1

;0040121c 29460C sub [esi+0xC],eax

;Устанавливаем 10 жизней

;004011E9 EB02 jmp 0x04011ED

;00401217 B80A000000 mov eax,0xA

;0040121c 0089460C mov [esi+0xC],eax

Вторая полоска

;0040121f B801000000 mov eax,0x1

;00401224 294610 sub [esi+0x10],eax

;Устанавливаем значение 100

;0040121f B864000000 mov eax,0x64

;00401224 894610 mov [esi+0x10],eax

Для новичков

Вы можете использовать следующий код, для создания трейнера с помощью Trainer Maker Kit:

Poke 4011D6 B8 50 C3 00 00 89 46 04 B8 64 00 00 00 89 46 08

Poke 4011E9 EB 02

Poke 401217 B8 0A 00 00 00 00 89 46 0C B8 64 00 00 00 89 46 10

Ссылка на комментарий
Поделиться на другие сайты

  • 1 год спустя...

Таблица CheatEngine

http://sendfile.su/649427

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

Ссылка на комментарий
Поделиться на другие сайты

ZOCKIR, приветствую :)

Скорее всего нет, т.к. скрипты в CE не трогал пока

Горячо рекомендую пройти туториал СЕ, ну и может пару видеоуроков посмотреть (например, моих). =)

Основы в туториале отлично объясняются, я думаю.

Ссылка на комментарий
Поделиться на другие сайты

В туториале CE прошел указатели, дальше инъекция кода, которую я не могу понять :(

А на счет видеоуроков - обязательно все посмотрю, когда наконец интернет подключат (сейчас с мобильника, и нет возможности вздохнуть свободнее, т.к. трафик черезчур дорогой: ~10 р. за мб) :)

Ссылка на комментарий
Поделиться на другие сайты

В туториале CE прошел указатели, дальше инъекция кода, которую я не могу понять :(

А на счет видеоуроков - обязательно все посмотрю, когда наконец интернет подключат (сейчас с мобильника, и нет возможности вздохнуть свободнее, т.к. трафик черезчур дорогой: ~10 р. за мб) :)

А что конкретно не понимаешь? Принцип - "инъекция кода", или ассемблерные команды?

Ссылка на комментарий
Поделиться на другие сайты

Да... Честно сказать, сколько раз я не пытался, не могу найти адрес жизней на 7м шаге пароль: 013370

То-ли CE баганый, то-ли я криворукий... Но не удается найти значение не по байтам, не по float или double, и даже поиск неизвестного значения ничего не дает =\

Ссылка на комментарий
Поделиться на другие сайты

Да... Честно сказать, сколько раз я не пытался, не могу найти адрес жизней на 7м шаге пароль: 013370

То-ли CE баганый, то-ли я криворукий... Но не удается найти значение не по байтам, не по float или double, и даже поиск неизвестного значения ничего не дает =\

У меня находит как целое 4 байта, но на всякий случай попробуй снять в главном окне СЕ галочку "Fast Scan" ("Быстрое сканирование") и попробуй найти адрес ещё раз.

Ссылка на комментарий
Поделиться на другие сайты

Точно, нашел... Даже немного стыдно, забыл про быстрый поиск :)

Сейчас поковыряю этот шаг, и отпишусь :)

UPD:

Выполнено :)

Пароль к 8 шагу: 525927

Пока все очень хорошо понятно.

UPD2:

Вот на 8м шаге ступор...

Инструкция на 2м уровне имеет вид: mov eax, [esi]

смещения, получается, у него нет?

Выполнен 8 шаг.

Ссылка на комментарий
Поделиться на другие сайты

ZOCKIR, приветствую :)

Скорее всего нет, т.к. скрипты в CE не трогал пока

Придет время он будет стучать в твой дверь :) (Асемблер, скрипт)

Merano удачи в начинаниях.

Ссылка на комментарий
Поделиться на другие сайты

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

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

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