Current time: 02.06.2024, 14:29 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: #20

1.3

http://sites.google.com/site/heroes3hd/f...ects=0&d=1

старался как можно сильнее сохранить обратную совместимость. но полностью не получилось.
ХД 3 написанный с patcher_x86 SDK 1.2, например прекрасно пошел на новой 1.3
(а вот последнюю редакцию ХоТы придется подправить)

чейнджлог:
Code:
Изменения нарушающие обратную совместимость: [!]
Исправления багов: [-]
Расширение функциональности: [+]
Несущественные изменения/комментарии: [*]

1.3


[-] Исправлены ошибки:
    - отмена хуков во время выполнения их хук-функций приводила к непредвиденным результатам
    - неверно работал формат-символ %a в функции Patcher::WriteComplexData

[+] Функция Patcher::CreateInstance теперь, принимая в качестве аргумента нулевую и пустую строки,
    создает PatcherInstance с именем модуля вызвавшего функцию.

[+] Функции Patcher::GetInstance можно передавать в качестве аргумента не только
    уникальое имя PatcherInstance, но так же имя модуля, создавшего PatcherInstance.
    Однако, имейте ввиду что в одном модуле можно создать несколько экземпляров PatcherInstance,
    в этом случае Patcher::GetInstance с именем модуля в качестве аргумента будет
    возвращать первый созданный PatcherInstance в этом модуле.

[!] Теперь невозможно создавать патчи посредством экземпляра PatcherInstance созданным не в вашем модуле.
    Возможность отменять и применять эти патчи сохранена.

[!] Функция Patch::Apply() теперь возвращает индекс (c 0) патча/хука в последовательности примененных патчей по данному адресу
    в случае успеха, -2 если патч/хук уже применен и -1 в случае неуспеха из-за неведомой хрени.

[!] Функция Patcher::DestroyAllAt заменена на Patcher::UndoAllAt

[*] Функции
    PatcherInstance::WriteComplexPatch
    PatcherInstance::CreateComplexPatch
    переименованы в
    PatcherInstance::WriteCodePatch
    PatcherInstance::CreateCodePatch
    для лучшего отражения сути их работы

[!] Теперь все патчи разделены на 2 типа: DATA_ и CODE_
    DATA_ патчи устанавливаются посредством простого копирования памяти
    CODE_ - посредством MemCopyCode
    произвольно выбрать тип патча нельзя, он устанавливается автоматически.
    DATA_ : BytePatch, WordPatch, DwordPatch, HexPatch, FUNCPTR_ HiHook, DataPatch
    CODE_:  JmpPatch, CodePatch (бывший ComplexPatch), LoHook, CALL_ и SPLICE_ HiHook
    ОЧЕНЬ ВАЖНО понимать разницу!

[+] Добавлены/реализованы функции:

    Patch::ApplyInsert

    PatcherInstance::WriteDataPatch
    PatcherInstance::CreateDataPatch
      PatcherInstance::GetLastPatchAt,
    PatcherInstance::UndoAllAt,
    PatcherInstance::GetFirstPatchAt.

    Patcher::GetFirstPatchAt,
    Patcher::MemCopyCodeEx,


[!] Теперь невозможно уничтожить неотмененный Хук (т.е. чтобы уничтожить, нужно сначала отменить).
[!] Возможность корректно уничтожить хук во время выполнения хук-функции ликвидированна
    (из-за бага ее и так не было, но теперь ее нет официально)

[*] Теперь Хук любого типа можно безопасно отменить в любой момент во время выполнения
    его хук-функции (соответственно исключая т.н. FIXED хуки, которые вообще нельзя отменить).
    Хук отменяется сразу (т.н. понятие отложенной отмены теперь неактуально).

[+] Функция Patcher::MemCopyCode теперь помимо CALL (E8) и JMP (E9) опкодов корректно копирует
    опкоды 0F 80 - 0F 8F (длинные условные прыжки);
[!] теперь в функции Patcher::MemCopyCode переходы E8, E9, 0F 80 - 0F 8F трансформируются
    только если направляют за границы копируемого блока.

[!] Функция Patcher::MemCopyCode теперь копирует всегда целое количество опкодов.
    (т.е. размер скопированного блока кода теперь >= size (был строго = size, т.е последний опкод мог быть обрезан).

[*] Функция Patcher::MemCopyCodeEx отличается от Patcher::MemCopyCode тем что если
    в копируемом блоке короткие прыжки EB, 70 - 7F направляют за границы копируемого блока,
    то они замняются на соответсвующие длинные прыжки (E9, 0F 80 - 0F 8F)

[*] Таким образом, теперь появилась возможность устанавливать SPLICE_ хуки и низкоуровневые хуки на код,
    содержащий любые корткие и длинные относительные переходы.
    А еще очевидна возможность скопировать целую функцию или ее часть от начала
    и вызывать копию как оригинал.

[+] Низкоуровневый хук теперь не сбивает содержимое регистров флагов, соответственно его
    теперь можно ставить на любой код в функции.

[!] Jmp патч, созданный посредством PatcherInstance::CreateJmpPatch и PatcherInstance::WriteJmp
    теперь закрывает целое количество опкодов, т.е. размер патча теперь >= 5 (был строго = 5),
    разница заполнятеся NOP'ами.

[+][!] Расширена функциональность Patcher::WriteComplexData, PatcherInstance::WriteCodePatch и PatcherInstance::CreateCodePatch
    - добавлена возможность ставить метки (до 10) и осуществлять переход к ним
      с помощью всех длинных и коротких относительных переходов (E8, E9, 0F 80 - 0F 8F, EB, 70 - 7F)
      (формат символы #0: , #1: , ... , #9: и #0 , #1 , ... , #9)
    - добавлен формат символ ~b - берет из аргументов абсолютный адрес и
      пишет относительное смещение до него размером в 1 байт для опкодов EB, 70 - 7F
    - добавлен формат символ ~d - берет из аргументов абсолютный адрес и
      пишет относительное смещение до него размером в 4 байта для опкодов E8, E9, 0F 80 - 0F 8F
    - добавлен формат символ %o (offset) - помещает по адресу из аргумента смещение позиции в Complex коде,
      относительно начала Complex кода.
    - добавлен формат символ %n (nop) - пишет nop опкоды, количеством указанным в аргументе
    - формат символ %m теперь копирует посредством MemCopyCodeEx а не MemCopyCode,
      то есть размер скопированного кода может оказаться больше копируемого
      из-за трансформации коротких прыжков в длинные.
    - формат символы %a и %h будут оставлены для обратной совместимости, но упоминания о них будут убраны из SDK;
      вместо этих символов рекомендуется использовать %o и %%
(This post was last modified: 04.04.2012 22:49 by baratorch.)
04.04.2012 14:17
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