Здравствуйте, гость ( Вход | Регистрация )
Дата поста: | В теме: | За сообщение: | Спасибо сказали: | ||
---|---|---|---|---|---|
20 Nov 2017, 03:12 |
patсher_x86 |
Цитата А как насчёт map-файла? Можешь скомпилировать библиотеку с генерацией оного? map сделаю к следующей версии патчера, которая выйдет на днях. |
Berserker | ||
19 Nov 2017, 21:25 |
patсher_x86 |
Berserker, в патчере целиком и полностью забито на многопоточность. Точнее в патчере: 1. нельзя создавать/ставить/отменять патчи/хуки в несколько потоков. 2. нельзя выполнять код с LoHook и HiHook (кроме DIRECT_) хуками в несколько потоков. можно в несколько потоков выполнять Asm и DIRECT_ HiHook хуки. 3. нельзя пользоваться методами VarInit и VarFind в несколько потоков. Цитата В дополнение к предыдущему посту. Бара, ты используешь VirtualProtect для того, чтобы дать странице памяти права READ_WRITE_EXECUTE, но не возвращаешь оригинальные права обратно после применения патча. Вообще-то обратно возвращаю. |
Berserker | ||
14 Nov 2017, 11:23 |
patсher_x86 |
Здесь последний патчер версии 4.2.9.1, хэдер для C++ версии 4.2 и pas-файл версии 2.1: скачать патчер SDK |
Ben, Berserker, igrik | ||
12 Nov 2017, 06:48 |
patсher_x86 |
Цитата адрес затёртого кода, хранимого в мосте: [затёртая команда 1] [затёртая команда 2] [возврат на адрес после затёртых команд] я не понимаю зачем давать пользователю LoHook'a возможность обращаться к адресу затертого кода в мосте и зачем вызывать такое внутри Handler, ведь на момент вызова этого будет неактуальным и непредсказуемым содержимое регистров. после return EXEC_DEFAULT в Handler в мосте происходит следующее: 1. значения всех регистров из контекста (HookContext::eax, ...) копируются в соответствующие регистры 2. выполняется затертый код (затертая команда 1, затертая команда 2, ...) 3. прыжок на HookContext::return_address. Если внутри Handler он не изменялся, то это будет адрес после затёртых команд в исходном коде. Что тут тебе еще может быть нужно, я не понимаю. Цитата Были баги, кода перезаписал места вида ADD ESP, XXX или PUSH XXX или POP XXX. У тебя такие проблемы исключены? проблем c уcтановкой ЛоуХука на команды изменяющие esp - нет. Цитата(baratorch) Код int __stdcall Handler(LoHook* h, HookContext* c) { какой-то код... ... выполнить затертое ... какой-то код... } Здесь главное то, что после выполнения затертого еще можно выполнить еще какой-то свой код внутри Handler. Под затертым я имею в виду реально затертое (это может быть джамп другого хука, о котором мы не знаем), А так-то мы всегда можем в Handler продублировать затираемый оригинальный код манипуляциями с HookContext::eax, ... |
Berserker | ||
11 Nov 2017, 21:21 |
patсher_x86 |
переделал свой тест добавил в тестируемый код pushfd - popfd и добавил еще 2 варианта Код pushad... : 10172 push edi...: 9781 push eax...: 9906 old... : 12172 new... : 10984 Код pushad... : 5912 push edi...: 5506 push eax...: 5398 old... : 7566 new... : 6053 old - это то как реализовано перемещение регистров в стек и обратно в последнем опубликованном patcher_x86 4.2.8 через кучу, т.е. некоторые значения проходят путь: регистр -> куча -> стек -> куча -> регистр. new - это новая реализация: регистр -> стек -> стек -> регистр По моему очень неплохо для новой, да и старая показывает результат того же порядка. И это 500 000 000 итераций уж в рамках героев разницей точно можно пренебречь. |
Berserker | ||
11 Nov 2017, 21:01 |
patсher_x86 |
Цитата(Berserker) Я так понимаю, как LoHook нет метода, возвращающего адрес в рамках моста для вызова оригинальной (замещённой функции) или оригинальных команд с последующим продолжением исполнения, как если бы патча не существовало?. Я что-то не понял вопроса. Всмысле можно ли поставить LoHook который ничего не делает (просто выполняет затертый код)? Да, можно: Код int __stdcall NopFunc(LoHook* h, HookContext* c) { return EXEC_DEFAULT; } ... _PI->WriteLoHook(0xAABBCC, NopFunc); или нужно что-то вроде: Код int __stdcall Handler(LoHook* h, HookContext* c) { какой-то код... ... выполнить затертое ... какой-то код... } если да, то такое нельзя сделать. такое есть в WriteAsmHook: _PI->WriteAsmHook("какие-то команды....; _ExecDefault; какие-то команды...", 0); Цитата LoHook нет метода, возвращающего адрес в рамках моста для вызова оригинальной (замещённой функции) для LoHook нет понятия оригинальной (замещенной) функции. LoHook устанавливается просто на код. Что там за код под ним - не имеет значения. Я из кода эры не очень могу понять как устанавливается HOOKTYPE_BRIDGE хук. В самом мосте адрес возврата у тебя не пушится. Но в контексте он есть, так? Значит от попадает в стек до выполнения моста, так? Значит перенаправление на сам мост из оригинального кода идет посредством call? У меня же перенаправление на мост идет посредством jmp а адрес возврата помещается в контекст внутри моста. Второе. Я правильно понимаю что в твоем HOOKTYPE_BRIDGE мосте, если Handler возвращает EXEC_DEFAULT, то мост игнорирует адрес возврата из контекста и прыгает обратно туда, куда должен по умолчанию? У меня же в мост прыгает по адресу возврата из контекста , который мы возможно изменили внутри Handler, в любом случае: вернул ли Handler SKIP_DEFAULT или EXEC_DEFAULT |
Berserker | ||
11 Nov 2017, 16:13 |
patсher_x86 |
озадачился я вопросом скорости выполнения моста состряпал тест вот с таким кодом: скачать тестовый экзешник результат несколько неожиданный на моем рабочем ноуте такой: pushad... : 3074 push edi...: 2386 push eax...: 2590 на лобби сервере для Хоты: pushad... : 6719 push edi...: 4547 push eax...: 4625 * можно посмотреть в отладчике что тест выполняется честно * при перестановке местами вариантов результаты теста не меняются то есть pushad получается самым медленным. а именно та портянка, которая используется сейчас в патчере - самая быстрая. *** приведенный мной выше код моста я сократил и убрал перемещение значений esp и регистра флагов через кучу: но как сделать перемещение адреса возврата не через кучу я не представляю, кажется что сохранив функционал этого не сделать.. вобщем теперь переживать из-за размера моста можно будет меньше. кстати в дампе патчера есть записи bridge memory - это память выделенная патчером под все мосты. bridges sizes sum - это суммарный размер всех мостов. |
Berserker | ||
09 Nov 2017, 22:23 |
patсher_x86 |
в патчере в мосте лоу-хука до сих пор портянка команд на сохранение каждого регистра Для все той же обратной совместимости. Более того, в коде моста много данных в регистр/стек попадают через кучу (временные переменные). сейчаc код моста вот такой: Порядок регистров, адреса возврата и регистра флагов здесь продиктован лишь обратной совместимостью. Да, можно изменив порядок этого всего внутри HookContex сделать короче и красивее. Но мне лично лень ломать голову как это сделать я не ASM-нинзя, здесь скорее кто-то вроде MasterOfPuppets нужен. Предложите ваше решение и я добавлю в патчер "NewFastLoHook" хук. а старый LoHook останется для обратной совместимости. Но вообще от этой страшной медленной портянки никто, кроме тебя не страдает. Да и начиная с версии 4 используя PatcherInstance::WriteAsmHook или Patcher::WriteAsmCode можно легко написать низкоуровневый хук точно и тонко самому определив код его моста. Цитата Имеется сейчас актуальный pas-файл для подключения патчера и ссылка на сам патчер последней версии? актуального pas-файла нет, так как он уже несколько лет (!) никому не нужен. можно использовать старый, но, очевидно, не будет доступен добавленный позднее функционал (например Asm-патчи и Asm-хуки) Здесь последний патчер версии 4.2.8, хэдер для C++ версии 4.2 и pas-файл версии 2.1: скачать патчер SDK |
Berserker | ||
17 Sep 2017, 22:09 |
patсher_x86 |
Цитата Патчер - это инструмент для модификации любого исполняемого кода (не только героев). Кто-нибудь может привести пример, как использовать патчер для моддинга других игр (например, Героев 2)? Сейчас я в отпуске. Вернусь, покажу пример модинга героев 2. Я же начал делать ХД мод для двойки, но запнулся о локализацию, просто обломало ее делать. И работа дальше не пошла, хотя двойка (экзешник с сигнатурами) - благодатнейшая платформа для модинга. |
AlexSpl, hippocamus, Orzie | ||
05 Sep 2017, 04:39 |
Добавление функционала в HDmod |
А как? Может есть готовое решение, которое достаточно закинуть в папку? не помню… я доставал и засовывал обратно с помощью MMArchive, эта штука вроде только для windows и не знаю можно ли её использование скриптовать. если просто положить файл отдельно, опять же не проверял, может и прокатило бы. сейчас лень повторять, решил что проще смириться с обычной графикой. Так нужый батлфилд (bmp) и так достаточно закинуть в папку _HD3_Data\Common, раз уж обсуждение в теме ХД. |
the_new_pirate, dimakey | ||
27 Aug 2017, 17:43 |
Баг-репорты |
у меня установлен и выбран HW_rulez 1.40, но всё равно получается вот так. в чём может быть проблема? Установи Microsoft Visual C++ 2008 Redistributable Package: https://www.microsoft.com/ru-ru/download/details.aspx?id=29 |
the_new_pirate | ||
21 Aug 2017, 18:02 |
HD Флуд Флуд и офф-топ высокого разрешения |
Цитата(USBhere) Лично для меня главной ненужной заморочкой является упор разработчиков ХоТА на эстетической красоте мода. Как то странновато тратить уйму времени на полировку пикселей и отладку теней, которые будут не заметны глазу 90% игроков.Геройщики ждут от мода более лояльный и гибкий функционал, который будет позволять человеку удовлетворить различные его потребности и насытить игру разнообразием (в том числе и рендомом), который бывает критичен при длительном "зависании" в Г3. Чем еще заниматься людям, кторые (утрируя) умеют только пиксели полировать и отлаживать тени? Это художники должны новый функционал реализовывать? C помощью чего, фотошопа? Вся разработка игры бОльшую часть самой важной и успешной истории в хоте держится на одном(!) человеке. Я в свое время помог с редактором карт, еще человек сейчас сделал редактор шаблонов. Но саму игру на 99,5% делает один человек. |
hippocamus, Лентяй, XEPOMAHT, DrSlash | ||
20 Aug 2017, 16:56 |
HD Флуд Флуд и офф-топ высокого разрешения |
Цитата(Slayer Moon) Надеюсь, что уважаемый baratorch не забросит поддержку обычного SOD в угоду HOTA. Вообще-то уже можно сказать забросил. С определенного момента я не делаю для Сод крупных и значимых фич, потому что Сод перестал быть мне интересен. Я уже писал на другом ресурсе, что люблю смотреть стримы и смотрю стримы исключительно только Хоты. Вообще в онлайне сода все крайне уныло: скелеты, утки, ангелы, масло, буст мувпоинтов, контроль, +алл, КШ. В хоте - совсем чуть чуть поразнообразнее. И это чуть-чуть - уже хорошо. Цитата Я не играю в ХОТУ потому, что это мод и как бы офигенен он ни был, он кардинально (местами) меняет основную игру Для многих Хота слишком слабо меняет игру и поэтому ей они предпочитают моды к Эре, Моп. Для меня лично тоже Хота слишком слабо меняет игру. Там же все то же самое, только либо "скины" новые, либо циферки незначительно в ту или другую сторону изменены. Мне же хочется больше новых механик в дополнение к существующим, которые бы сделали общую механику более глубокой и сложной. Вот например управляемый выстрел магогов и личей, неудача, - это позитивное для меня углубление и усложнение механики. Но подобных изменений в хоте очень мало. Подобные изменения крайне тяжело продавливать, ибо все разбивается об "неклассично" и "не вписывается в концепцию". Если же кардинальность относится к графике, то с одной стороны настоящему любителю игры в шахматы должно быть глубоко пофиг как выглядят и из чего сделаны фигуры. А с другой стороны, в хоте некоторые личности, отвечающие за графику просто маниакально относятся к вопросам стиля и качества картинки. Такого , по крайней мере, отношения к графики у художников NWC просто не могло быть, ибо никто из издателей не взялся бы за проект со сроком реализации в 10+ лет. Есть конечно по части графики и упущения и недоработки, есть переработки, есть на мой взгляд бессмысленно потраченные силы (когда чинится то, что не ломалось), но в целом планка очень и очень высока. |
hippocamus, IQUARE, Haart of the Abyss, J2K | ||
19 Aug 2017, 00:59 |
HD Флуд Флуд и офф-топ высокого разрешения |
Цитата(BratetsVolk) - что вам не нравится в Хоте? - то-то и то-то Вот. Это о том, о чем я говорил. NWC вас вообще ни очем не спрашивала и именно поэтому претензий к оригиналу нет, а не потому что он абсолютный идеал и нравится на 200% каждым своим кактусом. Цитата Почему команда разработчиков не верит в то, что кому-то в Хоте что-то может быть не интересно? Да почему не верит то? Еще раз хота - комплексный продукт. Почему нвц не выпустила сборники и багфиксы отдельным модом к Возрождению? А-я-яй, не ужели нвц не верило что в Дыхании что-то может быть не интересно? Зачем было городить эту жуткую графику в Трешке? Почему нельзя было сделать графику как в Двойке, а новую выпустить отдельным модом? Цитата Как по мне, команда Хоты должна для себя признать, что некоторые их решения по Героям 3 могут быть неинтересны, и тут нет ничего негативного. Всем не угодишь. Да кто ж спорит то с тем что всем не угодишь. Просто, я например, умею смириться с тем что не интересно, закрыть на это глаза или привыкнуть, пересилив себя, чтобы насладиться тем, что интересно. В жизни приходится так делать постоянно. Если этого не уметь, то в жизни вообще ничего выбрать не сможешь. Потому что любой реальный сложный объект не может нравится каждой своей гранью на 200%. А вообще, BratetsVolk, скажи конкретно, что именно тебя отвернуло от Хоты, и почему это заимело такое решающее значение? Цитата(tmn) Так я о том и пишу: Сопряжение навязали игрокам, которые этим фактом были весьма недовольны. И вы идёте тем же путём. Более того (открою тайну) вам навязали Замок, Оплот, Башню и остальные. Почему не пойти тем же путем я не понимаю. Цитата Героям не нужны новые замки, чтобы оставаться интересной и популярной игрой. Корректнее: Соду не нужны новые замки, чтобы оставаться Содом. Ну так и у хоты нет задачи сделать новый аддон, который остался бы Содом. Надеюсь, всем очевидно, что такая задача была бы абсурдной. Команда старается, пытается реализовать свой идеал. Багфиксы и правки баланса - необходимая часть этого идеала, как и новый контент. Почему команда должна напрягаться, чтобы удовлетворить хотелки того, кто не разделяет их представлений о идеале, того кто не может/не хочет оценить их труды комплексно? Разбить комплексный продукт на независимые составляющие - это работа. Такой масштабный продукт - много работы. Кто эту работу будет оплачивать? Желание того, чтобы именно твой продукт обладал максимальным количеством, недоступных для продуктов других производителей, положительных качеств - это совершенно естественное, обычное желание. Поэтому обвинять команду в том, что она чем-то там не делится - глупо. |
hippocamus, J2K, Zabuza-san, Axel_Templar, the_new_pirate, Lokos | ||
18 Aug 2017, 11:13 |
HD Флуд Флуд и офф-топ высокого разрешения |
Объективно в Хоте нет чего-то такого что может резко отвернуть от нее человека, которому нравится сод. Тут два варианта: либо для человека в принципе любое добавление неприемлемо портит сод, не важно багфикс это или новый кактус. Либо просто человек в случае с фанатским модом настроен изначально придирчиво и чувствует что есть/была возможность в моде сделать что-то не так, а вот так, как он хочет. И он бунтует из вредности. В случае с оригиналом такого рода ощущения уже кажутся абсурдными. Почему-то. |
Shurup, hippocamus, IQUARE, Vade Parvis, J2K, DrSlash | ||
18 Aug 2017, 07:37 |
Лобби-сервер для HotA обсуждение разработки |
по той же ссылке доступен оффлайн апдейт до alpha 53 + теперь на время переподключения останавливается таймер + для игры вдвоем теперь ЧАТОМ ИГРЫ становится приват. + можно узнать рейтинг игрока, кликнув правой кнопкой мыши на имя в списке игроков. + в список шаблонов RMG добавлен шаблон 6LM-8MM mix - выпилено ограничение на пользованиние лобби для иностранцев, т.е. на вход в лобби с английской хоты на не русской Windows. + оптимизации и исправления на сервере и клиенте. ! Для SoD ликвидирован функционал отладочной версии, случайно попавший в альфа-релиз, который автоматом подставлял пароли оппонента. Новые запароленные сейвы не соместимы с предыдущими (скомпрометированными) версиями HoMM3 HD, и наоборот. Шифрование сейвов изменено. Эта альфа по реализованному функционалу уже максимально приблизилась к бета (а по стабильности к финальному релизу). Либо следующая версия либо через одну выйдет в публичный релиз с обновлением по воздуху. |
Docent Picolan, hippocamus, magoth, Vade Parvis, Mefista, J2K, Sav, DrSlash, Cthulhu_55, KypaToP_HM, USBhere, the_new_pirate, Lokos | ||
07 Aug 2017, 09:19 |
Лобби-сервер для HotA обсуждение разработки |
по той же ссылке доступен оффлайн апдейт до alpha 50 + реализован механизм автопереподключения при разрыве связи, который должен позволить комфортно играть со связью любого качества. Если связь в целом хорошая, и лишь могут быть незначительные нестабильности, то игроки вообще не должны замечать что случаются разрывы-переподключения. - исправлен баг оригинальной игры с бесконечным получением заголовков карт и бесконечным ожиданием оппонента после старта в сетевой игре. |
Intofire, Docent Picolan, hippocamus, magoth, Vade Parvis, BlackBred, Mefista, J2K, Sav, Corkes, СЕРЁГА (JET), Cthulhu_55, KypaToP_HM, the_new_pirate | ||
26 Jul 2017, 13:29 |
Лобби-сервер для HotA обсуждение разработки |
Mantiss, magoth, Mefista, J2K, Sav, Corkes, deferatto, Cthulhu_55, KypaToP_HM, BratetsVolk | |||
25 Jul 2017, 10:07 |
Лобби-сервер для HotA обсуждение разработки |
по той же ссылке доступен оффлайн апдейт до alpha 46 * исправления ошибок и оптимизация клиента и сервера. + в окне лобби доступна кнопка РЕЙТИНГ (открывает список всех игроков с информацией: место, имя, рейтинг, игры, победы, поражения, ничьи) |
Seiffear, hippocamus, magoth, Mefista, J2K, Sav, Corkes, Cthulhu_55, KypaToP_HM, Lokos | ||
19 Jul 2017, 15:05 |
Лобби-сервер для HotA обсуждение разработки |
Теперь вместо плагина HotA HW 1.38+ следует использовать HW_rules_1.40 |
Seiffear, magoth, Mefista, J2K, XMenik, Sav, Corkes, Cthulhu_55, KypaToP_HM | ||
19 Jul 2017, 13:32 |
Лобби-сервер для HotA обсуждение разработки |
Seiffear, hippocamus, magoth, Mefista, XMenik, Sav, Corkes, Cthulhu_55, KypaToP_HM | |||
18 Jul 2017, 13:34 |
Лобби-сервер для HotA обсуждение разработки |
по той же ссылке доступен оффлайн апдейт до alpha 41 - исправлен баг, делавший невозможной игру с одновременным ходом для 3 и более человек. * оптимизация и исправления ошибок сервера. |
Seiffear, Docent Picolan, magoth, Vade Parvis, Mefista, XMenik, Sav, Corkes, deferatto, DrSlash, Cthulhu_55, KypaToP_HM | ||
17 Jul 2017, 12:28 |
Лобби-сервер для HotA обсуждение разработки |
по той же ссылке доступен оффлайн апдейт до alpha 33 * небольшие оптимизация и исправление ошибок сервера. + теперь по клику правой кнопкой мыши на игру, в информации о ней перечислены все ее участники. |
Seiffear, hippocamus, magoth, Vade Parvis, AKuHAK, Mefista, XMenik, Sav, igrik, Corkes, deferatto, Cthulhu_55, KypaToP_HM, BratetsVolk | ||
16 Jul 2017, 20:58 |
Лобби-сервер для HotA обсуждение разработки |
по той же ссылке доступен оффлайн апдейт до alpha 31 + (убогая, но хоть какая-то) поддержка ссылок в чате. в полее ввода текста: + позиционирование курсора мышью + поддержка вставки русского текста по [CTRL]+[V] + сочетания клавиш [CTRL]+[<-], [CTRL]+[->] и [CTRL]+[BACKSPACE] |
Seiffear, hippocamus, magoth, Nestor, Vade Parvis, Mefista, J2K, XMenik, Sav, igrik, Corkes, DrSlash, Cthulhu_55, KypaToP_HM | ||
15 Jul 2017, 19:35 |
Лобби-сервер для HotA обсуждение разработки |
по той же ссылке доступен оффлайн апдейт до alpha 30 * мелкие фиксы и улучшения... |
Seiffear, magoth, XMenik, Sav, Corkes, Cthulhu_55, KypaToP_HM | ||
Текстовая версия | Сейчас: 24 April 2024 - 06:25 |
Copyright by Алексей Крючков
Programming by Degtyarev Dmitry |