Current time: 19.05.2024, 12:17 Hello There, Guest! (LoginRegister)
Language: english | russian  

Post Reply 
Threaded Mode | Linear Mode
patcher_x86.dll
» версия 2.8
Author Message
baratorch Offline

Posts: 197
Post: #28

Исходники patcher_x86 (MS VC++ 2008):
http://sites.google.com/site/heroes3hd/f...ects=0&d=1

Berserker Wrote:Наконец, если там вдруг ошибка или ошибка в SDK, или нужно глянуть реализацию, потому что мой код не работает, исходников нет.
Примеры SDK для всех языков билдились и тестировались успешно.
В самом патчере 1.7 пока ни ХотА ни ХД не нарвались на баг.

Berserker Wrote:Помимо прочего я не помню (поправьте если не прав), чтобы клиенты патчера могли делать то же самое: получить список всех заплаток, например (а ради чего ещё остальным такая централизация?). Наконец, если там вдруг ошибка или ошибка в SDK, или нужно глянуть реализацию, потому что мой код не работает, исходников нет.
Список всех заплаток клиент получить не может. Было бы не плохо если б было можно. Еще лучше была бы функция: получить патчи в указанном диапазоне адресов.

Что сейчас может клиент. Может отменить/применить все патчи, может отменить применить все патчи указанного PatcherInstance (т.е. мода или части мода). Можно получить все патчи по конкретному адресу.
А еще клиент может сохранить в файл дамп - карту всех наложенных патчей в данный момент времени; и лог, показывающий очередность применения/отменения патчей с деталями и потенциальные конфликты. Разработчик смотрит дамп и лог и, руководствуясь увиденным, делает изменения в коде мода.
Вот ради возможности посмотреть такие дамп и лог (которые кроме всего прочего показывают какой мод (PatcherInstance) установил определнный патч/хук) и возможности включать отключать патчи установленные из других модов и нужна централизация.

Все патчи хранятся в упорядоченном двоичном дереве, каждый лист которого - адрес с динамическим массивом всех наложенных по этому адресу патчей. Правда в каждом PatcherInstance хранится еще и связанный список всех его патчей.
Возможно это всё лишние нагромождения, и можно б было обойтись динамическим массивом вместо дерева, но дерево сделано для скорости доступа к патчу по конкретному адресу (хотя я, крайне редко использую эту возможность).

(20.11.2012 06:56)GrayFace Wrote:  
(15.11.2012 03:03)baratorch Wrote:  Было бы здорово, если б 3.59 тоже перешел на патчер, ибо никакие узкоспециализированные API и скриптовые языки не смогут решать такие задачи, какие может патчер
Я сейчас использую удобную систему хуков на Луа. По сути, любые задачи с помощью моего модуля хуков/структур/работы с памятью можно решать. Одно исключение - когда нужна скорость, тогда придется грузить dll или байт-код писать строкой. Да, еще ограничение - код должен исполняться в основном потоке. Патчер я глянул только чуть-чуть и, как я понял, есть сходства с моими хуками в высокоуровневости.
Главная фича хуков патчера - это то, что разные моды независимо друг от друга могут хучить одну и туже функцию или ее конкретный вызов сколько угодно раз, не перекрывая а дополняя её код при желании.
Ну и описанные выше возможности по управлению чужими патчами/хуками и просмотр дампа и лога - очень важная и полезная вещь.

вот пример дампа:
Quote:instances(7): 'HD', 'HotA', 'spellbook.patch', 'HD.Af', 'HD.TE', 'HD.IG', 'HD.Pack.SuperRus',
addresses count: 3460
    patches count: 3637


00401448: count = 1 [Patch , size: 04, owner: HD]
0040144F: count = 1 [Patch , size: 04, owner: HD]
00401510: count = 2 [HiHook, size: 05, owner: HD] [HiHook, size: 05, owner: HD.Af]
00402480: count = 1 [Patch , size: 04, owner: HotA]
00402E70: count = 1 [HiHook, size: 05, owner: HD]
00402F00: count = 1 [Patch , size: 04, owner: HD]
00402F49: count = 1 [Patch , size: 04, owner: HD]
...

и лога:
Quote:log records count: 3769

Patch 00599B31/06 ->Apply (HD), z-order = 0
...
HiHook 00479853/05 ->Apply (HotA), z-order = 0
HiHook 0047999B/05 ->Apply (HotA), z-order = 0

WARNING! 00493E31: Applying Patch (size: 32, owner: HotA), which overwrites a part of already applied HiHook (size: 5, owner: HD) at 00493E4C! Older one becomes FIXED!

Patch 00493E31/32 ->Apply (HotA), z-order = 0
...
(This post was last modified: 21.11.2012 08:05 by baratorch.)
21.11.2012 06:37
Find all posts by this user Quote this message in a reply
« Next Oldest | Next Newest »
Post Reply 


Messages In This Thread
patcher_x86.dll - baratorch - 11.02.2012, 13:20
RE: patcher_x86.dll - Berserker - 11.02.2012, 15:48
RE: patcher_x86.dll - kostya_76 - 11.02.2012, 22:59
RE: patcher_x86.dll - baratorch - 13.02.2012, 18:42
RE: patcher_x86.dll - kostya_76 - 13.02.2012, 21:42
RE: patcher_x86.dll - Berserker - 13.02.2012, 20:09
RE: patcher_x86.dll - baratorch - 13.02.2012, 21:36
RE: patcher_x86.dll - Berserker - 13.02.2012, 22:04
RE: patcher_x86.dll - baratorch - 13.02.2012, 22:56
RE: patcher_x86.dll - Berserker - 13.02.2012, 23:25
RE: patcher_x86.dll - baratorch - 15.02.2012, 13:53
RE: patcher_x86.dll - baratorch - 17.02.2012, 02:15
RE: patcher_x86.dll - baratorch - 20.02.2012, 08:49
RE: patcher_x86.dll - baratorch - 28.02.2012, 09:38
RE: patcher_x86.dll - Sav - 18.03.2012, 19:04
RE: patcher_x86.dll - Sav - 24.03.2012, 23:36
RE: patcher_x86.dll - gamecreator - 25.03.2012, 01:37
RE: patcher_x86.dll - Sav - 25.03.2012, 09:10
RE: patcher_x86.dll - baratorch - 26.03.2012, 09:14
RE: patcher_x86.dll - baratorch - 04.04.2012, 14:17
RE: patcher_x86.dll - Berserker - 04.04.2012, 19:33
RE: patcher_x86.dll - baratorch - 25.06.2012, 08:23
RE: patcher_x86.dll - baratorch - 27.07.2012, 09:43
RE: patcher_x86.dll - Berserker - 27.07.2012, 14:04
RE: patcher_x86.dll - baratorch - 27.07.2012, 17:30
RE: patcher_x86.dll - Berserker - 27.07.2012, 19:18
RE: patcher_x86.dll - baratorch - 24.09.2012, 17:36
RE: patcher_x86.dll - baratorch - 21.11.2012 06:37
RE: patcher_x86.dll - Berserker - 21.11.2012, 13:38
RE: patcher_x86.dll - Berserker - 01.01.2013, 22:27
RE: patcher_x86.dll - gamecreator - 01.01.2013, 23:00
RE: patcher_x86.dll - Berserker - 04.01.2013, 21:51
RE: patcher_x86.dll - Sav - 04.01.2013, 22:01
RE: patcher_x86.dll - Berserker - 04.01.2013, 22:43
RE: patcher_x86.dll - Berserker - 05.01.2013, 00:05
RE: patcher_x86.dll - hippocamus - 09.01.2013, 12:59
RE: patcher_x86.dll - Berserker - 06.01.2013, 03:10
RE: patcher_x86.dll - Berserker - 09.01.2013, 18:11
RE: patcher_x86.dll - Berserker - 28.06.2013, 14:16
RE: patcher_x86.dll - Berserker - 28.06.2013, 15:21
RE: patcher_x86.dll - Berserker - 02.07.2013, 19:50
RE: patcher_x86.dll - baratorch - 16.08.2013, 09:06
RE: patcher_x86.dll - Sav - 22.08.2013, 21:02
RE: patcher_x86.dll - Berserker - 05.09.2013, 21:11
RE: patcher_x86.dll - Berserker - 25.09.2013, 19:27
RE: patcher_x86.dll - Berserker - 26.09.2013, 18:44
RE: patcher_x86.dll - Berserker - 10.10.2013, 19:43
RE: patcher_x86.dll - baratorch - 24.10.2013, 21:32
RE: patcher_x86.dll - Berserker - 24.10.2013, 22:38
RE: patcher_x86.dll - baratorch - 25.10.2013, 08:11
RE: patcher_x86.dll - Berserker - 25.10.2013, 17:42
RE: patcher_x86.dll - baratorch - 25.10.2013, 20:20
RE: patcher_x86.dll - Berserker - 25.10.2013, 22:04
RE: patcher_x86.dll - baratorch - 26.10.2013, 21:47
RE: patcher_x86.dll - Berserker - 26.10.2013, 22:12
RE: patcher_x86.dll - baratorch - 28.10.2013, 12:46
RE: patcher_x86.dll - baratorch - 03.12.2013, 16:39
RE: patcher_x86.dll - Berserker - 03.12.2013, 19:21
RE: patcher_x86.dll - Arseniy - 31.03.2014, 12:28
RE: patcher_x86.dll - Berserker - 31.03.2014, 21:39
RE: patcher_x86.dll - baratorch - 03.11.2014, 02:19
RE: patcher_x86.dll - baratorch - 03.11.2014, 02:49
RE: patcher_x86.dll - Berserker - 03.11.2014, 20:14
RE: patcher_x86.dll - Berserker - 03.11.2014, 20:21
RE: patcher_x86.dll - baratorch - 03.11.2014, 20:22
RE: patcher_x86.dll - Berserker - 03.11.2014, 22:18
RE: patcher_x86.dll - baratorch - 07.11.2014, 16:12
RE: patcher_x86.dll - baratorch - 21.08.2015, 11:25
RE: patcher_x86.dll - Bes - 10.09.2015, 20:04
RE: patcher_x86.dll - gamecreator - 11.09.2015, 00:57

Forum Jump:

Powered by MyBB Copyright © 2002-2024 MyBB Group