Приветствуем вас на форуме проекта WoW Circle. Если вы читаете это, значит не зарегистрировались у нас. Для того, чтобы получить доступ к расширенным возможностям нашего форума нажмите сюда и пройди регистрацию, которая не займет у вас много времени. После регистрации будут доступны новые, более расширенные, возможности.
dMorph

Упомянутые в теме пользователи:

Показано с 1 по 8 из 8

Тема: dMorph

  1. #1
    Новичок
    Регистрация
    26.03.2019
    Сообщений
    3
    Поблагодарил(а)
    0
    Получено благодарностей: 1 (сообщений: 1).
    Репутация: 1

    Exclamation dMorph

    Добрый день.

    Чисто случайно решил отвлечься от реальной жизни, которая в 2019 поглотила меня целиком и полностью, и проверить новый ИКС от Яндекса, поэтому нашел вот такую тему https://forum.wowcircle.com/showthread.php?t=851226.
    Чтобы поставить все точки над Ё, отвечу на некоторые вопросы.

    1. При скачивании программы она определяется как вирус.
      Да. Это из-за Injector.exe - небольшой программы, которая внедряет основную библиотеку dmorph.dll в процесс игры. По сути она не нужна. Вы можете использовать любой другой инжектор, а этот Injector.exe удалить. Например: при тестировании библиотеки я использовал инжектор встроенный в CheatEngine. Если же Вы решились оставить этот инжектор, то после загрузки файла через браузеры Yandex/Google он изменить расширение файла с припиской "dmoprh.zip помечен как опасный". Просто восстанавливаем расширение на *.zip и распаковываем куда хотите, добавив Injector.exe как исключение для своего антивируса.

    2. Принцип работы dmorph.dll.
      На самом деле она очень простая и маленькая. После инжекта dll в процесс игры запускается дополнительный поток, который инициализирует программу - идет перехват 4х функции:
      • окончание отрисовки кадра (DirectX9::Present)
      • LUA функции ввода, которая используется для проверки ввода команд (команды dmoprh это или нет)
      • получение указателя на игрока, чтобы визуально манипулировать моделями вещей и моделью персонажа
      • функция обновления модели персонажа

      А дальше просто каждый кадр проверяется была ли введена команда и что нужно обновить, и последующее обновление модели.

    3. Будут ли последующие обновления программы?
      Скорее всего да, будут. Я знаю и знал, когда выпускал последнюю ревизию программы какие баги существуют. Проблема заключается в том, что отслеживать причины этих багов довольно сложно и делать это стандартной "точкой остановки" мягко говоря проблематично. Самым лучшим решением будет создание GUI для вывода отладочной информации. Но ее еще нужно прописать...

    4. Почему не opensource?
      По той же причине, почему не выкладывают другие разработчики... (когда изучался мною вопрос создания dmoprh, оказалось, что знающих людей, как написать такого рода программу уйма). Основная причина - "юные хакеры". Я не хочу говорить, как Бен из фильма "Человек паук", но ничто не мешает перехватывать логин и пароль, если вы оказались на экране ввода пользователя & пароля, если dll уже был инжектирован, т.к. он использует "LUA функции ввода, которая используется для проверки ввода команд". Если сделать открытый исходный код, то любой сможет что-нибудь дописать (отправку перехваченных аккаунтов на свой серв) и выдавать эту программу, как "dmorph с открытым исходным кодом". А учитывая то, что образовался небольшой рынок по продаже аккаунтов ВоВ, то было бы безответственно дать уже наполовину написанный инструментарий для "юных хакеров".

    5. Спасибо за откровение, но как нам узнать, что текущая версия dmorph ничем подобным не занимается?
      Все очень просто - запустить любой трассировщик пакетов без dmoprh и после, и убедится в том, что никаких "лишних" серверов при отправке пакетов там нет.

    6. Будут ли масштабные обновления функционала?
      В планах есть некоторые идеи, которые должны как упростить использование dmoprh, так и увеличить его функционал. Например: когда будет написан GUI, то его же можно использовать для визуального отображения списков всех моделей и итемов, которые можно применить. Будет выглядит как гардеробная в актуальном World of Warcraft, но вызываться возможно, как консоль в первой версии Half-Life.
      По поводу "моделей рас, которых не удалось найти без 'впаяной' одежды" все будет зависеть от того, удастся ли найти другой подход смены расы. А для этого придется много времени провести в дизассемблированном коде.
      Так же будет изменен сайт, чтобы был небольшой FAQ для уже известных проблем, а так же обратная связь для исправлений багов и модификации программы.


    PS: прошу модераторов перенести тему в нужный раздел.
    Последний раз редактировалось zdohdds; 26.03.2019 в 14:27.

  2. 1 пользователь сказал cпасибо zdohdds за это полезное сообщение:

    Ого! (31.03.2019)

  3. #2
    Абориген Аватар для Foximys
    Регистрация
    22.10.2012
    Сообщений
    1,980
    Поблагодарил(а)
    54
    Получено благодарностей: 342 (сообщений: 296).
    Репутация: 342
    Старый морфер Simply Morpher 3 перестал работать на новой винде, юзаю этот, и вопрос - его варден не будет палить как то-то левое?

  4. #3
    Заблокирован
    Регистрация
    14.12.2018
    Адрес
    Кровать твоей мамы
    Сообщений
    244
    Поблагодарил(а)
    44
    Получено благодарностей: 126 (сообщений: 93).
    Репутация: 126
    Цитата Сообщение от zdohdds Посмотреть сообщение
    функция обновления модели персонажа
    Не сэкономишь десяток второй минут жизни подсказав оффсет?

  5. #4
    Новичок
    Регистрация
    26.03.2019
    Сообщений
    3
    Поблагодарил(а)
    0
    Получено благодарностей: 1 (сообщений: 1).
    Репутация: 1
    Цитата Сообщение от Foximys Посмотреть сообщение
    Старый морфер Simply Morpher 3 перестал работать на новой винде, юзаю этот, и вопрос - его варден не будет палить как то-то левое?
    Пока я так и не понял чем конкретно Варден занимается, хотя условно - понимаю, потому что никакой "серьезной" активности вардена я не заметил.

    Хоть к Вардену это дело не имеет, но все же напишу: есть один баг при инициализации, когда меняются расположения адресов в памяти (чаще возникает из-за множественных попыток запуска инжектора) и поэтому может получится так, что dmoprh вроде и запустился, даже пищалка работает (при сбросе F5 / F10), но команды не определяются, поскольку адрес функции сменился, а в программе он прописан статически. В таком случае нужно просто перезагрузить компьютер.


    Цитата Сообщение от Ricardozx Посмотреть сообщение
    Не сэкономишь десяток второй минут жизни подсказав оффсет?
    Под 3.3.5 12340

    Код:
    void Morph::UpdateDisplayInfo(unsigned int pPlayer, bool update = true) {
    	if (pPlayer) ((void(__thiscall*)(unsigned int, bool))0x0073E410)(pPlayer, update);
    }

  6. #5
    Заблокирован
    Регистрация
    14.12.2018
    Адрес
    Кровать твоей мамы
    Сообщений
    244
    Поблагодарил(а)
    44
    Получено благодарностей: 126 (сообщений: 93).
    Репутация: 126
    Цитата Сообщение от zdohdds Посмотреть сообщение
    Под 3.3.5 12340

    Код:
    void Morph::UpdateDisplayInfo(unsigned int pPlayer, bool update = true) {
    	if (pPlayer) ((void(__thiscall*)(unsigned int, bool))0x0073E410)(pPlayer, update);
    }
    А, я понял что ты имел ввиду.
    Там есть 2 варианта либо зацикливать поток на проверку поля с моделайди либо хукать процедуру которая редактирует это поле. Первый вариант конечно проще но он и дороже в плане производительности + может разные проблемы вызывать связанные с многопоточностью когда например 1 поток пишет значение, и в этот момент второй поток выполняет проверку, видит что значение изменилось, и перезаписывает на свое, при этом первый поток еще не закончил запись, в итоге получается каша. Как по мне если пилить морфер то только вторым вариантом, думал ты нашел нужную процедуру.

  7. #6
    Новичок
    Регистрация
    26.03.2019
    Сообщений
    3
    Поблагодарил(а)
    0
    Получено благодарностей: 1 (сообщений: 1).
    Репутация: 1
    Цитата Сообщение от Ricardozx Посмотреть сообщение
    А, я понял что ты имел ввиду.
    Там есть 2 варианта либо зацикливать поток на проверку поля с моделайди либо хукать процедуру которая редактирует это поле. Первый вариант конечно проще но он и дороже в плане производительности + может разные проблемы вызывать связанные с многопоточностью когда например 1 поток пишет значение, и в этот момент второй поток выполняет проверку, видит что значение изменилось, и перезаписывает на свое, при этом первый поток еще не закончил запись, в итоге получается каша. Как по мне если пилить морфер то только вторым вариантом, думал ты нашел нужную процедуру.
    Все проще: чтобы вызывать функции "чужой программы" нужно чтобы они вызывались из главного потока. Главный поток у игр определяется просто - это основной цикл игры, который выглядит примерно так:

    Код:
    while(game->isRunning()) {
    	game->HandleEvents();
    	game->Update();
    	game->Draw();
    }
    где в game->Draw() самым последним вызовом при отрисовке будет swap буферов. Именно поэтому и перехватывается DirectX9::Present.

    Т.е. мы можем продолжить "игровую логику", а так же рисовать что угодно. В том числе можем прикрутить свой ENB под WoW, если уж совсем захочется...

  8. #7
    Старожил
    Регистрация
    17.06.2018
    Сообщений
    264
    Поблагодарил(а)
    6
    Получено благодарностей: 150 (сообщений: 108).
    Репутация: 150
    снова пытаются вирусню впарить?

  9. #8
    Заблокирован
    Регистрация
    14.12.2018
    Адрес
    Кровать твоей мамы
    Сообщений
    244
    Поблагодарил(а)
    44
    Получено благодарностей: 126 (сообщений: 93).
    Репутация: 126
    Чекни личку

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •