Einzelnen Beitrag anzeigen

totti14

Registriert seit: 26. Mai 2005
Ort: Bremen
90 Beiträge
 
Delphi 10.3 Rio
 
#1

Assembler Rücksprungadresse ändern

  Alt 2. Mai 2016, 22:22
Hallo,
ich versuche gerade ein uraltes D2 Prog unter D2007 neu zu compilieren.
Allerdings klemmt es an folgenden ASM Code und von ASM habe ich Null Ahnung:

Delphi-Quellcode:

procedure SaveErrRet;
// sets RetAddr to address after next call.
begin
  asm
    POP EAX
    MOV Sav_ESP, ESP
    PUSH EAX
    ADD EAX, 5
    MOV RetAddr, EAX
    MOV Sav_EDI, EDI
    MOV Sav_ESI, ESI
    MOV Sav_EBP, EBP
    MOV Sav_EBX, EBX
  end;
  SavHeapPtr:= HeapPtr;
end;

procedure ShowError;
begin
  HeapPtr:= SavHeapPtr;
  SaveError;
  Asm
    MOV EBX, Sav_EBX
    MOV EBP, Sav_EBP
    MOV ESI, Sav_ESI
    MOV EDI, Sav_EDI
    MOV EAX, RetAddr
    PUSH EAX // sollte jetzt wieder ins Main springen nach RetAddr
  end;
end;

procedure TestError;
begin
  ShowError;
end;

// -------- Main --------
begin
 // .......
 SaveErrRet;
 // 1.)
 // tu was ganz tief
 // ......
 TestError;
 // ......
end.
Das gibt heute eine Access violation
Wie macht man das heute ?

Danke Totti

Geändert von totti14 ( 2. Mai 2016 um 23:19 Uhr)
  Mit Zitat antworten Zitat