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

Лидеры

  1. JustHack

    JustHack

    Разработчики


    • Баллы

      42

    • Постов

      342


  2. MasterGH

    MasterGH

    Ветераны


    • Баллы

      38

    • Постов

      2 999


  3. imaginary

    imaginary

    Помогаторы


    • Баллы

      19

    • Постов

      319


  4. roma912

    roma912

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


    • Баллы

      13

    • Постов

      223


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

Показан контент с высокой репутацией за 26.08.2018 в Записи блога

  1. Возможен бан в игре. Вы используете хак, на свой страх и риск. Перед использованием, ознакомьтесь с ЭТИМ Поддерживаемые ОС: Win7+ (x64) Поддерживаемая версия клиента: (x64) Поддерживаемая версия DirectX DX9, DX11 Поддерживаемые античиты: MRAC Версия от 11.11.20 (Последняя) Undetected ЕСП: Силуеты врагов Силуеты взрывчатки Силуеты капсулы Силуеты пауки Силуеты боссов миссий Аимбот: Супер аимбот Кость - наилучший выбор (простые враги - голова, джаггернаут - рюкзак и т.п.) Аим на турели Аим на пауков Аим на мины Аим на капсулы Аим на боссов Мемхаки: Отдача Точность Беск патроны АнтиАФК Кик с пве и спецопераций (в любой момент) Подсад в любой точке на карте Быстрый нож ПКМ, ЛКМ Без перегрева СЕД Видео: Инструкция: Запускаете игру Внедряете dll Нагибаете Активация/Деактивация хака - клавиша INSERT wfru.rar
    5 баллов
  2. Вот и настало время когда я вернулся снова к этой игре Только теперь уже для нее есть исходный код, который позволит находить всякие функции в разы быстрее и проще На этот раз будем делать карту ресурсов, рисовать ее и загружать прямо в игру Этапы которые этому способствуют 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. и проверяем в игре. Все работает. Отлично.. Сама по себе идея не новая, но вот реализации именно внутри игры пока что не видел нигде
    5 баллов
  3. Обход функции, снятия скринов античитами. 01.11.2020 Undetected Поддерживаемые системы: x64 only Windows 7+ Поддерживаемые режимы игры: Windowed mode FullScreen Инструкция: Для запуска требуются права администратора Запустить файл Запустить игру Играть В зависимости от античита, скрины не будут сниматься или будут чистые BpScr.rar
    5 баллов
  4. Вот тут показаны некоторые простые функции LUA и как сделать управление перемещением на примере игры Terraria. Первая часть: Вторая часть:
    5 баллов
  5. 11 декабря 2019 года форуму Gamehacklab исполнится 10 лет. Это дата первого пользователя форума. Поздравляю всех: активных пользователей, высший состав форума, админов и модеров, старожил, помогаторов, тех кто был на форуме очень давно и перестал заходить. Отдельно @Xipho, @srg91, @partoftheworlD, @Garik66, @LIRW, @SER[G]ANT, @gmz. Извините, если кого-то персонально пропустил. Можно пожелать всем бесконечного энтузиазма на тему поиска сигнатур и значений, сравнении структур и стеков, дизассемблирования и ассемблирования. Энтузиазма в программировании на C++ и WinAPI. Энтузизма в том, чтобы найти универсальное решение при создании любого чита для любой игры. P.S. Для энтузиазма. Подкину идею. Мне нравится видеть, как наборы инструкций можно условно разделить на: математические, логические, ветвления, чтения и записи и другие. При этом математические на мой взгляд наиболее выделяются, т.к. они заставляют в игре всему меняться. Хотя логические инструкции тоже могут что-то менять, но по ощущениям не так явно менять, как математические инструкции. По математическим в основном меняются перемещение камеры и перемещение персонажа и изменяются игровые значения. Можно отдизассемблировать весь игровой код и найти все математические операции и точно некоторые из них связаны с будущими читами. Это всякие добавить, отнять, умножить, разделить. Не думаю, что их будет за тысячу даже, которые именно нужны для читов, а не те которые что-то рассчитывают не понятно что) Если руки дойдут, то возьму IDA да пройдусь по какой-нибудь игре с поиском всех математических инструкций, поставлю на них счетчик срабатывания да прогуляюсь в игре персонажем... Если будет время...
    4 балла
  6. Всем привет. В этой статье, мы создадим 100% точность и разброс для нашего учебного проекта. В этом уроке, появляется всё больше самостоятельной работы. Хотя, для тех, кто освоил прошлые уроки, это покажется легкой прогулкой. Мы просто, заставляем ваш мозг производить какие-то действия, а не тупо идти по шагам и копипастить. Итак, для создания этого, нам понадобится узнать смещения 2 классов - IGame и ICVar. IGame - ищем "IsPlayer" Получили смещение класса IGame. Аналогично с ICVar - ищем "GetCVar" и проделываем предыдущие шаги. После этого, нам нужно найти смещения функции SetIPelletsDisp и CrosshairSpreadTuning в ICVar. Нашли, восстановили классы, пишем саму функцию: void noSpread() { while (true) { IGame* pIGame = pSSGE->pIGame; if (!pIGame)continue; ICVar* pIcvar = pIGame->GetICvar(); if (!pIcvar)continue; float iValue = 200; pIcvar->SetIPelletsDisp(iValue); pIcvar->CrosshairSpreadTuning(0); Sleep(1); } } Собираем, внедряем, готово. Продолжение следует...
    4 балла
  7. Случилось мне столкнуться с ситуацией, что есть "лёгкий" способ сделать очень интересные изменения в процессе, просто подменив URL адрес запроса, или ответ, получив при этом совсем другой результат, так появилась эта программа ?. Не работает на Windows 8 и 10 А вот и описание.. Программа URL drafter Основные функции: Отслеживание URL запросов программы: Позволяет отслеживать и логировать все передаваемые программой URL запросы. Это позволяет получить прямые ссылки на скачивание или просмотр файлов / информации которая запрашивается процессом. Например - htmp файл с параметрами, или 3ds модель, что угодно. Создание фильтров подмены: Позволяет создать фильтр, указав в нём полный запрос от программы, управлять его состоянием, сохранять файлы со списком фильтров, загружать эти файлы. Таким образом можно сделать много файлов для разных функций и загружать их когда нужно. Фильтр позволяет заменить URL запрос на свой, таким образом можно подменить файл, или что либо ещё необходимое процессу. Файл можно положить на свой локальный сервер (localhost), или туда куда удобно. Нужно учитывать что не все файлообменники отдадут файл по прямому запросу от не авторизованного пользователя (процесса). Побочные функции: Просмотр всех процессов в системе - их id и имени. Просмотр загруженных в процесс модулей. Команды программы можно посмотреть введя "help". Все команды могут принимать аргументы сразу, или по порядку. Например ввести "connect 3442" или сначала "connect" а потом "3442" это одно и тоже. Программа создаёт файлы в директории которой лежит, если не будет указан полный путь, потому лучше поместить файл в папку. Версия 32 бит: URLdrafter x32.exe Создание фильтра: *Удобнее создавать фильтры через файл Для создания фильтра нужно прописать "fcreate (название фильтра) (номер активности 1/0) (что найти) (на что заменить)" Название - может быть абсолютно любым. Номер активности - включён ли фильтр, позже можно изменить командой "fenable" Что найти - полная URL ссылка, без http, в таком виде как выводит программа. На что заменить - полная URL ссылка без http которой будет заменена найденная ссылка Пример: В файле фильтр выглядит вот так: ,1,WeaponModel,localhost/map.eax,abz/online.html, фильтры разделяются пробелом или переходом на новую строку, запятые обязательны в начале и в конце. *Фильтры работают только если включен перехват URl . Краткое руководство, если что то не понятно: Примеры использования фильтров на разных приложениях (НЕ будет пополняться): Небольшое видео работы: *Это консольное приложение написанное на C++. *Пока доступна только 32 битная версия, соответственно открывать 64 битные процессы ей не получится. 64 битная НЕ выйдет в ближайшее время. *Распространение разрешено с указанием данного форума как источника и авторства (хотя в программе всё указано).
    4 балла
  8. Описание: Инжектор с ручным отображением (Extended) + скрытый запуск процесса 31.03.2021 Undetected Поддерживаемые ОС: Только 64 бит Windows 7 Windows 8 Windows 8.1 Windows 10 Инструкция: Запустить jhinj.exe (требуются права администратора) Выбрать ID процесса из списка и нажать ENTER Указать расположение dll для инжекта или модуля для скрытого запуска Нажать ENTER Профит Внимание! После 1 запуска, имя инжектора отображаться не будет. В последующем вам необходимо запускать файл ".exe" СКАЧАТЬ
    3 балла
  9. Продолжаем создавать наш noflash. Открываем Reclass x32 и создаем новый класс. Далее, переименовываем название класса в SSystemGlobalEnvironment. Сейчас наш класс очень мал. Нарастите класс до смещения 0x90, используя панель модификации. Переходим на смещение 0x88, жмем по зеленой стрелке, выбираем тип - Указатель. Переименовываем указатель в p3DEngine. Ниже строчкой, переименовываем класс в I3DEngine. Спускаемся еще на строчку ниже. Создаём виртуальную таблицу, указав тип VTable. Открываем и видим, что функций всего 9, а нам нужно 143. Смещение 572 / 4 т.к. 32 битный процесс. Если бы был 64 битный, то делили бы на 8. 143 это и есть наша функция SetPostEffectParam() Наращиваем количество функций, как делали с классом. Переходим на 143 функцию, двойной клик, вписываем саму функцию. И очищаем лишнее в классе. Далее жмем "генерировать" класс. Получаем готовый код класса, копируем в удобное место. Открываем Visual Studio, создаем пустой проект, тип проекта "Библиотека DLL". Добавляем исходный файл main.cpp и заголовочный файл classes.h . В main.cpp подключаем #include <windows.h> #include "classes.h" Прописываем нашу функцию В точке входа создаем поток CreateThread(0, 0, (LPTHREAD_START_ROUTINE)noFlash, 0, 0, 0); Открываем файл classes.h и вставляем туда сгенерированный код из ReClass. В итоге файл classes.h будет выглядеть вот так Собираем проект. Внедряем в игру. Готово. Продолжение следует...
    3 балла
  10. Вступление В CE выделим участок кода и функцию Sub eax,edx - вычитание и наиболее значимее чем запись и чтение. После декомпиляции Если выделили две инструкции Обращать внимание будем на математику, логику, условия и потом на чтение и запись. В данном случае, нужно найти вычитание из адреса "eax4->f1152 = eax4->f1152 - (eax3 + 1)" Как поставить декомпилятор 1. С форума Cheat Engine качаем архив 2. Распаковываем в папку с Cheat Engine 3. В настройках открываем плагин cesmartdec.dll 4. Идем на инструкцию, выделяем функцию 5. Декомпилируем на первой выделенной инструкции из всех выделенных
    3 балла
  11. Я решил рассмотреть три новые функции: Пользовательские типы данных в hex-окне Фильтр на окне определения адресов Поиск данных в окне Tracer 1. Пользовательские тип данных в hex-окне Пример как сделать: Фильтр на окне определения адресов 3. Поиск данных в окне Tracer Обычный поиск, как на прошлых скринах Примеры Ну и более интересная версия перебора и одновременного выделения записей. Здесь нужно открыть окно "Трейсера" и рядом в Lua окне писать свои условия в функции "Compare()", "PrintData()", Selected() Документация Для вывода referencedBytes из трейслога можно использовать byteTableToDword(referencedBytes) (смотрим документации выше) получая из TfrmTracer.Entry[index].referencedBytes или в строке поиска у Трейслога вбить byteTableToDword(referencedBytes) > 0 and print(string.format("0x%08X - 0x%08X", RIP, byteTableToDword(referencedBytes))) == 1 Практическое применение Больше всего могут интересовать реальные практические примеры. Если будет время, желание может быть сделаю, а так просто общий обзор.
    3 балла
  12. Уже множество раз разными участниками форума поднимался вопрос о внедрении своих функций (например на С++) в чужой процесс и что бы они там правильно исполнялись. То есть что бы можно было написать свой код, потом включить компиляцию, и функция добавляется в чужой процесс без всяких проблем, на неё можно послать поток игры, сделать прыжок и так далее, изменять когда хочешь на высоком уровне, а не на ассемблере. Мною было проведено исследование в котором было поставлена цель сделать это, и по итогам это вполне возможно! и это просто замечательно! ☺️ Нужно просто написать внедряющую часть, которая учитывает различные моменты и восстанавливает зависимости функции в новом процессе. В этих трёх видео показан процесс исследования с нуля, до успешной работы ? В них нет звука вообще, даже кликов, так что советую включить какую то музыку если будите смотреть А ещё в них прокомментированы действия, и некоторые функции взаимодействия с памятью других процессов, что может быть полезно: В первом виде всё медленно из за моей сонности ? Во втором кульминация продуктивности! В третьем к завершению дополнительно рассмотрено как сделать бегающий по экрану квадратик (к сожалению на видео он мерцает, на самом деле это не так), а ещё в нём почему то гора пропусков в конце, постоянно само ставилось на паузу, но это уже после основной части, где эксперимент объявлен успешно завершённым ? (если кто то что то заметит странное то скажите пожалуйста если не лень) Тут показан общий принцип, если кому ни будь это будет интересно, могу продолжить и добавить перенос других зависимостей что бы можно было писать используя типы, или же вызывать другие функции, которые не помечены как внедряемые (то есть перенос вложенных функций) Добавлены видео: Скучное видео в котором делается AOBscan для автоматического поиска Часть 5, в которой код приводится в порядок и создаются универсальные функции, а потом демонстрируется автоматическое размещение на разные адреса, это лучшее видно в плане принципа работы и кода? Демонстрация того что можно сделать, но уже на 64 бит ☺️
    3 балла
  13. В таблице поиска есть колонки ссылающиеся на название Lua перменных: "value" и "previousvalue" А что можно делать? Сравнивать текущее и предыдущие значения вместе или по отдельности, в том числе на разных вкладках CE Примеры: value == 65 value == 0x65 (или поставить галку hex) value ~= 65 (или поставить галку not) Можно и такое сравнение сделать после поиска неизвестного используя математические функции: math.abs(value - previousvalue) < 10 Можно делать различные комбинации: and (логическое И). or (логическое ИЛИ). not (логическое НЕ). + (сложение); - (вычитание); * (умножение); / (деление); ^ (возведение в степень); % (остаток от деления). == (равно); ~= (не равно); < (меньше); > (больше); <= (меньше или равно); >= (больше или равно). Что на счет xor? Можно написать функцию xor Пишем глобальную функцию сначала: function BitXOR(a,b)--Bitwise xor local p,c=1,0 while a>0 and b>0 do local ra,rb=a%2,b%2 if ra~=rb then c=c+p end a,b,p=(a-ra)/2,(b-rb)/2,p*2 end if a<b then a=b end while a>0 do local ra=a%2 if ra>0 then c=c+p end a,p=(a-ra)/2,p*2 end return c end А потом применяем даже отдельные функции как в этом примере "value > 0 and BitXOR(value, 100) " А может быть я хочу только 100 первых результатов CheckCount100() and value > 0 and BitXOR(value, 50) Также хочу добавить те адреса, которые предположительно являются указателями getAddressSafe('['..value..']')~=nil Или наоборот не являются указателями getAddressSafe('['..value..']')==nil Еще можно попробовать добавить 50 красных и 50 синих указателей в таблицу CE, но это уже задание кому интересно. Можно в теории сравнивать адреса со значениями известных адресов и даже с известными указателями, с метками. Но поиск может затянуться, если адресов очень много. Можно попробовать указать условие, что значение адреса должно находиться в X структуре или в её вероятных указателях. Или попробовать оставить только одинаковые значения адресов, т.е. повторяющихся более 1 раза. Или попробовать искать только те адреса, к которым применимы сразу несколько условий чтобы не кликать их постоянно: (изменилось) И (больше 0) И (меньше 10000) (не изменилось) И (больше 0) И (меньше 10000)
    3 балла
  14. Эта программа полезна тем кто: Хотят поиграть в новые игры, но возможности приобрести самые современные устройства для этого нету Хотят увеличить разрешение в какой либо игре, выше системного - аналог сглаживания Хотят развернуть на весь экран приложение, которое это не поддерживает Описание: Программа позволяет изменять разрешение на заданное пользователем и растягивать окно на весь экран, пока работает определённый процесс. Например, таким образом можно оптимизировать игру, (уменьшив разрешение), растянуть на весь экран и тому подобное. История: В некоторых играх, например в Watch Dogs 2, есть такая настройка - качество разрешения. Изменяя её, можно уменьшить качество выводимого на экран изображения, и очень сильно увеличить fps. К сожалению далеко не все разработчики делают такую настройку, и мне захотелось создать такую программу, которая будет делать тоже самое, но с любой игрой. Инструкция: При первом запуске программа создаст в своей папке (там где лежит exe) файл games.ini, в нём будет 2 строчки заполненные для примера. Все команды программы и инструкцию можно узнать в ней, написав help. Файл нужно заполнять вот так: Название_процесса.exe Xразрешение Yразрешение Пример: witcher3.exe 800 600 terraria.exe 640 480 Каждая игра должна начинаться с новой строки, расстояние между элементами должно быть один пробел. Если игра имеет права админинстратора, то программа тоже должна быть запущена с такими правами. После запуска программа сразу начинает работать, если файл заполнен правильно, остаётся только запустить игру. После запуска игры разрешение изменится, окно игры разместится под размер экрана, после закрытия игры разрешение будет восстановлено, игру лучше всего запускать в оконном режиме без рамки. потому что некоторые игры в полноэкранном режиме принудительно пытаются поставить своё разрешение, если программа не сможет переспорить игру в таком случае, она об этом сообщит Если возникают проблемы с узнаванием названия процесса игры, можно посмотреть все активные процессы и процессы использующие DirectX с помощью команды show Если написало что игра запущена и разрешение, но оно не изменилось, значит это разрешение не подходит к вашему монитору, монитор не поддерживает любые разрешения, потому например 274 x 367 может и не сработать. Используйте правильные разрешения, например если хотите получить разрешение 2/3 от своего, разделите X и Y своего разрешения на 3, умножьте на 2 - такое вероятней всего будет записано. Эксперементируйте, или посмотрите таблицу поддерживаемых разрешений для вашего монитора с помощью команды list. Если в названии процесса используются пробелы, пишите его в кавычках, например: "For See.exe" 800 600 Файл: 64 бит: ResFitter x64.exe 32 бит: ResFitter x32.exe
    3 балла
  15. Сегодня рассмотрим старую, но все еще актуальную ммо под названием Perfect World Берем конечно же не актуальную версию официального клиента, а пиратский сервер с его старенькой версией 1.5.3 (Summer PW) Официальная версия 1.6+ На данном пвп сервере изменены некоторые полеты для персонажа, введены некоторые, так называемые "рисованные" вещи которые довольно плохо влияют на баланс сервера Да к тому же сервер заточен еще и под донат, т.к статы вещей могут быть рандомными (Классно...) Как раз 4 стата и считаются рандомными, выпадают с некоторым шансом из общего пула. Ну и начнем собственно, посмотрим что можно сделать в этой игре интересного Начнем копать от локального игрока Ищем его указатель. Это довольно просто, не возникает никаких трудностей Указатель имеет всего одно смещение по типу *(LocalPlayer*) + 0x4 И собственно так мы вышли на структуру персонажа Далее нашли оффсеты до координат и прочего. Самое интересное оказалось то, что можно изменить скорость персонажа прямо с клиента, а сервер будет воспринимать это как действительную скорость персонажа Обычная скорость игроков на сервере порядка 5-6 м/с в зависимости от класса персонажа, довольно обычная расстановка в ммо играх Изменив скорость персонажа с клиента у сервера не возникло вопросов, а легально ли это и просто съело это. Путем проб и ошибок я подобрал значение скорости [м/с] которое допустимо записью в адрес. Это 15 м/с Скорость 15 м/с считается максимальной скоростью передвижения персонажа на сервере (Когда мы передвигаемся пешочком) Но скорости в 15 м/с ведь мало , без каких либо бафов на ускорение и пр. Поэтому пробуем увеличить до 20 м/с простой записью и персонажа начинает откидывать назад при перемещении Тут у меня есть предположение исходя из пошаговой отладки, что переходе через порог допустимого значения, сервер начинает сбрасывать скорость персонажа до 5-6 м/с опять же в зависимости от класса Но на сервере есть всякие плюшки на ускорение персонажа, этим мы и воспользуемся Установлено что максимальная скорость без бафов 5-6 м/с. С бафами 15-20 м/с Опять же путем проб и ошибок было выяснено что можно преодолеть эти 15 м/с А преодолеть их можно путем наложения бафа ускорения на персонажа, которое работает примерно по такому принципу curSpeed = (15.0*2) Значит мы можем это легко использовать и нас не будет откидывать. Звучит неплохо Делаем бинд на запись значения в адрес скорости. Пусть это будет 30 м/с, включаем баф на ускорение и радуемся скорости в 30 м/с без каких-либо откидываний назад Правда такое будет работать только пока на нас весит баф на ускорение, т.е ровно 15 сек А после окончания действия бафа нам придется довольствоваться скоростью в 15 м/с, но все равно это скорость останется постоянной и уже превышает скорость обычных игроков примерно в 2-3 раза Вопрос остается в том, как же обойти или сделать так, чтобы значение подстраивалось в нужное когда на нас висит нужный баф Делается довольно просто, путем чтения ID бафа на ускорение и его проверки на существование Необходимо найти какой-то список бафов и после читать его каждые допустим 20 мс А при нужном ID бафа просто менять значение скорости персонажа. Все довольно примитивно Выйти на массив бафов нам поможет счетчик кол-ва бафов персонажа, который должен быть где-то в памяти игры *Стандартные процедуры в СЕ. 1-2-3-4 бафа, сканируем, потом находим указатель на этот счетчик* И в итоге оказывается что этот счетчик лежит прямо в структуре персонажа, хотя мб и логично В некоторых играх может быть и иначе Выше над счетчиком и лежит наш список бафов, смещение между бафами ровно в 0x12 Узнаем наш ID ускорения и запоминаем Остается теперь написать программу которая поможет нам делать все манипуляции с памятью Запускаем, проверяем
    3 балла
  16. Наверняка многие из вас не задумывались о том, можно ли запустить онлайн или одиночную flash игру из браузера отдельно, например для повышения производительности и разворачивания на весь экран? Так вот - такой способ есть, и даже очень простой. Нам понадобится вот эта программа, это официальный flash проигрыватель - вся его функция это проигрывать приложение по ссылке, с компьютера или же из интернета. Теперь такая инструкция - идём на сайт с интересующей нас игрой, к примеру я пойду на сайт где можно сыграть в "bad pigges". Теперь идём во вкладку позволяющую просматривать загружаемые файлы, у меня это "сеть" и в фильтр поиска вписываем .swf Запускаем плагин (если у вас нету такого, перезагрузите страницу вместо запуска плагина). Видим что нашлись файлы: Копируем URL файла, и идём в нашу программу. Зайдя в программу нажимаем на Файл --> Открыть... и получаем такое окно: В него вставляем ранее найденный URL и нажимаем ОК. Запускается игра, и мы можем развернуть на любой размер. Вот на весь экран у меня: С онлайн играми та же история, но тут есть одно но. Если в игре есть авторизация которая происходит через соц сеть или же через сайт, а не через flash, то вам нужно будет авторизовавшись в игре сразу получить ссылку не дав ей загрузиться, и сразу закрыть, так как по этой сесси вряд ли пустит ещё раз (защита от взлома аккаунта).После этого можно открывать эту ссылку во flash. Кстати, открываемые ссылки сохраняются, так что вам не придётся постоянно искать их заново. Нужно будет просто выбрать из меню.
    3 балла
  17. Пост для тех, кто интересуется Lua в Cheat Engine. Можно подхватить разные моменты активации и деактивации записи в таблице CE и рассчитать размер кода между метками 1. По шаблону вставляем АА код для туториала Cheat Engine 2. Регистрируем метки-маркеры в АА коде 3. Этими метками в Lua считаем и выводим ""endCode - startCode" размер байтов Пример, который подсчитал 15 байтов Пример скрипта Документация кому интересно
    3 балла
  18. Существует три логических оператора: and, or, not. Те, кто уже знаком с языками программирования знают, как эти логические операторы работают. Например, A = true B = true if A and B then print('Условие "A and B" выполняется') end if A or B then print('Условие "A or B" выполняется') end B = false if not (B == A) then print('Условие "not (B == A)" выполняется') end Но, дальше интереснее. Все логические операторы считают false и nil ложными, а все остальное — истинными. Оператор "and" возвращает свой первый аргумент, если он ложен и в противном случае возвращается второй аргумент Оператор "or" возвращает свой первый аргумент, если он не равен false и в противном случае возвращается второй аргумент. Сходу можно запутаться, но с примерами станет понятнее print (4 and 5) --> "5". В этом примере '4" не ложный, а значит при операторе "and" вернется второй аргумент "5". print(0 and 13) --> "0". Аналогично print(false and 13) --> "false". В этом примере первый аргумент false(ложный), а значит при операторе and вернется "false". print(4 or 5) --> "4" В этом примере "4" не ложный, а значит при операторе "or" вернется уже первый аргумент "4". print(false or 5) --> "5" В этом примере "false" ложный, а значит при операторе "or" вернется уже первый аргумент "5". Если кто вспомнил, то в C# есть такой оператор "?" (условный) string result = 4 == 4 ? "равно" : "не равно"; // result будет равен true На Lua это эквивалентно local result = ( (4 == 5 and "равно") or "не равно") А если опустить все скобки, то local result = 4 < 5 and "равно" or "не равно". Скобки можно опустить, потому что "and" имеет выше приоритет чем "or." Или вот еще пример compactmenuitem.Caption = state and 'Compact View Mode' or 'Full View Mode' Вот такая интересная штука для ускоренного сравнения вместо конструкции if условие then -- код else -- код end Идем дальше. Полезной идиомой Lua является x = x or v что эквивалентно if not х then х = v end Т. е. x равен значению v, когда x ложное. Оператор "not" всегда возвращает true или false print(not nil) --> true print(not false) --> true print(not 0) --> false print(not not nil) --> false
    2 балла
  19. Перед использованием, ознакомьтесь с ЭТИМ Поддерживаемые ОС: Win7+ (x64) Поддерживаемая версия клиента: (x64) Поддерживаемая версия DirectX DX9, DX11 Поддерживаемые античиты: MRAC Версия от 27.08.21 (Последняя) Undetected РЕЖИМ РАБОТЫ: PvP PvE Спецоперации ЕСП: Силуеты врагов Силуеты взрывчатки Силуеты оружия Силуеты капсулы Силуеты пауки Силуеты ресурсы Силуеты активаторов Силуеты мини боссы Силуеты боссов миссий СуперАимбот: Кость - наилучший выбор (простые враги - голова, джаггернаут - рюкзак и т.п.) FOV 360 Аим на игроков Аим на ботов Аим на летящих врагов Аим на турели Аим на мини боссов Аим на боссов Мемхаки: Отдача Точность Без затвора Быстрая перезарядка Увеличенный FOV игрока Самоубийство (клавиша END) АнтиАФК Кик с пве и спецопераций (в любой момент) Быстрый нож ПКМ, ЛКМ Без перегрева СЕД Инструкция: Запускаете игру Запускаете ghl.exe Нагибаете pass : !WFhw~26_Av2.0
    2 балла
  20. В данной статье, мы научимся определять тип комнаты, в которой мы находимся и что-то делать в зависимости от этого. Есть множество вариантов использовать это. Например, вы хотите, чтобы какая-то ваша функция работал в одном режиме, но не работала в другом. Ещё пример, рисовать скелеты на противниках (когда мы до этого дойдём). Порядок костей в PvE и PvP разный, поэтому, без определения типа комнаты вам не обойтись. В игре существует 10 типов комнат: Лобби игры Командный бой Захват флага Игроки против ботов Подрыв Штурм Каждый сам за себя Уничтожение Доминация Выживание Для того, чтобы успешно определять тип комнаты в которой мы находимся, нам необходимо посмотреть это через структуру ICvar и смещение в ней. Для типа комнаты, это смещение равно ICvar + 0x600 Добавим в наш код новое смещение Добавим в перечисление CvarOffsets новое значение Теперь наше перечисление со смещениями, выглядит так Добавим в класс ICvar новый метод. Теперь класс ICvar выглядит так Создадим перечисление со всеми возможными видами комнат Далее, получение типа комнаты И всё, что вам остаётся сделать, это сравнить тип комнаты с нужным вам и что-то сделать Если вам что-то не понятно, не стесняйтесь задавать свои вопросы в ЛС Discord или ниже в комментариях.
    2 балла
  21. Сложность: 1/5. В этом видео рассматривается способ взлома игры "Удаление инструкций" (noping). С помощью этого способа игровое значение не будет перезаписываться игрой, потому что в игре удаляется инструкция записи значения.
    2 балла
  22. И снова, здравствуйте)) В этой части, мы с вами создадим NoRecoil. Здесь, я уже не буду всё разжевывать. Опирайтесь на прошлые статьи, кому что-то не понятно. Открываем дамп из прошлых частей. Поиск по строкам. Для начала, нам нужно найти IGameFramework. Вводим "Failed to create the GameFramework Interface!". Двойной клик по строке, попадаем сюда Через окно перекрестных ссылок, выходим на адрес Итак, мы нашли адрес IGameFramewrok = 0x1AF7E2C Теперь, в окне поиска строк, ищем "sp_difficulty" Двойной клик по строке. Меню перекрестных ссылок. Открываем псевдокод. Через ReClass x32 восстанавливаем классы. Переходим к написанию кода. classes.h main.cpp Собираем проект. Внедряем в игру. Готово. Продолжение следует...
    2 балла
  23. В этой статье, мы с вами расширим наш проект, функцией для исключения любого союзника с любой спецоперации или PvE миссии, в любой момент. Система кика игроков со спецоперации и PvE работает по следующему принципу: Автоматическое исключение за бездействие (по таймеру) Исключение голосованием игроков Проблема заключается в том, что если игрок активен (например, использует афкбот), система не сможет автоматически исключить его. У вас остаётся только единственный вариант, это голосование игроков. Но и здесь есть проблема. Она заключается в том, что после 2-3 контрольных точек, флаг возможности голосования переключается и запустить голосование игроков невозможно. Наша задача включить функцию кика и указать количество контрольных точек, в течении которых она будет активна. Добавим в наш код новые смещения В итоге, мы имеем такой набор смещений Добавим в перечисление CvarOffsets новые значения Теперь наше перечисление со смещениями, выглядит так Пишем функцию, для включения кика игроков в любое время Если вам что-то не понятно, не стесняйтесь задавать свои вопросы в ЛС Discord или ниже в комментариях.
    2 балла
  24. В этой статье мы с вами создадим внутриигровой Радар Внутриигровой радар в этой игре работает по следующему принципу: Отображать союзников время отображения == время жизни союзника. отображение == всегда дальность отображения == зона видимости радара Отображать противников отображение == иногда время отображения при визуальном столкновении столкнулись вы == время отображения 5с столкнулись союзники == время отображения 3с при вооруженном столкновении столкнулись вы или любой союзник == время отображения 10с столкновения не было, противник стрелял == время отображения 3с дальность отображения == зона видимости радара Наша задача в том, чтобы противники всегда отображались на радаре, не зависимо от того, были столкновения / стрельба или нет. В этом нет ничего сложного.Нам просто нужно получить необходимые смещения, указатели, получить итератор сущностей, перебирать их в цикле и отображать на радар, указав время отображения. Класс IGameFramework выглядит теперь вот так: Класс IGameRules: Класс IActorsystem: Класс IEntity: Класс IEntityIterator: И самое простое во всём этом: Если вам что-то не понятно, не стесняйтесь задавать свои вопросы в ЛС Discord или ниже в комментариях.
    2 балла
  25. В этой статье, мы с вами создадим функцию для отключения задержки анимации игрока. Это позволит вам выполнять так называемый "Спам Х", "Спам CTRL" и "Движения лягушки", т.е выполнять данные движение лечь - встать движение присесть - встать движение вправо-влево (стрейф) движение лежа - в правый бок / левый бок движение лежа - вперед / назад действия без какой-либо задержки. Добавим в наш код новые смещения В итоге, мы имеем такой набор смещений Добавим в перечисление CvarOffsets новые значения Теперь наше перечисление со смещениями, выглядит так Пишем функцию, для отключения задержки анимации игрока Если вам что-то не понятно, не стесняйтесь задавать свои вопросы в ЛС Discord или ниже в комментариях.
    2 балла
  26. В данной статье мы с вами создадим АнтиАфк. Cуществуют разные проверки, в том числе активен игрок в данный момент или нет. Если игрок находится в созданной комнате и не активен в течении 90с(это значение меняется каждое обновление), то он автоматически исключается из комнаты и на его место может зайти другой игрок. Однако, у него сохраняется возможность заново присоединиться в комнату, из которой его исключили за бездействие. Также, помимо проверки активности игрока в комнате, существует проверка игрока в любом бою, будь то PvP матч или PvE миссия. Если в бою игрок не активен более 120с(это значение меняется каждое обновление), то система автоматически исключает его за бездействие и присоединиться в бой, из которого его исключили он уже не может. Проверки осуществляются в 2 этапа. Первая проверка локальная и её можно просто отключить. Вторая проверка зашита в античит и чтобы отключить её, нужно отключить IN-GAME античит или передавать необходимые значения. Если вы просто отключите проверку, IN-GAME античита, вы получили бан в течении 10 минут. В данной статье, мы будем передавать нужные нам значения, а отключение IN-GAME античита мы осуществим в одной(или двух) из будущих статей. Для того, чтобы обойти эти 3 проверки, нам нужно просто получить указатель на нашего игрока, отключить локальную проверку активности и установить нужные значения на проверку от античита. Адрес ICvar вы найдётё вот так: С остальным, у вас не должно возникнуть проблем, т.к мы уже изучали поиск всего необходимого для создания этого проекта. Если вам что-то не понятно, не стесняйтесь задавать свои вопросы в ЛС Discord или ниже в комментариях.
    2 балла
  27. Наткнувшись на тему вспомнил, что не все написал. В прошлом посте блога рассматривал бряк через DBVM. К сожалению, та версия dbvm из поста блога пропускала очень много инструкций и практически смысла нет её юзать. Например она определяла 16 инструкций, когда их было несколько тысяч, т.е. например 500 оффестов и на каждой по 10 инструкций. По DBVM надо, конечно, писать Дарк Байту, но желания нет. Так вот. Не только с DBVM можно ставить бряки на участок памяти. Есть еще тип брейкпоинтов page exceptions. О нем давно-давно известно и он как на ладони, но почему-то я пропустил его, когда искал оффсеты в структурах С ним можно работать с lua и без. Ловит огромное количество инструкций. Желательно мощное железо, т.к. игра скорее всего будет очень тормозить по 2-5 fps. Но на короткий запуск сойдет. 5 секунд и достаточно для снятия логов. На пару действий в игре тоже сойдет: выстрел или пермещение персонажа, прыжок или вообще ничего не делаем просто снимаем логи. 1) способ поставить бряк из окна памяти. Подопытная программа "Tutorial-x86_64.exe" Здесь видно, что размер 720 байт Логи из окна инструкций CE 2) Способ через Lua (подробнее в документации) debug_setBreakpoint(structure_address, sizeMemory, bptAccess, bpmException, onBreakpoint) P.S. Я написал про два способа установки брейкпоинта на множество адресов без DBVM. Вручную можно ставить такие брейкпоинты, но дальше уже кропотливый просмотр на предмет того чем это может помочь. Это может помочь определить типы данных и помочь прикинуть размер структуры, а также найти активные оффсеты. Можно на Lua автоматически определять активные offsets по базовому адресу структуры и эту структуру создать и заполнить в dessectData. Если будет время напишу скрипт.
    2 балла
  28. Так, давно что-то ничего не писал в блог Собственно время пришло Данная статья является примером метода о котором рассказано в данном видео Рассмотрим вызов игровой функции на примере перовой части игры Dishonored В данном примере будем восполнять себе количество маны, которая в игре не может регенерироваться полностью после использования череды способностей Для начала нам необходимо найти само значение маны, благо оно храниться 4мя байтами в памяти и тут нет ничего сложного Теперь когда у нас есть адрес маны или же указатель на данный адрес, нам необходимо найти метод который как раз и перезаписывает значение Делается это очень просто (F6) Нас интересует инструкция которая перезаписывает значение 1 раз Выходим на эту инструкцию в дизассемблере и ставим брейк Вот мы и нашли инструкцию, далее просто выходим из него (Кнопка Execute till return) Для того чтобы вызвать метод, необходимо узнать и проанализировать его параметры. Этим и займемся В метод передается 2 параметра, один из которых находится в ecx (Указатель на базовый класс) А второй передается в регистре ecx, до инструкции которая перезапишет значение Данный кусок: push ecx mov ecx,esi Регистр edx содержит все время один и тот же не изменяющийся адрес, т.е он статичен Распишу параметры чтобы было более нагляднее push ecx (Значение 50 в данный момент) mov ecx, esi (В ecx записывается значение из esi (0x0AD0A000)) Теперь если немного проанализировать, то можно понять что 50 - это значение маны, которое будет присвоено игроку после применения способности А 0x0AD0A000 это указатель на начало структуры игрока, т.е PlayerController* player; Таким образом метод выглядит так: ManaMethod(PlayerController* player, int ManaOut); Теперь можно приступать к написанию самого кода на c++, чтобы вызывать этот внутреигровой метод (При этом заранее найдем работающий указатель на класс игрока PlayerController) Для вызова метода нам необходимо определить его соглашение о вызове, т.е в каком порядке туда передаются аргументы Посмотреть все соглашения можно тут https://ru.wikipedia.org/wiki/Соглашение_о_вызове Немного почитав можно увидеть что это соглашение __thiscall thiscall — соглашение о вызовах, используемое компиляторами для языка C++ при вызове методов классов в объектно-ориентированном программировании. Аргументы функции передаются через стек, справа налево. Очистку стека производит вызываемая функция. Соглашение thiscall отличается от cdecl соглашения только тем, что указатель на объект, для которого вызывается метод (указатель this), записывается в регистр ecx. В самом коде объявляем этот метод для его вызова далее //Метод принимает PlayerController* и ManaOut //0x00AB17C0 - адрес которых хранился в edx и он статичен typedef void*(__thiscall * _ManaType)(PlayerController* Player, int Mana); _ManaType ManaFunc = (_ManaType)(0x00AB17C0); Остается только написать вызов этого метода и на этом дело будет сделано /*PlayerConroller.h */ struct PlayerController { public: char pad_0000[2656]; //0x0000 int Mana; //0x0A60 }; /*Метод который вызывается при создании потока из dll*/ void onAttach() { while (true) { if (GetAsyncKeyState(VK_END)) { PlayerController* Player = reinterpret_cast<PlayerController*>(*(DWORD*)(Base + 0x01052DE8)); //Получаем указатель на игрока PlayerController* ManaFunc(Player, 100); } Sleep(150); } } Собственно на этом моменте статья закончена При нажатии на кнопку END внутри игры, мана восполняется до 100 единиц
    2 балла
  29. Вдохновение появилось после просмотра видео @Xipho по Ultimap Когда в Ultimap появляются Nx адресов с одним счетчиком, то хочется увидеть эти связи на графиках IDA. Появилась идея загуглить как в IDA через IDC скрипт отрисовать ветвь кода или ветви кода, на которых эти самые адреса связаны между собой, а все вложенные другие скрывать. Пока из подсказок я нашел это и это Допустим для тренировки даны два адреса из одной ветви кода (это я точно знаю, т.к. получен не из ultimap, а из tracelog) Адрес1 - Tutorial-i386.exe+2578F - 29 83 AC040000 - sub [ebx+000004AC],eax" или адрес 0x00402B77 Адрес2 - Tutorial-i386.exe+16DBED - 89 45 FC - mov [ebp-04],eax или адрес 0x0056DBED И вот думаю, как скрипт ниже переделать, чтобы сначала вывести текстовый маршрут, а потом и хотя бы одну ветвь кода. Т.е. поднимаясь вверх по иерархии вызовов нужно остановиться до Адреса2. Пока просто вывод от стартовой функции без условий Как будет время попробую доделать... p.s. Ну ничего так idc скрипты. Много всего, но смысл тот же, что и в CE Lua у некоторых функций. Еще не разобрался как Python подключить к IDA, пока на idc скриптах. Будет интересно еще посмотреть эту же задачу на Hydra и Radare, ну и в CE (в новой версии появилось окно диаграмм)
    2 балла
  30. На днях решил с самого чистого нуля написать хук для Directx 9. Чтобы было хоть какое-нибудь отображение для пользователя внутри игры Собственно идея зародилась, осталось только воплотить Хук поддерживает Режим в окне / Полноэкранный Использование EndScene и библиотеки для рисования самого меню. Использованная версия игры: Metal Gear Rising - Revengeance v2, таблетка от Skidrow Пара скриншотов самого меню, все получилось довольно ярко На момент тестирования багов и вылетов не обнаружил. Для написания ф-ий и самого хука были использованы MS Detours. Вполне возможно что функционал я буду еще доделывать, постепенно Но это в том случае, если не переключусь на игру поинтересней Ну и конечно же видео
    2 балла
  31. Скрипт позволит вывести иерархию компонентов CE в виде текста. Иерархия компонентов CE нужна для написания плагинов. Например, для ColorPicker и для смены шрифта (подобротнее об этом было где-то было в блоге). Скрипт: Для CE 6.7
    1 балл
  32. Как делать C inline вставки {$CCODE base=EBX} int* myHealth=base+0x4B0; *myHealth = 999; {$asm} Скачать CE 7.3 Beta4
    1 балл
  33. Завтра состоится очень скромная премьера 27 июня в 19.00 (по Московскому времени) видео "Фильтр-свой" чужой. Почему видео находится не на официальном канале? Какая цель у видео? Это личное любительское видео-хобби по отладке и изменению игрового кода — взлому игр. Я записываю видео для себя и для желающих. Приходите смотреть gta3.CT
    1 балл
  34. Начало через минут 20, как трансляция. Доступны комментарии в реальном времени. Не стрим.
    1 балл
  35. Сложность: 1/5. В этом видео рассматривается самый простой способ взлома игр "Заморозка значения". Ссылка на скачивание Cheat Engine Ссылка на типы данных
    1 балл
  36. Описание: Инжектор режима ядра с ручным отображением (Extended) 31.03.2021 Undetected Поддерживаемые ОС: Только 64 бит Windows 7 Windows 8 Windows 8.1 Windows 10 Инструкция: Переименовать свою dll в jh.dll Поместить jh.dll рядом с "*.exe" файлом Запустить игру и подождать до загрузки главного меню Запустить файл (требуются права администратора) Профит !!!Внимание!!!! После внедрения вашей dll, желательно удалить файл "*.exe". СКАЧАТЬ
    1 балл
  37. 28.01.2021 Undetected Поддерживаемые ОС: Только 64 бит Windows 8.1 Windows 10 (1803-20H2) Инструкция: Поместить файл hwid.sys в каталог C:\ Запустить файл ldr.exe (требуются права администратора) Удалить файл C:\hwid.sys HwID_BS.rar
    1 балл
  38. Описание: Скрытие любого процесса из системы. Работает с x86 и x64 процессами. 31.03.2021 Undetected Поддерживаемые ОС: Только 64 бит Windows 7 Windows 8.1 Windows 10 (1709-20H2) Инструкция: Распаковать архив Переместить файл jhdrv.sys в каталог С:\ Запустить jhhp.exe (требуются права администратора) Указать полное имя процесса и нажать ENTER Указанный процесс скрыт Закрыть окно Удалить файл драйвера, по желанию Видео СКАЧАТЬ
    1 балл
  39. Итак, мы вооружились всеми нужными инструментами и поверхностным пониманием того, что будем делать. Теперь, можно приступать к самому интересному. В этой части, перед нами стоит задача найти SSystemGlobalEnvironment и указатель на I3DEngine. Открываем PeTools и делаем полный дамп. Далее, запускаем IDA PRO и выбираем "новый проект". Открываем наш дамп игры. Выбираем IDA PRO, предложит указать расположение 3 библиотек. Выбираем место установки и нажимаем ОК. Дождёмся, пока IDA проанализирует файл. Вы услышите звуковой сигнал, по окончании. Также, можно будет видеть надпись "idle" (в простое). После окончания анализа, открываем список всех строк. Через меню View или нажав Shift+F12. Жмем Ctrl+F и вводим "ai_CompatibilityMode". Двойной клик по строке и оказываемся тут Выделяем строку и жмем 'X', в открывшемся окне перекрестных ссылок, нажимаем ОК. Оказываемся тут dword_18C23DC это и есть адрес нашего SSystemGlobalEnvironment = 0x18C23DC. Можете переименовать сразу (выделив и нажав 'N' ), можете оставить так. Кому как удобнее. Самое главное мы нашли. Теперь нам нужно найти I3DEngine и SetPostEffectParam. Повторяем шаги с поиском SSystemGlobalEnvironment , только теперь вводим "Dof_Active" в строке поиска. Нашли, выделили, перешли в окно перекрестных ссылок, выбираем первую и жмем ОК. Выделяем, жмем 'F5', для перехода к псевдокоду. Видим такую запись. Выделяем смещение '+136', жмем ПКМ, переводим в HEX. И получаем SSystemGlobalEnvironment + 0x88 это и есть смещение до I3DEngine В итоге имеем: SSystemGlobalEnvironment = 0x18C23DC SSystemGlobalEnvironment + 0x88 = I3DEngine Продолжение следует...
    1 балл
  40. У меня бывают такие случаи, когда увидишь простой пример кода после которого захочется заняться разработкой какой-нибудь игры. Вот один из таких примеров о том, как сделать подъем и опускание предмета и затем его вращение. Это 5 строчек "таких" и 5 строчек "таких", вот подъем и вращение На видео код можно применять для левитации предметов и вражеских персонажей, которых можем поднимать, удерживать и бросать.
    1 балл
  41. Планируется улучшать и дорабатывать плагины, показать как с ними работать. 1. Вывод данных в окно логов: сканирование, подключение к процессу, опции сканирования, состояния активации и деактивации записией в таблице CE и другие 2. Запись действий из пункта 1, сохранение этих действий и воспроизведение по кнопке или горячим клавишам 3. Показ в дизассемблере CE ветвлений кода при проходе потоками разными цветами (можно видеть код, который не был пройден в разных ситуациях) 4. Дополнительное окно дизассемблера с опциями подсветки инструкций по типу в градации черно-белых цветов: математические инструкции, логические инструкции, инструкции ветвления, на чтение и запись. 5. Улучшение плагина "Dessect Data Scanner" с DBVM или на 4-HW брекйпоинта. В случае DBVM количество брейкпоинтов не ограничено и можно определить тип данных одновременно для каждого байта в структуре по смещениям, а в случае 4-х байтов это в режиме без DBVM одновременно задействуются все 4 hw брейкпоинта, а не 1 hw как сейчас. Extensions:
    1 балл
  42. Обновлен и залит плагин "User Action Logger 1.0 Beta"
    1 балл
  43. Вполне читерская программа Sikulix Помощник для нахождения отличий Исходник: Картинки для тренировки Игра Sikulix Документация Туториалы Sikulix умеет: ждать появления или исчезновения элемента, просто ждать, периодически просматривать область в background (например игрового чата); читать (и писать) текст в(/из) поля ввода, "нажимать на клавиатуру", подсвечивать области, кликать по элементам, удерживать и перетаскивать; перемещаться по окнам по названию процессов; сохранять скриншоты в том числе определенные области; показывать много разных диалогов: ввода, тултипов, сообщений; сравнивать изображения и находить отличные области (пример выше); поиск элементов по маске; поиск групп элементов и перебор их; создание гайдов или руководств Из наиболее интересных применений: 1) в играх где необходим поиск графических элементов с действиями (кликеры, поиск отличий или поиск/подсчет элементов, маджонги и другие); 2) нажать на найденных элементы(кнопки, чек-боксы); 3) найти текстовое значение, перевести в число, посчитать; 4) ожидает выхода человека из скайпа (или что-то вроде мониторинга чатов); Ну и так далее...
    1 балл
  44. За нейронными сетями и быстрыми вычислениями (например на тензорных ядрах видеокарт) скорее всего, огромное будущее и огромный спрос. Стартануть в эту тему можно, изучив статью с хабра о принципах AlphaGo Zero и вот эту. Основные моменты это рекуррентные сети, которые ищут в глубь и сверточные сети, которые чем-то похоже на хеш-сумму (на тензорных ядрах они-то и быстро считаются). На данный момент по своей работе я активно развиваюсь в нескольких направлениях: в многопоточном программировании на CPU/GPU, вычислительных шейдерах, сокетах. Если писать программы на одном CPU ядре, то все чаще этого не хватает по мощности как на ПК так и тем более на мобильных устройствах. Такое ощущение, что без многопоточного программирования скоро нельзя будет никуда устроиться работать. Сейчас тенденция много ядер на CPU и их использовать. А еще лучше и быстрее что-то "тяжелое" отправить вычислять на GPU. Это не говоря по обработке графических данных. С ними очень эффективно работают программы на GPU. А чтобы системы соединялись между собой на расстояниях надо хорошо знать сокеты и многопоточное программирование. Основная фишка в многопоточности это спланировать множество задач из одной точки программы и в другой точке ждать, когда они все одновременно выполнятся. Некоторые, задачи при этом должны синхронизироваться только с основным потоком. Когда все задачи выполняться на разных ядрах CPU, то итоговый результат на каком-то одном ядре уже сделает все что требуется. Бонусом к ускорению на CPU ядрах служат специальные ассемблерные инструкции, которые например, позволяют обрабатывать больше данных за меньшее количество тактов. Интересующимся ссылки в основном по Unity игровом движке
    1 балл
  45. Вот и настало время для 2й части реверсинга данной игры Сегодня будет рассмотрен Packet Editing В качестве основной идеи выступает данное видео Ну что же, начнем... Для начала необходимо найти ф-ию отправки пакета на сервер игры Эта ф-ия существует во всех онлайн играх. На примере Perfect World, она выглядит вот так В ф-ию передается 2 аргумента 1й аргумент это указатель на массив байтов который передается серверу В качестве второго аргумента выступает размер пакета в байтах Выглядит все это примерно так byte data[] = { 0x0 , 0xfc, 0xbc }; int len = 3; SendPacket(data, 3); Таким образом можно отправлять серверу пакеты для выполнения каких-либо действий внутри игры Но для того чтобы что-то сделать в игре, надо знать какой пакет мы должны отправить заранее И для этого ниже будет представлен хук, который покажет какие пакеты отправляются от клиента на сервер Приступим к самому хуку для чтения пакетов Сам хук довольно прост, и ничем особым не выделяется, кроме того, что хук будет перед вызовом memmove //Main dll thread jmpBack = (DWORD)DetourFunction((BYTE*)(Module + 0x419ACF), (BYTE*)PacketHook); //Hook part __declspec(naked) void PacketHook() { __asm { mov hookedPacket, ecx mov hPacketSize, esi } memcpy(hpacket, (void*)hookedPacket, 256); i = 0; if (hpacket[0] == 0x0 && hpacket[1] == 0x0 && hPacketSize == 41) //Movement 41 len { printf("Movement Packet: "); printf("Y: %.3f X: %.3f Z: %.3f ", *(float*)(hpacket+2), *(float*)(hpacket + 6), *(float*)(hpacket + 10)); printf("Counter %02x \n", hpacket[16]); } else if (hpacket[0] == 0x07 && hpacket[1] == 0x00 && hPacketSize == 25) //Stop Move { printf("Stop Hero Packet: "); printf("Y: %.3f X: %.3f Z: %.3f \n", *(float*)(hpacket + 2), *(float*)(hpacket + 6), *(float*)(hpacket + 10)); } else if (hpacket[0] == 0x03 && hpacket[1] == 0x00 && hpacket[2] == 0x01 && hPacketSize == 3) //Attack Packet { printf("Standart Attack Packet\n"); } else if (hpacket[0] == 0x02 && hpacket[1] == 0x00 && hPacketSize == 6) //Select Target packet { printf("Select target: 0x%06x\n", *(int*)(hpacket+3)); } printf("Incoming Packet: "); for (i; i < hPacketSize; i++) { printf("%02x ", hpacket[i]); } printf("\n"); _asm jmp jmpBack } Собственно это весь хук который нужен для чтения Некоторые пакеты я уже расшифровал К примеру пакет движения У каждого пакета в игре есть некий ID - это ровно 2 байта Для перемещения это 00 00 Остановка персонажа 07 00 Обычная атака 03 00 и т.д. В пакете движения передаются координаты перемещения персонажа в данный момент Что касается чтения пакетов, с этим все, больше тут придумывать нечего Настало время сделать свою отправку пакета на сервер //SendPacket Prototype using Send_t = void(__thiscall*)(DWORD*,DWORD*, int); auto* fnc_Send = reinterpret_cast<Send_t>(Module + 0x419A40); if (GetAsyncKeyState(VK_NUMPAD8) & 0x1) { std::ifstream inFile("C:\\Users\\Administrator\\Documents\\Visual Studio 2017\\Projects\\PW\\Debug\\Send.txt"); std::vector<uint8_t> data; data.reserve(512); unsigned int temp; while (!inFile.eof()) { inFile >> std::hex >> temp; data.push_back(temp); } std::copy(data.begin(), data.end(), hSendPacket); printf("Sent: "); for (j; j < data.size(); j++) printf("%02x ", (int)data[j]); printf("\n"); DWORD* Packet = (DWORD*)&hSendPacket; DWORD BaseValue = *reinterpret_cast<DWORD *>(0x00E444A4); DWORD* Base = (DWORD*)(*reinterpret_cast<DWORD*>(BaseValue + 0x20)); int packsize = data.size(); fnc_Send(Base, Packet, packsize); } У ф-ии 3 аргумента, т.к в регистре ecx перед вызовом ф-ии должен быть еще 1 указатель Теперь и отправка пакета готова, можно начать эксперементировать Для примера возьму пакет использования 3ей ячейки в инвентаре, в которой лежит предмет 28 00 00 01 02 00 26 2c 00 00 28 00 - использование предмета 02 - ячейка в инвентаре 02 26 - ID предмета, которое можно посмотреть и свериться 11302 - 0x2C26 Ну а теперь когда найден пакет, можно попробовать отправить его на сервер с помощью написанного выше кода На этом данная статья заканчивается. Примерно такие же действия можно сделать и с другими онлайн играми и автоматизировать некоторые действия
    1 балл
  46. Что бывает если сначала сделать а потом проверять... Стало мне интересно, а что если в файле изменить текстовые название на другие?.. И так появился этот патчер, он создаёт изменённый exe файл в директории с firefox.exe, название которому даёт пользователь. Если запускать полученный файл, то открывается чистый абсолютно новый firefox, в котором нет никаких настроек, дополнений, информации и прочего, а так же который это всё не сохраняет. Такой "супер приватный режим", при том после закрытия и открытия не изменённого exe файла, все закладки и прочая информация сохраняется, то есть использование такого изменённого файла никак ни на что не влияет. Изначально это планировалось как создание кучи exe каждый из которых будет иметь свой профиль, но оказалось что ничего не сохраняется... ?‍♀️ Инструкция к патчеру: Запустить патчер Нажать на кнопку "Создать профиль" Указать полный путь до изменяемого файла в появившемся окне Ввести название профиля Профиль сохранится в ту же папку, файл будет иметь название которое вы дали профилю, основной файл не изменяется. Работать должно на любых версиях браузера, ну может быть кроме очень старых. Предупреждение: не стоит открывать основной профиль и тот который создан патчером одновременно.. Mozilla profile creator
    1 балл
  47. Много лет назад подсел я на читы. Читы я не только делаю, но и пользуюсь ими. Все игры прохожу с читами (кроме MMO, в которые очень редко играю). Не помню какую игру прошёл без читов последней. Даже в ГЭГ вешал очки тетриса и силу удара рогаткой по мышам в канализации. Хотя нет, помню - INSIDE прошёл без читов. А чего там вешать-то? В общем, зараза похлеще герыча Скажете, с читами неинтересно играть, весь интерес к игре пропадает? Не скажите. Вот когда тебя убивают в 100-ый раз, вот тогда действительно пропадает. А с читами весело) И вот я наконец решил "лечь в клинику" и попробовать вылечиться. Чего вдруг? Хочу PS4 прикупить, а там читов не завезли))) Вот буду заранее тренировать скилл игры без читов. Приставку куплю скорее всего чуть позже, смотря как лечение пойдет. А вдруг ломка победит? И зачем мне тогда приставка... Через несколько дней напишу в блоге как продвигается лечение. Update: Ломка таки победила в бессюжетном режиме Метро Ласт Лайт (18.01.2018). PS да, видеокарточку поменять не смог (читайте блог MasterGH), решил апгрейднуться за счёт приставки. Update: Приставка была куплена под Новый Год. (30.12.2017) PPS на сайте DNS не далее чем сегодня с сайта исчез раздел "Видеокарты", вырезали под корень. Видеокарты в наличии вроде есть, но очень мало, а раздела нету))
    1 балл
  48. Дополненная реальность похоже на спецэффекты в кино, только на экране видим изображение получаемое с видео камеры, которой управляет пользователь. Что интересно. Камера, которая есть у многих на телефоне и допустим некоторая программа с API(какой-нибудь дополненной реальности написанная вами) определяет, что происходит на изображении и по этим данным можно 1) определить плоскости реальные в нашем мире 2) определить положение объектов относительно друг друга в нашем мире 3) определить уникальные маркеры и изображения Это было чтение данных, затем идет запись данных. На изображение накладывается поверх другое. Чтение данных с реального мира и запись данных поверх изображения по данным чтения это основные процессы. Что меня заинтересовало. Так это, что можно что-то делать в реальности, а камера будет писать программу. Самый простой пример. Берем маркер - бумагу с рисунком. Камера увидела и поставила на нем 3д-дом или светофор. Резко убираем маркер и дом остается в этом месте. Таким образом можно построить виртуальный город. Есть на Ютубе. Теперь можно взять вместо 3д-дома, 3д-светофоров маркеры для выстраивания алгоритма программы. Таким образом направив камеру можно что-то подхватывать из дополненной реальности, вытаскивать, размещать таким образом программируя действия без строчки кода. Берем маркер А и рядом с ним ставим маркер S. Означает, чтобы запомнилось положение макера А в пространстве. Убираем маркер S. Далее ставим маркер R, означает запись движения. Далее перемещаем А на точку2. Убираем маркер R, что означает остановку слежеия за маркеромА. Далее ставим маркер P, который запускает движение 3д объекта связанного с маркером А. Ну и так далее. Это очень интересно в плане программирования маркерами... Видео по построению объектов в городе
    1 балл
  49. Привет всем. По просьбам людей с форума, дискорда и ютуба, я напишу цикл статей, по созданию мультихака, на примере CryEngine3 SDK. А может, я не буду вас мучать и ограничимся всего 2-3 публикациями. Всё зависит от вашего интереса и моего свободного времени. По итогу, мы создадим мультихак, содержащий примерно следующий функционал: Аимбот Силуеты врагов 3D боксы оружий и мин Линии до врагов Точность Отдача Антислепа Все описанные действия, могут быть реализованы и в других играх, на движке CryEngine3. Итак, начнем пожалуй с самого простого, а далее будем двигаться к более сложному. Здесь не будет объяснений, что такое дизассемлер, указатели, классы, интерфейсы, смещения и прочее. Если вы не знаете, что это, то вам придется самостоятельно восполнять эти пробелы. Движок CryEngine3, сделан на основе глобальных объектов. Глобальные объекты завёрнуты в одну структуру и являются указателями на абстрактные сущности, которые инициализируются в нужный момент, в нужном месте программы. Никаких дополнительных накладных расходов, никаких лишних надстроек, контроль за типом во время компиляции. CryEngine3 представляет собой достаточно старый проект, где все интерфейсы устаканились, а новое прикручивается подобно тому, что существует на данный момент. Поэтому нет необходимости придумывать дополнительные обёртки или способы работы с глобальными объектами. SSystemGlobalEnvironment - это основной базовый класс, где хранятся указатели на "стартовые классы". Примерное описание и содержание можно посмотреть на GitHub. Т.к. мы решили начать с самого простого, то на этом этапе, мы сделаем хак, который будет убирать эффект ослепления от светошумовых гранат (антислепа / noflash). Метод SetPostEffectParam (ознакомиться) Итак, наша задача найти адрес базового класса SSystemGlobalEnvironment, затем указатель на I3DEngine, восстановить класс и реализовать метод SetPostEffectParam, с нужными нам параметрами. Необходимый софт: Официальный SDK движка Visual Studio 2015+ PeTools IdaPro 6.8+ ReClass x32 Продолжение следует...
    1 балл
×
×
  • Создать...

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

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