Ещё обновил dll. Теперь ещё в x2 записывается номер атакованного стека, а в x3 (Upd: на самом деле не правильно записывается.) его тип. Правда, оказалось, адрес неудачный, вышло не совсем !$MF, и применять её для горыныча не получится. Буду искать дальше.
PROCEDURE HookCode(P: POINTER; NewAddr: POINTER; UseCall: BOOLEAN);
VAR
HookRec: THookRec;
BEGIN
IF UseCall THEN BEGIN HookRec.Opcode:=C_OPCODE_CALL;
END // .if
ELSE BEGIN HookRec.Opcode:=C_OPCODE_JUMP;
END; // .else
HookRec.Ofs:=INTEGER(NewAddr)-INTEGER(P)-C_UNIHOOK_SIZE;
WriteAtCode(P, @HookRec, 5);
END; // .procedure HookCode
PROCEDURE Hook_AfterDamage1; ASSEMBLER; {$FRAME-}
ASM
PUSHAD
PUSH EAX
SUB ECX, $4463CEC
MOV EDX, 0
MOV EAX, ECX
MOV BX, $548
DIV BX
MOV [$91DA38], AX
POP EAX
MOV ECX, EAX
SUB ECX, $4463CEC
MOV EDX, 0
MOV EAX, ECX
MOV BX, $548
DIV BX
MOV [$91DA3C], AX