Current time: 25.11.2024, 10:03 Hello There, Guest! (LoginRegister)
Language: english | russian  

Post Reply 
Threaded Mode | Linear Mode
Программирование ВОГ
Author Message
MOP Offline
Moderators

Posts: 1468
Post: #117

Ладно, вброшу сюда свой low-level бред для начинающих.

Простейшая stdcall-ная функция установки хука на асме имеет вид:
Code:
mov eax, [esp + 0x0C]
lea eax, [eax + 0xE8]
mov ecx, [esp + 8]
mov edx, [esp + 4]
mov [edx], al
lea eax, [edx + 5]
sub ecx, eax
mov [edx + 1], ecx
ret 0xC
3 параметра: адрес для помещения хука, адрес dll-процедуры, тип хука (0 - call, 1 - jump).

Некоторые люди ещё юзают VirtualProtect до и после установки хука, но в Воге это не нужно.
Ещё бывает, что остаток изменённого кода затирают nop-ами, но мне лично это ни разу не понадобилось: call-ом обычно замещается тоже вызов функции, так что длина опкода остаётся той же, а jump позволяет всё равно прыгать после возврата на корректный адрес. Вообще, куда и как ставить хук - отдельная история, но сам стараюсь ставить так, чтобы он менял только 5 байт.

Ещё более минималистская форма (без процедуры) массовой установки хуков - из Drew.dll:
Code:
...
    mov esi, offset Hook_Table
LoopHooks:
    mov al, [esi+8]
    mov ecx, [esi+4]
    mov edx, [esi]
    mov [edx], al
    lea eax, [edx+5]
    sub ecx, eax
    mov [edx+1], ecx
    add esi, 9
    cmp esi, End_Hook_Table
    jl LoopHooks
    ...
; ¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
TJump equ 0E9h
TCall equ 0E8h

Hook MACRO ExeAdress, ProcDrew, TypeHook
    dd ExeAdress
    dd ProcDrew
    db TypeHook
ENDM

Hook_Table:
; 1. ДИАЛОГ СТАРТОВЫХ ХАРАКТЕРИСТИК ГЕРОЯ
    Hook 569DECh, StartHeroDialog, TCall
    Hook 5826ACh, StartHeroDialog, TCall
    Hook 5828C6h, StartHeroDialog, TCall
; 2. ОПЦИЯ ЗАПРЕТА ОТОБРАЖЕНИЯ ЭКРАНА ЗАГРУЗКИ КАРТЫ
    Hook 4ED9E0h, change_LoadScreen, TJump
    Hook 4EF83Ch, change_LoadScreen1, TJump
; 3. ВСТАВКА ТЕКСТА ИЗ БУФЕРА ОБМЕНА
    Hook 5BB500h, MainKeyboard, TJump
; 4. ИМЕНА ИГРОКОВ ДЛЯ ХОТ-СИТА
    Hook 51231Fh, MultiPlayerButtons, TJump
    Hook 512221h, MultiPlayerload_file_10_mop, TJump
    Hook 512276h, MultiPlayerStrings_realize, TJump
    Hook 512696h, MultiPlayerDialogresult, TJump
    Hook 50E229h, MultiPlayerInterdiction, TJump
; 5. УВЕЛИЧЕНИЕ КОЛИЧЕСТВА ЗАКЛИНАНИЙ В ИГРЕ
    Hook 59CD5Bh, SpellsExpand1, TJump
    Hook 4D8F77h, SpellsExpand2, TJump
    Hook 4D8B6Ah, SpellsExpand3, TJump
    Hook 4D95A8h, SpellsExpand4, TJump
End_Hook_Table:


Circle of destruction, hammer comes crushing
Powerhouse of energy
Whipping up a fury, dominating flurry
We create the battery
20.02.2012 07:54
Find all posts by this user Quote this message in a reply
« Next Oldest | Next Newest »
Post Reply 


Messages In This Thread
Программирование ВОГ - Дьякон - 25.02.2010, 00:15
RE: Обсуждение - обо всём - etoprostoya - 25.02.2010, 01:12
RE: Обсуждение - обо всём - Shihad - 25.02.2010, 09:20
RE: Обсуждение - обо всём - baratorch - 25.02.2010, 16:11
RE: Обсуждение - обо всём - Berserker - 25.02.2010, 16:30
RE: Обсуждение - обо всём - etoprostoya - 25.02.2010, 16:36
RE: Обсуждение - обо всём - baratorch - 25.02.2010, 16:38
Программирование ВОГ - baratorch - 25.02.2010, 16:52
RE: Программирование ВОГ - etoprostoya - 25.02.2010, 17:42
RE: Программирование ВОГ - baratorch - 25.02.2010, 20:05
RE: Программирование ВОГ - GrayFace - 26.02.2010, 05:57
RE: Программирование ВОГ - baratorch - 26.02.2010, 17:55
RE: Программирование ВОГ - SAG - 26.02.2010, 18:02
RE: Программирование ВОГ - Berserker - 26.02.2010, 19:10
RE: Программирование ВОГ - etoprostoya - 26.02.2010, 19:14
RE: Программирование ВОГ - asm - 27.02.2010, 00:12
RE: Программирование ВОГ - Berserker - 26.02.2010, 19:46
RE: Программирование ВОГ - baratorch - 26.02.2010, 20:24
RE: Программирование ВОГ - feanor - 26.02.2010, 20:26
RE: Программирование ВОГ - Berserker - 26.02.2010, 20:28
RE: Программирование ВОГ - ZURG - 26.02.2010, 20:30
RE: Программирование ВОГ - feanor - 27.02.2010, 15:36
RE: Программирование ВОГ - baratorch - 27.02.2010, 20:43
RE: Программирование ВОГ - Berserker - 27.02.2010, 21:04
RE: Программирование ВОГ - baratorch - 27.02.2010, 22:10
RE: Программирование ВОГ - etoprostoya - 27.02.2010, 22:21
RE: Программирование ВОГ - Berserker - 27.02.2010, 22:28
RE: Программирование ВОГ - asm - 27.02.2010, 22:43
RE: Программирование ВОГ - Berserker - 27.02.2010, 23:39
RE: Программирование ВОГ - etoprostoya - 27.02.2010, 23:41
RE: Программирование ВОГ - baratorch - 28.02.2010, 00:36
RE: Программирование ВОГ - etoprostoya - 28.02.2010, 00:45
RE: Программирование ВОГ - baratorch - 28.02.2010, 00:58
RE: Программирование ВОГ - GrayFace - 28.02.2010, 09:38
RE: Программирование ВОГ - baratorch - 28.02.2010, 12:46
RE: Программирование ВОГ - GrayFace - 03.03.2010, 21:22
RE: Программирование ВОГ - feanor - 28.02.2010, 19:41
RE: Программирование ВОГ - Berserker - 28.02.2010, 19:46
RE: Программирование ВОГ - Дьякон - 01.03.2010, 20:51
RE: Программирование ВОГ - feanor - 01.03.2010, 22:34
RE: Программирование ВОГ - baratorch - 03.03.2010, 23:59
RE: Программирование ВОГ - GrayFace - 04.03.2010, 23:43
RE: Программирование ВОГ - etoprostoya - 04.03.2010, 00:08
RE: Программирование ВОГ - Berserker - 04.03.2010, 00:13
RE: Программирование ВОГ - etoprostoya - 04.03.2010, 00:22
RE: Программирование ВОГ - feanor - 04.03.2010, 00:37
RE: Программирование ВОГ - etoprostoya - 04.03.2010, 01:02
RE: Программирование ВОГ - baratorch - 05.03.2010, 21:48
RE: Программирование ВОГ - etoprostoya - 05.03.2010, 21:51
RE: Программирование ВОГ - Berserker - 05.03.2010, 21:58
RE: Программирование ВОГ - baratorch - 05.03.2010, 22:52
RE: Программирование ВОГ - Berserker - 06.03.2010, 00:22
RE: Программирование ВОГ - baratorch - 06.03.2010, 01:07
RE: Программирование ВОГ - baratorch - 06.03.2010, 01:26
RE: Программирование ВОГ - SAG - 09.03.2010, 14:26
RE: Программирование ВОГ - gamecreator - 09.03.2010, 17:52
RE: Программирование ВОГ - feanor - 09.03.2010, 20:21
RE: Программирование ВОГ - baratorch - 09.03.2010, 23:43
RE: Программирование ВОГ - etoprostoya - 10.03.2010, 00:51
RE: Программирование ВОГ - SAG - 10.03.2010, 14:46
RE: Программирование ВОГ - baratorch - 10.03.2010, 21:04
RE: Программирование ВОГ - SAG - 11.03.2010, 18:29
RE: Программирование ВОГ - baratorch - 10.03.2010, 02:13
RE: Программирование ВОГ - etoprostoya - 10.03.2010, 02:20
RE: Программирование ВОГ - etoprostoya - 10.03.2010, 15:07
RE: Программирование ВОГ - GrayFace - 10.03.2010, 19:21
RE: Программирование ВОГ - baratorch - 11.03.2010, 23:41
RE: Программирование ВОГ - baratorch - 13.03.2010, 23:16
RE: Программирование ВОГ - Efrit - 13.03.2010, 23:26
RE: Программирование ВОГ - etoprostoya - 13.03.2010, 23:49
RE: Программирование ВОГ - Дьякон - 23.03.2010, 22:39
RE: Программирование ВОГ - GrayFace - 25.03.2010, 14:17
RE: Программирование ВОГ - Дьякон - 25.03.2010, 22:21
RE: Программирование ВОГ - etoprostoya - 26.04.2010, 00:31
RE: Программирование ВОГ - Berserker - 26.04.2010, 00:33
RE: Программирование ВОГ - baratorch - 26.07.2010, 02:13
RE: Программирование ВОГ - Дьякон - 26.07.2010, 09:09
RE: Программирование ВОГ - baratorch - 26.07.2010, 13:12
RE: Программирование ВОГ - SAG - 26.07.2010, 13:35
RE: Программирование ВОГ - baratorch - 27.07.2010, 00:59
RE: Программирование ВОГ - SAG - 28.07.2010, 11:31
RE: Программирование ВОГ - etoprostoya - 26.07.2010, 14:14
RE: Программирование ВОГ - Berserker - 26.07.2010, 16:59
RE: Программирование ВОГ - Berserker - 27.07.2010, 01:06
RE: Программирование ВОГ - GrayFace - 27.07.2010, 13:19
RE: Программирование ВОГ - Druin - 28.07.2010, 12:06
RE: Программирование ВОГ - MOP - 28.07.2010, 13:33
RE: Программирование ВОГ - baratorch - 29.07.2010, 09:34
RE: Программирование ВОГ - SAG - 29.07.2010, 18:58
RE: Программирование ВОГ - etoprostoya - 29.07.2010, 09:54
RE: Программирование ВОГ - vizit0r - 29.07.2010, 12:36
RE: Программирование ВОГ - baratorch - 30.08.2010, 18:58
RE: Программирование ВОГ - gamecreator - 30.08.2010, 19:28
RE: Программирование ВОГ - GrayFace - 31.08.2010, 22:25
RE: Программирование ВОГ - baratorch - 03.09.2010, 00:52
RE: Программирование ВОГ - etoprostoya - 18.02.2012, 14:29
RE: Программирование ВОГ - totkotoriy - 18.02.2012, 16:27
RE: Программирование ВОГ - kostya_76 - 18.02.2012, 19:14
RE: Программирование ВОГ - totkotoriy - 19.02.2012, 13:23
RE: Программирование ВОГ - Sav - 18.02.2012, 20:52
RE: Программирование ВОГ - MOP - 20.02.2012 07:54
RE: Программирование ВОГ - Berserker - 20.02.2012, 18:56
RE: Программирование ВОГ - MOP - 20.02.2012, 19:08
RE: Программирование ВОГ - Berserker - 20.02.2012, 20:02
RE: Программирование ВОГ - MOP - 21.02.2012, 12:12
RE: Обсуждение - обо всём - Corwin - 25.02.2010, 16:53
[split] Обсуждение - обо всём - Berserker - 25.02.2010, 17:13
RE: Обсуждение - обо всём - Дьякон - 25.02.2010, 20:42
RE: Обсуждение - обо всём - Berserker - 25.02.2010, 22:17
RE: Обсуждение - обо всём - packa - 25.02.2010, 22:22
RE: Обсуждение - обо всём - Berserker - 25.02.2010, 23:16
RE: Обсуждение - обо всём - Berserker - 25.02.2010, 23:34
RE: Обсуждение - обо всём - Дьякон - 25.02.2010, 23:47
RE: Обсуждение - обо всём - Berserker - 25.02.2010, 23:58
RE: Обсуждение - обо всём - Дьякон - 26.02.2010, 00:13
RE: Обсуждение - обо всём - Berserker - 26.02.2010, 00:17
RE: Обсуждение - обо всём - asm - 26.02.2010, 00:20
RE: Обсуждение - обо всём - Дьякон - 26.02.2010, 00:29
RE: Обсуждение - обо всём - Berserker - 26.02.2010, 00:38
RE: Обсуждение - обо всём - Berserker - 26.02.2010, 00:49

Forum Jump:

Powered by MyBB Copyright © 2002-2024 MyBB Group