-
Постов
223 -
Зарегистрирован
-
Посещение
-
Победитель дней
7
Тип контента
Профили
Форумы
Загрузки
Блоги
Сообщения, опубликованные roma912
-
-
Еще есть другой вариант.
1. Ставишь хук на нужную точку или функцию
2. При срабатывании хука запоминаешь нужные тебе регистры
3. Выписываешь все в файл
4. Возвращаешь управление игровой функции -
1 час назад, maximil сказал:
Понимаю, но на данном этапе подскажите пожалуйста какую из команд участка кода (mov, push, call или ещё какую) лучше заменить NOPом чтобы заблокировать вычитание средств со счёта ибо заморозка не работает... я пока что способен только на такое)
Поэтому тебя и направили изучать основы ассемблера. Изучишь основы, тогда поймешь что нопнуть
-
Это конечно все хорошо, но лучше для записи смещений использовать reclass. Штука очень удобная и сгенерирует автоматически класс для дальнейшей работы
-
-
2 часа назад, Xipho сказал:
Но может быть причина в другом, надо конкретно смотреть...
Вот для конкретности. Есть базовый класс AUIManager, в котором virtual PAUIDIALOG GetDialog(const char *pszName); - Метод для получения окна по имени, он точно реализован.
Ставлю точку на вызов метода с нужным именем окна, нахожу указатель на класс из Ecx и Reclass уже подсказывает что это CECLoginUIMan, где базовый класс AUIManager
Логично предположить, что этот метод будет и в CECLoginUIMan, однако указатель на нее найти не получается
Если предположение не точное, то возможно ли выйти на базовый класс (AUIManager) через (CECLoginUIMan) и взять его указатель? А потом еще глубже в нем найти указатель через VTable на метод GetDialog? -
36 минут назад, Xipho сказал:
Среди них ты с большой вероятностью найдешь все публичные методы класса (имея указатель на его экземпляр)
В том и проблема, что виртуальный метод в исходном коде есть, а в самом VTable AUIManager его не имеется...
Ну и если взять указатель на этот класс, то внутри него также не имеется указателя на данный метод
-
У меня вопрос насчёт устройства методов, которые существуют внутри объекта (в памяти)
Допустим с виртуальными все понятно, и вызываются они через vtable.
А возможно ли найти обычную функцию внутри объекта? (в памяти) Т.е лежат ли там указатели на все методы класса? Или для _thiscall конвенции это так не работает? -
2 часа назад, Sergey99 сказал:
Или же ты имеешь ввиду вызывать через движк Lua в Cheat Engine или Auto Assembler? Просто конкретно как вызывать методы через Auto Assembler не знаю, а вот документацию по CE Lua успел почитать.
Ну это уже слишком...
Хотя тоже имеет право на жизнь
Мне проще написать dll на с++ которая вызовет просто эту функцию по адресу и все. Тем более все аргументы ты уже знаешь через декомпилятор .net -
49 минут назад, Sergey99 сказал:
Решил через Mono попробовать, как раз нашёл метод класса Camera -> Camera.WorldToScreenPoint, который как раз таки должен использовать видовую матрицу для преобразования координат из 3D в 2D, вот только как найти эту самую матрицу, которую использует эта функция.
Не обязательно находить матрицу из этой функции. Можно просто использовать саму функцию, вызывать ее для перевода.
-
2 минуты назад, Sergey99 сказал:
А может быть такое что байты видовой матрица перевёрнуты? то есть порядок столбцов тот же, а вот строки снизу вверх?
Ну... Я с видовыми матрицами работал совсем немного
Но перевернутых никаких мне не встречалось.
Да и если посмотреть как формируется н-мерный массив, то он останется таким же и в памяти.
Т.е. как он был записан в коде, так должен и выглядеть в памяти. Разве что в CE выбрать неправильное отображение (Оно и может наверное запутать) -
15 минут назад, Sergey99 сказал:
Да, идея хорошая, учитывая то что игра на Unity с использование скриптинга на C#, но не каждая же игра написана на таких общедоступных движках, к примеру CoD:MW2 была написана на C++ и "IW Engine" (движок разработчиков - они сами его написали и сами же модернизировали).
Ну если игра не на юнити, то тогда и нужно искать видовую матрицу
Для юнити довольно просто все писать. Берешь саму dll, которая Assembly-csharp из папки manage.
Это считай твоя "основная библиотека классов" для модификаций чего угодно. После написания инжектируешь как mono библиотеку -
Ну наверняка структура до каменя примерно такая
pPlayer->CInventory[N]->CItem-> (И вот тут уже вариации)
В любом случае нужно искать указатель на инвентарь, а далее искать указатель на каждую вещь в инвентаре
Иначе врятли ты найдешь сразу камешек который тебе нужен
Ну а для возвращения его в слот, нужно найти функцию которая ставит / вынимает его, если это невозможно записью указателя в память -
2 часа назад, temtriss сказал:
Вот пример моей функции.
Ну вот такие хуки как раз довольно сложно отлаживать.
Переписал бы ты хук на detours 1.5, или же 3 версию. Там хотя бы точно не накосячишь со стеком и прочим. -
Можешь словить запрос на авторизацию, потом просто слушать этот сокет, самый классный вариант как по мне
Но не факт что рабочий, т.к. наверняка что-то может помешать
Проблема по сути в том, что во флеш игру ты не сделаешь никакого хука
-
Ну смотри. На скриншоте есть даже пост запрос
Я бы начал с него. Посмотреть вообще насколько часто игра ими общается
А посмотреть очень просто любым сниффером -
Такое только перехватом можно отследить
Хук Send и recv ф-ий в сокете
Ну и конечно же нужно найти функции шифрования трафика -
А еще можно найти указатель на хп и выставить банку на клавишу
Потом читать хп и если оно меньше твоего установленного %, отправлять игре Sendmassage c нажатием клавиши на которой установлена банка
Это самый просто вариант, максимально простой -
Может просто скрыл шторку где показываются asm команды? Хмм?
-
Начиная от версии игры заканчиваю сущей магией вне Хогвардса
-
Думаю ты можешь выйти на инструкции которые перебирают в цикле указатели на персонажей
А потом уже просто читать их прямо оттуда
Те которые уже не будут использоваться сразу отпадают, т.к иначе игра бы просто пыталась читать пустой / неправильный указатель -
3 часа назад, edx сказал:
И еще вопрос:) Это нормально сделать вот так? :
Можешь при каждой отработке функции просто обновлять указатель на объект а потом пользоваться функциями
Примерно также как у меня и сделано -
39 минут назад, Garik66 сказал:
Ухты imaginary утерла нос partoftheworlD крутяк!!!
Та не, тебе показалось
-
Без ProcessEvent никак
Его нужно хукать и хукать обязательно -
Смотри
1. Тот урок, что от Кенга бородатых времен вполне подходит для css v34
Принцип вообще не поменялся никак
2. Без базы знаний c++ ты толком ничего и не напишешь без полного копипаста готового исходника
Да хотя даже для копипаста кода надо знать как он работает, ну и соответственно знать синтаксис языка для исправления ошибок
GDI - Слова разного цвета в одном тексте
in Общение
Опубликовано · Изменено пользователем roma912
Ну мне пришел в голову такой вариант - написать свой парсер и на его основе уже использовать функции рисования.
Если хочешь сделать разметку для текста вроде HTML, то придется написать тебе обработчик данной строки.
Допустим, ты передаешь в свою функцию следующее (Ну соотв. класс для всего этого)
Первый твой этап - сделать парсинг, который ты уже будешь обрабатывать по своей логике. Сначала определять текст, потом цвет, потом символы переноса и т.д.
Самый простой вариант - регулярка (кликабельно)
Совпадения по группам, это будет то, что тебе нужно в данном случае.
Группа 1 - выдаст тебе hex цвета. Далее уже сам преобразуешь
Группа 2 - выдаст тебе текст, который нужен для отображения. Далее уже сам обработаешь перенос строки.
Ну и по итогу получишь то, что хотел.
Минус только в том, что тебе придется на совершенно любой текст ставить данные кастомные теги. В целом теги можно сделать и попроще, чтобы и сама регулярка была проще. Ну тут уже как хочешь, тебе решать.
По поводу переноса текста - берешь начальные координаты отрисовки, и высчитываешь от этой координаты вниз некоторое количество пикселей (Допустим шрифт 14 + отступ текста 8 = 22). Примерно такая логика для переноса текста. Ну а далее стандартная отрисовка по координатам.
Идею для реализации я тебе описал, дальше все за тобой.