Einzelnen Beitrag anzeigen

Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#4

AW: Hook führt zu System Exception

  Alt 26. Mai 2011, 00:09
Oh je... Ich habe jetzt mal etliches ausprobiert und bin auf des Rätsels Lösung gestoßen. Ich habe ein const bei dem Parameter für MakeProcInstance eingeführt gehabt und genau hier liegt das Problem. Ich hab hier mal die auskommentierte Version:
Delphi-Quellcode:
class function TApGeneral.MakeProcInstance({const} M: TMethod): Pointer;
begin
  // allocate memory
  GetMem(Result, 15);
  asm
    // MOV ECX,
    MOV BYTE PTR [EAX], $B9
    MOV ECX, M.Data
    MOV DWORD PTR [EAX+$1], ECX
    // POP EDX
    MOV BYTE PTR [EAX+$5], $5A
    // PUSH ECX
    MOV BYTE PTR [EAX+$6], $51
    // PUSH EDX
    MOV BYTE PTR [EAX+$7], $52
    // MOV ECX,
    MOV BYTE PTR [EAX+$8], $B9
    MOV ECX, M.Code
    MOV DWORD PTR [EAX+$9], ECX
    // JMP ECX
    MOV BYTE PTR [EAX+$D], $FF
    MOV BYTE PTR [EAX+$E], $E1
  end;
end;
Nur verstehe ich noch nicht so recht, warum das das Problem war, denn die Daten in M sind doch die gleichen...
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat