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

Лидеры


Популярный контент

Показан контент с высокой репутацией за 04/18/21 во всех областях

  1. 3 балла

    Версия Steam

    10 раз скачали

    Использование: Запускаем сначала игру, а в главном меню игры (либо в уже начатой) запускаем трейнер Функции: Бесконечная жизнь Без перезарядки оружия Бесконечные патроны Скорострельность оружия Легкие убийства Подсветка предметов Бесконечные деньги Бесплатный крафт Бесконечные мины Бесконечные отмычки Без отдачи оружия Очень быстрая перезарядка оружия
  2. 3 балла

    Версия Steam

    26 раз скачали

    Использование: Запускаем сначала игру, а в главном меню игры (либо в уже начатой) запускаем трейнер Функции: Бессмертие Бесконечная выносливость Без перезарядки оружия Бесконечные патроны Бесконечные очки на прокачку персонажа Быстрые убийства Быстрое прохождение квестов Супер скорость Точность оружия Без отдачи оружия Бесконечные предметы Добавить время Бесконечный вес Много очков Невидимость
  3. 2 балла
    Жизнь игрока Бесконечные патроны в оружие и без перегрева оружия Бесконечные патроны в оружие и в подсумке и безконечные гранаты Бесконечные деньги все собираемое золото будет копиться но при покупке не тратится Бесконечный бег без усталости Бесконечная енергия для амулета
  4. 2 балла

    Версия /1.0.0

    0 раз скачали

    Игра: Tomb Raider: Anniversary (Версия: 1.0) Функции: 1) GodMode - режим Бога (неубиваемая Лара) 2) NoReload - Нет перезарядки оружия 3) Inf.Oxigen - Беск. кислород 4) EasyKill - Лёгкое убийство 5) Inf.MedKit => 25 - Беск. медпакеты (при использовании не менее 25) 6) Tirex'sRage -Беск. макс. ярость Годзиллы
  5. 2 балла

    Версия /1.0.0

    0 раз скачали

    Mount&Blade Warband 1.153 _3in1 (3 таблицы для трёх модулей) Описание к каждой таблице в архиве.
  6. 2 балла

    Версия /1.0.0

    2 раза скачали

    Описание: Функции: Numpad_1 - Inf.Chield Numpad_2 - Activ_Weap_Spr Numpad_3 - Jump Numpad_4 - MyWeapon Numpad_5 - Life => 25 Numpad_6 - Many + 1500 Пояснение функций: Руслан (Xipho), благодарю за помощь со скриптом. Видео-трейнер
  7. 2 балла
    (*(int (__fastcall **)(__int64, signed __int64))(*(_QWORD *)v16 + 472i64))(v16, 2i64);
  8. 2 балла
    В более-менее приличных онлайн играх, сидят дядьки, которые получают хорошие бабки НЕ за то, чтобы всякие noob'ы обходили их защиту) Соответственно, чтобы быть андетект годами, ты должен быть, как минимум, на одном уровне знаний и опыта с ними. Исходя из твоих пожеланий, ты должен обладать следующими скиллами: начиная от - ты должен свободно читать чужой код (на плюсах, т.к. в основном все движки написаны и пишутся на нём) и при необходимости, быть в состоянии отрефакторить. заканчивая - ты должен хорошо знать OSI, ну или хотя бы TCP/IP, все сопутствующие протоколы, как работают, что происходит на каждом уровне. Владеть акулой на более-менее уровне (фильтровать, разбирать, писать диссекторы, кастомизировать гуи и т.п.). Подтянуть шифрование (хотя бы основные виды), ну и владеть отладчиком + дизассемблером. Очевидно же 🙂
  9. 1 балл
    (пиратка) 1. Макс. Жизней 2. Текущие Жизни 3. Ключи 4. Бомбы 5. Монеты 6. Поменять предмет(от 1 до~~) 7. Энергия 8. Таймер бомб(Заморозить на 0) 9. Скорость Бега 10. Таймер Стрельбы (Заморозить на 0) 11. Таймер Двойной Стрельбы (Заморозить=>10) 12. Удача 13. Таймер Бессмертия (Заморозить=>10) Скачать
  10. 1 балл
    Добро время суток. Предлагаю видео урок с поиском адресов, которые казалось бы сложно найти. Следующий урок готовлю, в котором будет тема, как написать скрипт с искусственным фильтром. Прошу не жалеть коментов.
  11. 1 балл

    Версия /1.0.0

    3 раза скачали

    Игра: Cursed Mountain v.1.0/Проклятая гора - версия игры 1.0 Описание игры: Функции: Numpad_1 - Inf.Health - (Беск. здоровье) Numpad_2 - OHK - (убийство с 1 удара/раза) Пояснение:
  12. 1 балл
    я ставлю плюсы не за правильность, а за активность и участие, плюс/минус ИМХО - нравится/не нравится мне понравилось. Тем более и более опытные конечно поправят.
  13. 1 балл
    Оригинальные байты: 0F B6 05 63 4F B0 01 0F B6 05 < op код - адрес > 63 4F B0 01 // тебе нужен адрес. Значит опкод в 3 байта надо пропустить. +3 и копировать сам адрес 63 4F B0 01
  14. 1 балл
    Я не буду здесь объяснять, что такое видовая матрица и для чего она нужна - для этого есть специальные книжки и статьи (раз, два) Обычный Step-by-Step гайд с пояснениями. Искать будем в Counter-Strike: Global Offensive, но в принципе подойдет и любая другая игра. Никаких консольных команд для облегчения поиска использовать я не буду, дабы способ мог пройти в любой другой игре. Значит так, сначала цепляемся к процессу игры, затем устанавливаем параметры поиска: Scan Type: Value between... Value Type: Float Почему именно так? Дело в том, что точное значение искать довольно рискованно. Во-первых, флоат вообще довольно неточная штука, а во-вторых - мы не знаем точного угла нашей камеры. Например, в csgo угол наклона (pitch) варьируется от -89.0 до 89.0 градусов , а в других играх может и прямой угол получаться, т.е. 90 градусов. Теперь опускаем камеру до упора вниз, так что наш угол наклона получится 89 градусов. По идее, в видовой матрице это значение отобразится как ~0,999, но мы все равно будем искать диапазон. Ну а теперь выставляем диапазон: от 0.9 до 1.1 и сканируем Нам тут же нашло овер9000 значений, но ща мы их отсеим. Камеру до упора вверх и сканим теперь следующий диапазон: Оп-па. Теперь значений осталось всего-ничего: 521. Нет, это конечно много, но не настолько. Можно конечно по приколу отсеить те значения, что изменились за время чтения данной строки, но тут может поджидать сюрприз: в некоторых играх камера может немного "ходить" туда-сюда. Но если вы уверены в том, что она статична, то флаг вам в руки. Сейчас осталось только и делов: отсеить весь хлам, ну а дальше будем смотреть на найденное и анализировать. Можно так же до упора туда-сюда камеру водить, но я сделал так: направил ее примерно параллельно земле и прожал скан от -0.2 до 0.2. После пары-тройки дополнительных сканов у меня осталось примерно 60 значений. Многовато для ручного перебора, но я знаю, что мне нужны только "зеленые", т.е. статические адреса. Пролистав чуть ниже, я тут же натолкнулся на целый ряд таких значений: Выносим все эти ячейки в список адресов и начинаем их перебирать: ПКМ по первому же адресу -> Browse this memory region ( Ctrl + B ) Выставляем тип отображаемых значений на float, чтобы проще было наблюдать за всеми значениями матрицы. ПКМ -> Display Type -> Float ( Ctrl + 9 ) Смотрим на первую матрицу: На всю матрицу у нас должно быть только 3-4 больших значения и все они должны быть в одной колонке. Ну или так: каждое четвертое значение имеет большую величину. Желательно сразу их выровнять по 4 колонке. Остальные значения находятся в диапазоне от 0 до +-1.33 Тут мы видим, что она явно какая-то не такая: Nan-значения, остальные нули и тд. Но даже если она выглядит более-менее правдиво, то достаточно подвигать туда сюда камерой ( + побегать! ), чтобы убедиться в том что это не она: только два значения меняются, а остальные статичны. По идее меняться должны все значения, кроме одного в первой строке, оно скорее всего будет равняться нулю. Дальше увидите. Проделываем те же действия с другими матрицами: оцениваем их визуально + меняем состояние камеры в игре и смотрим на значения. Просматривая вторую и третью матрицы я заметил, что между ними есть участок памяти, который наиболее активно изменяется при движении/изменении углов камеры. Фиолетовым я выделил адреса второй и третьей матрицы, а между ними зеленым - интересующий участок. Как видите, здесь есть 4 довольно больших значения ( на фоне других ) и одно из них (0x1F97E26C) остается неизменным. Но в других играх оно может немного меняться: оно отвечает за угол поворота ( по часовой ). Это в тех играх, где камера туда-сюда наклоняется, например, при передвижении пресонажа, но оно в таком случае все равно не будет сильно большим. Теперь выделяем предполагаемое начало матрицы, жмем ПКМ->Add this to address list и копируем адрес. Теперь Ctrl + G и переходим по скопированному адресу. Смотрим: Ба! Выглядит отлично. Значения не сравнивайте между скринами, за это время я немного подвигал камеру опять, поэтому они изменились. Ну, оффсет для статического адреса сделать вообще не сложно: берем адрес матрицы и вычитаем из него базовый адрес модуля: 0x1F97E264 - client.dll = 0x4A7E264 Если все еще не понятно, как таки найти view matrix, то можете посмотреть видеоурок от Guided Hacking: https://www.youtube.com/watch?v=-WL1Gpe9VRo Ну, так как во многих обновляемых играх, особенно в кс, оффсетам свойственно меняться, а каждый раз искать по новой эту матрицу не очень хочется, то можно сделать сигнатурку. По ней мы будем автоматически вытаскивать наш оффсет из исполняемого кода. Точнее даже не оффсет, а уже конкретный адрес. Добавляем первое значение нашей матрицы в список адресов и ставим бряк. Тут же ловим кучу инструкций, которые взаимодействуют с нашей матрицей: Берем самую первую и смотрим: Это похоже на какой-то метод класса матрицы, который может использоваться не только нашей матрицей, но и другими. Что-то типа оператора присвоения. Если поставить бряк на эту инструкцию, то можно в этом убедиться: в регистр ecx попадает не только "наш" адрес, но и куча других. Что же делать? Все просто: будем "раскручивать" цепочку вызовов функций. Ставим Breakpoint ( F5 ) на инструкцию push ebp. Это начало функции. Затем ПКМ по ней же и выбираем "Set/Change break condition" и выставляем фильтр на брейкпоинте, чтобы он остановился когда функция будет работать с нашей матрицей. Тут, конечно же, адрес вашей матрицы вместо моего. И в тот же миг "ловим" наш поток. Смотрим на регистры и на стек: В регистре ecx наша матрица, стек разворачиваем на "полную" и видим такую картину: Это адрес функции, которая нас вызвала. В чем суть вообще того, что мы сейчас делаем? Все дело в том, что нам надо выйти на ту единственную функцию, которая работает ТОЛЬКО с нашим адресом. Т.е. там, где все начинается. Там же, вероятно, мы и сможем узнать откуда игра берет адрес этой матрицы и мы сделаем сигнатурку. Значит так, теперь снимаем наш брейкпоинт и прыгаем по адресу из нашего стека: client.dll + 67379B Отлично. Что мы видим? А, ну это соответственно тот самый вызов функции, из которой мы пришли. Можно тут так же поставить брейкпоинт и убедиться, что функция всё так же работает с несколькими матрицами. Так, а с каким регистром-то у нас там работали инструкции? С ecx, точно. Смотрим буквально на пару строк выше и видим инструкцию: lea ecx, [edi+00000284] Похоже, тут в наш регистр загружается адрес матрицы. Хм, а сама матрица тоже лежит в какой-то структуре, адрес которой лежит в edi. А значит теперь нам надо искать ту инструкцию, которая загружает в регистр edi адрес 0x1F97DFE0. Это уже адрес нашей структуры, т.е. ( 0x1F97E264 - 0x284 ). Теперь ищем по нему. Прокрутив в самый верх функции можно увидеть, что в edi значение перекладывается из регистра ecx. client.dll+673740 - 55 - push ebp client.dll+673741 - 8B EC - mov ebp,esp client.dll+673743 - 81 EC 80000000 - sub esp,00000080 client.dll+673749 - 56 - push esi client.dll+67374A - 57 - push edi client.dll+67374B - 8B F9 - mov edi,ecx Теперь делаем то же самое, что и в предыдущий раз: брейкпоинт (на push ebp), condition, и прыгаем на предыдущую функцию. Тут наблюдаем такую картину: Фигассе, сказал я се. Приехали, значение вытаскивается из стека) Можно попрыгать по функции и найти когда значение пушится в стек, но мне лень, поэтому я просто прокрутил функцию в самый верх и не прогадал: поставив бряк на начало функции я тут же поймал в ecx прежний адрес структуры, которую мы пытаемся выследить. Но эта функция все еще работает с каким-то адресом помимо нашего, поэтому раскручиваем дальше: те же действия, прыгаем на предыдущую функцию. Тут такая же ситуёвина, все делаем точь в точь, пока не наткнемся на ту самую функцию, где у нас бряк будет ловить в регистре только наш адрес. А вот и она: Думаю, тут все ясно. Мы поймали разрабов с поличным: адресок-то прямо вот он, в ecx кладется. Двойной клик по строчке чтоб увидеть полный адрес: client.dll+1F2C68 - B9 E0DF971F - mov ecx,1F97DFE0 А вот и адрес нашей структуры. Дело за малым, выделяем кучку инструкций для того чтобы составить уникальную сигнатуру, по которой мы сможем найти в дальнейшем этот участок кода. Получаем такую строчку: B9 E0 DF 97 1F 50 6A 00 6A 03 83 EC 08 8D 45 DC F3 0F 11 44 24 04 F3 0F 10 45 F8 F3 0F 11 04 24 И теперь "замазываем" наш адрес, который после перезапуска игры 100% поменяется. B9 ?? ?? ?? ?? 50 6A 00 6A 03 83 EC 08 8D 45 DC F3 0F 11 44 24 04 F3 0F 10 45 F8 F3 0F 11 04 24 Все, сигнатура готова. У меня примерно так выглядит всё в коде: pViewMatrix = (D3DXMATRIX*) CEngine::FindPattern( "client.dll", "B9 ?? ?? ?? ?? 50 6A 00 6A 03 83 EC 08 8D 45 DC F3 0F 11 44 24 04" ); if( pViewMatrix ) { pViewMatrix = (D3DXMATRIX*)( *(DWORD*)( (DWORD) pViewMatrix + 1 ) + 0x284 ); } Да, не забываем, что это адрес СТРУКТУРЫ, но не матрицы. Матрица имеет своё, внутреннее смещение по структуре: 0x284. Сканер сигнатур сами как-нибудь сделаете, это уже к кодингу относится Да и на самом деле, эту сигнатуру можно использовать даже в CE.
  15. 1 балл
    Начать лучше с курса SimpleCode на ютубе "Основы C++" Времени уйдет много. Так как после синтаксиса самого языка нужно будет (да, будет нужно), изучать STL, WinApi, всякие boost'ы, DirectX'ы и прочие библиотеки. И выучить все невозможно, ты всегда будешь узнавать что-то новое, ошибаться, пытаться вновь и так далее. Практики много нужно к тому-же.
  16. 1 балл
    Generation Zero Просмотр файла Использование: Запускаем сначала игру, а в главном меню игры (либо в уже начатой) запускаем трейнер Функции: Бессмертие Бесконечная выносливость Без перезарядки оружия Бесконечные патроны Бесконечные очки на прокачку персонажа Быстрые убийства Быстрое прохождение квестов Супер скорость Точность оружия Без отдачи оружия Бесконечные предметы Добавить время Бесконечный вес Много очков Невидимость Добавил LIRW Добавлено 04/18/21 Категория Трейнеры для PC игр  
  17. 1 балл
    Вот видео с примером подобного способа для CSS.
  18. 1 балл
    не только тогда . антиотладка в играх встречаеться редко , а этот способ поиска обычно применяеться когда с отладкой все в порядке , но инструкции к нужным адресам не обращаються. часто бывает что игра прочитала адрес только один раз при загрузке и больше обращений к адресам нет . тогда не какой реверсивный поиск не поможет , а этот выручит . в чит енжин 7 в таблице нажать правая кнопка мыши на название графы value . появиться надпись sort on click . поставить галку . теперь если нажать на название графы value произойдет сортировка всей таблицы по значению . если снова нажать то будет обратная сортировка . только если помню лучше переключать на десятичный вид , а то чит енжин значения в хексе может криво сортировать .. вроде же есть таблицы https://fearlessrevolution.com/viewtopic.php?t=3281 https://fearlessrevolution.com/viewtopic.php?t=3210 может какая то другая игра ?
  19. 1 балл
    Не плохой урок, но много лишних движений.., что думаю будет путать людей (кстати ты и сам из -за этого видно запутался малёха, в первом поиске вместо 10000 тыс. вычел 1000, а потом удивился, что снова 43 адреса нашлось.. ). Моё мнение, что любой кто занимается взломом должен мал -мала уметь считать в уме..., а из этого следует.. лишние движения с калькулятором (что соответственно и путает) Проще наверное не копировать и не сбрасывать каждый раз в калькуляторе..., если первый раз вычитаем 10000 тысяч, не проще убрать шаги с копированием и вставкой адреса сделать более простое движение, а именно прибавить 9000 т.к. разброс нам надо на второй раз 1000, ну и по такой схеме с учётом разброса прибавлять.., а не делать лишних не нужных движений.., да и время экономит.. В любом случае урок хороший и плюс не поставить просто грех. А в целом молодец..👍
  20. 1 балл
    Вот и настало время когда я вернулся снова к этой игре Только теперь уже для нее есть исходный код, который позволит находить всякие функции в разы быстрее и проще На этот раз будем делать карту ресурсов, рисовать ее и загружать прямо в игру Этапы которые этому способствуют 1. Распаковать саму карту из surfaces.pck 2. Достать саму карту, посмотреть каким образом она примерно отображается 3. Узнать координаты респа ресурсов Vec3 на карте 4. Перевести Vec3 игровые в Vec2 картовые 5. Нанести по Vec2 соответствующие иконки 6. Привести все в читаемый формат для игры 7. Запаковать все обратно 1. Распаковка pck этой игры уже не представляется сложностью, и есть довольно много софтов делающее это (Собственно как и упаковка обратно) А значит пункты 1 и 7 не сложны совсем 2. Карта в игре отображается довольно специфическим образом (Незнаю как до этого додумались разработчики, или же это движок сам режет так интересно) В целом картина такая Мировая карта состоит из 88 частей - т.е. 8 столбцов и 11 строк (В свою очередь каждый квадрат тут 1024*1024 пикселя) Из всех этих кусков собирается единая карта, которую можно будет увидеть в игре Формат файла dds, т.е. в итоге мы должны получить карту в 88 dds файлов как в оригинале 3. Координаты респа найти довольно легко, опять же распаковав configs.pck Внутри будет coords_data.txt в котором некоторым списком указаны Vec3 координаты нахождения ресурса / моба и т.п. Структура примерно такая Парсим нужные координаты по ID (Пишем вспомогательный парсер который выдаст c++ массив с Vec3) 3091 - ID, world - фильтрация только для основной карты Ну и достаем Vec3 - x y z координаты 4. Когда есть массив всех этих ресурсов, нужно перевести Vec3 (Т.е. внутриигровое положение в мире, на карту, которая 2D) Тут поможет исходник клиента PW, и метод который рисует стрелочку игрока на карте Вот та самая функция в исходном коде, далее надо ее найти и заменить координаты (т.е. оригинально передаются Vec3 игрока, и вычисляется Х-У для рисования на карте) Ничто не помешает нам подменить эти координаты на те, где находятся ресурсы Vec3 Далее дело техники, и создания хука (Учитывания calling conventions, определения аргументов и т.д.) Имея исходный код не так сложно найти функцию (Правда версия игры немного старее чем этот исходный код) Собственно вот и хук. В цикле перебираем массив который сделали на шарпе путем парсинга файла Выдаем результаты в виде массива (Далее пригодится) Таким образом я получил координаты для 4х видов ресурсов (Больше мне и не нужно. Vec2 координаты) ~320 штук 5. Далее необходимо нанести все это дело на карту. Дабы не скреплять все 88 кусков в каком-нибудь редакторе мне удалось найти (Не без помощи) карту 8*1024 х 11*1024 пикселей. Т.е. точно такую как и нужна Для добавления иконок на общую картину была написана еще одна вспомогательная программа на шарпе, которая грузит общую карту, а потом по координатам ставит маленькую иконку 16х16 по координатам из массива (Скрин выше) Ну соответственно наносим сами иконки на общую карту и сохраняем в jpg. Получаем на выходе карту в 113мб с нанесенными иконками Остается всего 2 пункта, один из которых пустяковый 6. Режем эту общую карту в фотошопе (Качаем фотошоп, да да у меня его не было на этой машине) с помощью инструмента "раскройка" И как раз получаем 88 изображений; 8 столбцов и 11 строк, где каждая картинка по 1024*1024 пикселя. Идеально Остается нерешенным только вопрос конвертации из jpg в dds. Но тут придется только ручками все делать. А также ручками приводить потом названия этих кусочков в вид который на скриншоте №1. (Не смертельно, но долго) Заменяем 88 dds файлов на новые в папке maps 7. Запаковываем все обратно в единый pck файл программой из п1. и проверяем в игре. Все работает. Отлично.. Сама по себе идея не новая, но вот реализации именно внутри игры пока что не видел нигде
  21. 1 балл
    Базовый способ взлома — это поиск адреса в памяти игры по правилам поиска, изменение значения адреса и заморозка значения по адресу. Это можно сделать с помощью программ Artmoney, Cheat Engine и других сканеров памяти. Правила поиска описываются в руководстве Artmoney на русском языке. Этим способом можно взломать (или сделать читы) чуть ли не на все игры. Если в игре загружается игровой уровень или игровая сцена, то адреса в памяти могут поменяться и придется адрес искать вновь. В этом случае можно использовать поиск указателей, который может быть как быстрым так и очень долгим. Попробовать можно в тех же программах Artmoney, Cheat Engine. Если поиск указателей не хотим использовать, т.к. он долгий, то есть вариант изменить код игры для того чтобы по адресу записывалось другое значение. Попробовать можно в тех же программах Artmoney, Cheat Engine. Для этого нужно поставить брейкпоинт на найденный адрес, выйти на инструкцию ассемблера и что-то с ней сделать. Для нужно поискать руководства по инструкциям ассемблера. Кратко 1) если инструкция пишет в адрес, то её можно занопить, т.е. стереть. mov, dec, sub или другие... 2) с Cheat Engine можно заменить инструкцию, если размер инструкции в байтах подойдет. Если не подойдет, то заменяем инструкцию на инструкцию прыжка на адрес выделенной памяти, в которой пишут немного "сложного" ассемблерного кода и затем делают прыжок обратно. Если все делается с Cheat Engine, то на действия вешаются хот-кеи. Создается таблица или трейнер и все готово. Берем любую игру, Cheat Engine, делаем трейнер и публикуем его на форуме или где захотим. Вы можете пойти по следующим путям: 1) писать скрипты для CE (Cheat Engine) 2) генерировать трейнеры на CE, 3) можете писать трейнеры на языке программирования. Во всех трёх направления на нашем форуме (если поискать) есть как простые примеры, так и очень сложные. Лучше всего начать со справки Артмани и использовании самой этой программы. Затем установить Cheat Engine и подробно смотреть и читать следующие темы: 1) Туторы по CE Autoassembler Engine; 2) Grand Theft Auto Vice City, метод указателей (использовалась TSearch, но вы должны всё понимать как если бы это было CE ) 3) Посмотрите наш раздел по Cheat Engine 4) Ну и чиnаем всё что найдёте у нас на сайте и на форуме. Для более опытных Lua Engine в CE для создания трейнеров или создание на языках программирования с Windows API. Термины
  22. 1 балл
    Lineage II Lineage2 LINDVIOR download - https://yadi.sk/d/zJiLykepzyn6LwRevision: 531 LANG:EN L2exe + Engine.dll unpacked themida clean 100% [ unpacked - AlisaCodeDragon ] [ NOGG off game guard ][ off FROST MODULE ][ patched ] [ KILL AwesomiumProcess ] <------------------------------------------> !!! ATTENTION !!! Start Game - Use l2exe ! Start DevMode - Use L2_DEV.bat ! <------------------------------------------> TEST GAME - ( don't cry it's a game ) ⭐LEGENDARY⭐REVERSECODE-TEAM⭐
  23. 1 балл
    Наверняка многим было интересно как же всё таки работает SpeedHack предоставляемый Cheat Engine, в этом видео рассказывается об этом: Кратко для тех, кто не хочет смотреть:
  24. 1 балл
    Здравствуйте! Я записал видео уроки, по программированию и созданию трейнера на Lua (Cheat Engine), после чего решил поделиться с вами и выложить их на данный форум. Впрочем вот и сами видео уроки: Видео урок 1: В данном видео уроке мы разбираем работу со статическими адресами. Видео урок 2: В данном видео уроке мы научимся работать с AAScript (Cheat Enigne). Видео урок 3: В данном видео уроке, разбираем такую тему как GUI, научимся добавлять контролы, так же научимся работать с ними. Понимаем что такое Main Lua, и учимся с ним работать. Видео урок 4: В данном видео уроке мы учимся ставить BreakPoint и получать значение регистров. После чего учимся создавать хоткеи, создавать таймер, замораживать значения. Видео урок 5: Используем наши знания и пишем трейнер для игры Left 4 Dead 2. В конечном результате работаем с функцией которая взаимодействует с жизнями, обрабатываем ее, и делаем нас бессмертными. (AAScript). Исходники трейнеров выкладываются под видео в описании. Спасибо.
  25. 1 балл

    Версия Steam 25.06.2018

    2 раза скачали

    Бессмертие. Бесконечная броня. Бесконечные патроны. Супер прыжок. PS: Все функции работают по принципу "без вычитания из существующего значения".
  26. 1 балл
    @Garik66 спросил - как использовать createthread, чтобы он не крашился. Начал отвечать и это слегка вышло за рамки простого ответа в тему, поэтому решил выделить это в отдельный топик. Я не очень хорошо знаю assembler, но попробую описать возможные причины. createthread создает поток и просит его выполнить call с адресом переданной функции. Например в данном случае createthread(my_function) в отдельном потоке выполнит call my_function: И тут вступает в дело стек, да. Вот эта штука (в Memory View вызывается через ПКМ на правом нижнем окне и выборе пункта Full stack): После выполнения call my_function мы попадаем в нашу функцию, а в стек записывается адрес, куда нужно вернуться после выполнения этой функции (my_function). Собственно за возврат куда нужно и отвечает ret. Он берет первую запись из стека и делает jmp в правильное место. Собственно сам адрес возврата виден в стеке на скриншоте - это KERNEL32.BaseThreadInitThunk+24. Без ret ассемблер вывалится за пределы функции и попытается выполнить команду - add [eax],al , хотя для нас это просто участок пустой памяти - 00 00. Ну а так как в EAX ничего приличного нет, то программа выдает ошибку - сорян, не могу записать в данный участок памяти и падает. Поэтому ret обязателен. Из этого вытекает то, что при подходе к ret в последней записи в стеке (адрес в регистр ESP) должна быть с правильным адресом возврата, который был нам передан из call my_function. И основная причина крашей в том, что регистр ESP указывает не на тот адрес при выполнении команды ret. Программа выполняет jmp на неизвестный нам адрес и крешится из-за невозможности выполнить команды, на которые она попала (как с add [eax],al). А что собственно двигает стек и адрес регистра ESP? А двигают стек наши любимые команды push и pop. Собственно, когда мы пытаемся вызывать функцию и передаем параметры через push #100, на самом деле выполняются две команды - sub esp,4 и mov [esp],#100. Первая уменьшает адрес вершины стека на 4 байта, а вторая записывает на вершину стека значение 100. А pop eax сдвигает вершину в другую сторону - делает mov eax, [esp] и дальше сдвигает вершину стека назад add esp,4. Поэтому после того, как мы сдвинули стек с помощью push при передаче параметров в функцию - после её выполнения нужно сдвинуть стек обратно! Собственно следующий пример почти 100% скрешится: Мы ввели новую функцию second_function, которая берет переданный аргумент и записывает его в EAX. Вроде бы всё просто, передали в функцию 100, получили в EAX ответ, а всё равно креш. Почему? А это видно на следующем скриншоте - на вершине стека теперь хранится значение 0x64 (=100): Теперь когда выполнится ret он попытается прыгнуть на адрес 0x00000064, а не на 0x760E8744 как должен был. Как же этого избежать? Есть несколько путей: сохраняем значение регистра esp и возвращаем его перед ret внимательно следим за стеком по мере выполнения нашей функции и к концу программы он сам будет в правильном месте В целом первый способ очень неплох. Мы можем сохранить адрес регистра esp в памяти и вернуть его прямо перед вызовом ret. Например: Но это не совсем assembler-way, поэтому я предпочитаю следить за стеком самостоятельно. Для этого нужно обращать внимание на то, как со стеком работает вызываемая функция. Например, наша функция second_function не следит за стеком. Поэтому если мы делаем push для передачи параметров, то мы так же должны сдвинуть его назад. Это можно сделать через pop указав неиспользуемый регистр или просто добавить к адресу ESP 4 байта (размер адреса в 32 битной системе, в 64-битной - это 8 байт): Собственно таким образом мы двигаем стек за функцией. И в зависимости от количества переданных push - на такое же количество нужно сдвинуть и регистр ESP. Например для 3-х аргументов нужно выполнить 3 pop или добавить к esp 3 * 4 (3 - количество сдвигов, 4 - размер инструкции): В результате мы получим следующий код: Единственное, есть небольшое исключение - функции, которые сами заботятся о стеке, после их вызова не нужно сдвигать регистр esp, просто делаем push и call. Их довольно просто отличить, посмотрим на примере следующего кода: Основное отличие - после call функции которая сама двигает стек не идет ни каких add esp,8 или не выполняются pop: Так же можно обратить внимание на код самой функции, а точнее на ret 8. Параметр 8 указывает программе, что нужно не просто взять адрес из вершины стека и прыгнуть на него, а так же после этого сдвинуть стек на 8 байт, т.е. выполнить ret и add esp,8. Собственно и получается, что add делаем не мы, а сама функция. Вот и получается, что следя за стеком и тем, как вызываемые функции заботятся о стеке - мы не получим крашей в вызове createthread.
  27. 1 балл
    Посмотрел свое видео (первое) и лучше бы не смотрел. Щелкания бесконечные, нет объяснения, калькулятор зачем-то и без него можно. Ближе к концу видео там какая ерунда с повторами перерасчета. Если мне сложно понять, то что я сам делал без повторов и всматриваний, то что говорить о тех, кто первый раз смотрит, тот не разберется вообще.
  28. 0 баллов
    Resident Evil Village Просмотр файла Использование: Запускаем сначала игру, а в главном меню игры (либо в уже начатой) запускаем трейнер Функции: Бесконечная жизнь Без перезарядки оружия Бесконечные патроны Скорострельность оружия Легкие убийства Подсветка предметов Бесконечные деньги Бесплатный крафт Бесконечные мины Бесконечные отмычки Без отдачи оружия Очень быстрая перезарядка оружия Добавил LIRW Добавлено 05/11/21 Категория Трейнеры для PC игр  
  29. 0 баллов
    правильно . не много сумбурный ролик , но для новичков тема урока полезная . опытным читерам кажеться все просто , но не мало начинающх даже не догадываються о таком способе . молодец ,что стараешься для новичков это хорошее дело . на критиканство не обращай внимание , а то так можно про любой ролик сказать типа "плохой урок потому что в какой то игре твой способ не работает" . например известная игра Victor Vran . на ней получаеться вообще не какие уроки не работают , игра вышла в 2015 году , а ее до сих пор не вломали , но это же не значит , что все уроки бесполезные . про недостатки ролика уже написали . загрузки игры и другие лишние места лучше из урока убирать в этом я согласен . когда ты смотришь в структуре какие данные изменились я советовал бы применять теневую копию . так на много легче и быстрее находить что поменялось в структуре .
  30. 0 баллов
    1. Фоновый шум - его надо убирать шумодавом. 2. Загрузки - их надо вырезать. 3. ФК1 - очень неудачный пример. Там за один отсев легко выйти на структуру героя, сделав поиск строки "Jack Carver" (вроде так героя зовут). 4. Насчет близости адресов - это работает в играх до 2008 года примерно. 5. Твой приём не прокатит, если оружие лежит в отдельной структуре, а в структуре героя лежит указатель на структуру оружия. Ну и последнее - я не увидел в этом уроке ничего, что не покрывалось бы в каком-либо из уроков в плейлисте по взлому игр на нашем канале. ЗЫ. Когда записываешь структурку в блокнот, говоришь, как робот Вертер )) Прикольно )))
  31. 0 баллов
  32. 0 баллов
    Первая ошибка - в цикле ты используешь адрес, он должен быть на 8 байт меньше. Если коротко, то у тебя цикл выходит за границы массива, то есть при последующих итерациях получается Length.newArray > Length.oldArray. Вторая ошибка - надо "<=", так как индексация начинается с нуля, при "<" последний символ массива не будет учитываться. Извиняюсь, давно не кодил, возможно, ошибаюсь.
  33. 0 баллов
  34. 0 баллов
    Всем привет. Относительно недавно начал изучать матчасть по CE, и вместе с этим мне не дает покоя один бесящий косяк, из-за которого мне не удается отыскать некоторые значения, которые находятся лишь в паре с заморозкой, или, к примеру, применить поиск указателей через дебаггер по видосу кенга. Перейдем к сути: https://youtu.be/U2sZNnfE6Zw Показал ошибку в кубах (STALCRAFT), где она наиболее выражена. В других играх эффект практически аналогичен, где-то курсор багается поменьше, где-то побольше. Разницы при попытке юза другой фризящей проги - ровно 0. Все одинаково лагает как на Cheat Engine, ollydbg, так и в богом забытом process hacker'e. Попытался сгладить углы с помощью разморозки горячими клавишами, например, в том же CE, но клава тоже тормозит, и иногда даже хуже мыши - отклик с горячих клавих от нажатия до разморозки от 30 секунд до минуты, что никуда не годится. При заморозке простых окон какого-нибудь гугла и прочего - мышь двигается полностью исправно. Что еще хочу подметить - при прожатии ctrl + alt + del и входе в окно перед диспетчером - курсор полностью отбагивается и работает нормально, значит ключ к решению скрывается где-то в системе работы окон шинды, но как на нее повлиять - у меня нет ни малейшего понятия. Гугление не дало результата: опробывал все от банального изменения настроек курсора в панели управления, смены быстроты курсора и частоты опроса в кастомной проге мыши, прокрутку неактивных окон и кастомизации окон, вплоть до обновления шинды на самую новую сборку и изменения приоритета производительности в диспетчере на низкий - проблема как была, так и осталась. Прошу от чистого сердца форумчан о хотя бы малейшей подсказке по моей проблеме, ведь на данный момент я в тупике.
  35. 0 баллов
    SuperCooper v.2.0 +6 Просмотр файла Описание: Функции: Numpad_1 - Inf.Chield Numpad_2 - Activ_Weap_Spr Numpad_3 - Jump Numpad_4 - MyWeapon Numpad_5 - Life => 25 Numpad_6 - Many + 1500 Пояснение функций: Руслан (Xipho), благодарю за помощь со скриптом. Видео-трейнер Добавил SerVick Добавлено 28.04.2021 Категория Трейнеры для PC игр
  36. 0 баллов
    А почему ты не спрашиваешь, за что вам плюсы? Наверное, минусы, это противовес плюсов за "красивые глаза". Не нужно тащить сюда тему с [CENSORED]офорума, на котором ты сидел (а может и сидишь), где вы друг другу по кругу плюсы пихаете за "спасибо", "пожалуйста", "привет", "пока" и т.д. и т.п.
  37. 0 баллов
    Спасибо Женя, я бы не догадался так объяснить.
  38. 0 баллов
  39. 0 баллов
    спасибо вам ребят, ни разу такую технику не использовал интересно стало))
  40. 0 баллов

    Версия 7.2

    650 раз скачали

    Установка: Скопировать содержимое архива в корневую папку Cheat Engine
  41. -1 балл
    ну вот ты во всём и разобрался😉
  42. -1 балл
    @JustHack что молчишь? Как это найти АЛО, ЧСВшник!
  43. -1 балл
    Во время отладки понял что если q = 22 i = 124376 то все работает но если i > этого значение(что я привел выше), вылетает эта ошибка(которую я в теме указал) Только вот я не понимаю, откуда там цифры такие берутся...
×
×
  • Создать...

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

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