Current time: 02.06.2024, 15:26 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: #48

Quote:Ужаснулся, глянув в код низкоуровневого перехватчика. Регистры не в стеке сохраняются и передаются, а в глобальной памяти. Это значит, что рекурсивный вызов перезатрёт их подчистую!

Code:
MOV [DWORD 4978BC8],EAX
   MOV [DWORD 4978BCC],ECX
   MOV [DWORD 4978BD0],EDX
   MOV [DWORD 4978BD4],EBX
   MOV [DWORD 4978BD8],ESP
   MOV [DWORD 4978BDC],EBP
   MOV [DWORD 4978BE0],ESI
   MOV [DWORD 4978BE4],EDI
   MOV EAX,74C6FC
   MOV [DWORD 4978BE8],EAX
   PUSH 4978BC8
я так понял речь о мосте LoHook хука.

во-первых, регистры сохраняются не в глобальной памяти а в памяти выделенной для конкретного объекта LoHook.
точно так же и память под мост выделена для каждого конкретного LoHook объекта и сам мост уникален для каждого экземпляра LoHook.
То есть получается что каждый мост каждого LoHook объекта работает со своей областью памяти для хранения значений регистров.

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

в-третьих, один патч (с собственным одним мостом и объектом HookContext) невозможно применить дважды ни к одному и тому же адресу ни к разным адресам. то есть рекурсивное выполнение кода моста невозможно.

На практике все прекрасно, что подтверждает правильность реализации.

т.е. HookContext передаваемый в высокоуровневую LoHook функцию на самом деле является частью LoHook, но доступен он только из высокоуровневой функции, ибо в другое время доступ к нему не имеет смысла.


Quote:Проверка в коде патчера на 1 не есть хорошо. Нужно сравнивать с нулём. Так работает тип bool: 0 = ложь, остальное - истина.
поправил в версии 2.1

Quote:Ещё не хватает возможности в параметрах записи высокоуровневого перехватчика пользовательский указатель, который будет сохранён в структуре перехватчика и по которому можно было бы определить, с какой целью ставился перехват и кто его клиент. Что=то вроде HiHool->UserData.
не совсем понял зачем это нужно. можно абстрактный пример?...
ни внутри хд, ни в нутри хоты, ни во взаимодействии до сих пор не понадобилось ничего подобного.


позже опубликую версию 2.1
(This post was last modified: 24.10.2013 21:33 by baratorch.)
24.10.2013 21:32
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