(10.02.2021 18:08)igrik Wrote: Ты не разбирался в API patcher_x86, но рассказываешь это так, словно твои слова истина в последней инстанции.
Да, чтобы разобраться в патчере - это как книгу на 100 страниц прочитать, особенно если посмотреть пачтер в отладчике - там суровая жесть, если работу патчей ещё можно без проблем разобрать, то работа хуков патчера - какая-то чёрная магия с кучей разных таблиц и переменных, по которым связать адрес хука с фактическим кодом самого хука вручную выдержит не каждый (т.е. даже наверное антивирусу не подкопаться, что происходит какой-то взлом программы). Теперь знаю что такое SPLICE_, спасибо что объяснили.
(10.02.2021 18:08)igrik Wrote: А больше половины хуков в HD являются HiHook'ами. Я стараюсь использовать именно их в своих плагинах, потому что они предоставляют максимально читаемый и хорошо понимаемый код.
Не спорю, что удобно, спорю, что непонятно. Особенно мне, когда привык ставить перехват двумя строчками ассемблерного кода, например такого:
Code:
mov [адрес_хука], E8h (или E9h)
mov [адрес_хука+1], адрес_функции
и больше не думать ни о каких SPLICE_ и прочих сложных вещах из патчера. Да, так каждый хук оформляется индивидуально, без стандартов программирования. Поэтому по части перехватов программного кода могу что-то посоветовать только на низкоуровневом подходе к этому делу, т.е. тем, кто непосредственно пишет на Ассемблере (сразу скажу, что на Ассемблере всегда ставить хуки проще, но дольше по времени).
(10.02.2021 18:08)igrik Wrote: С таким подходом каждый тогда должен изобрести свой велосипед, и вот тогда это будет полное мясо...
Да, увы, универсальной dll, которая устраивала бы всех, не существует. Под сугубо личные нужды приходится использовать то, что знаешь/умеешь. Когда я начинал моддить Третьих Героев, первое, что попалось - исходники MoP-а, с которыми было легко втянуться в Ассемблер и начать изменять игру как угодно. На СИ в то время не было в свободном доступе
НИЧЕГО, кроме исходников WoG 3.59 (которые ничем не компилировались и были выложены как есть без документации и какой-либо сопроводиловки). Те же слитые структуры вместе со слитыми исходниками феаноровских плагинов появились гораздо позже. В то время уже был патчер, но... я в нём тогда вообще ничего не понял, и сейчас плохо понимаю. Поэтому по-прежнему остаюсь верен тому изобретённому велосипеду, с которого я и начинал этот путь. Пусть сейчас Игрик и другие уважаемые моддеры смотрят на меня как на закоренелого колхозника, не желающего использовать возможности патчера, но я не могу прыгнуть выше головы, увы. Правильное использование вызовов патчера в низкоуровневом коде в каком-нибудь Тифоне - недостижимо для моего низкого уровня.