Thema: Delphi RaiseException abfangen

Einzelnen Beitrag anzeigen

brechi

Registriert seit: 30. Jan 2004
823 Beiträge
 
#14

Re: RaiseException abfangen

  Alt 12. Aug 2005, 15:24
hab 2k mit Delphi7

mit sysutils gehts, ohne nicht

ne integerdivision fängt der aber ohne probleme auch ohne eingebundene Sysutils ab
folgenden code hab ich im moment:

Delphi-Quellcode:
program Project2;

uses
  windows;

procedure crash_ollydbg;
asm
  pushad
  push offset @@handler
  xor eax, eax
  push fs:[eax]
  mov fs:[eax], esp
  mov ebx, esp
  push eax
  push $73257325
  push esp
  push $5
  push esp
  push $2
  push eax
  push $40010006
  call RaiseException
@@handler:
  mov eax, [esp+$C]
  mov esp, [eax+$A4]
  xor eax, eax
  pop fs:[eax]
  pop eax
  popad
end;

begin
  crash_ollydbg;
  MessageBox(0,'you will never see me with ollydbg attached',nil,0);
end.
dafür nutze ich EBX aus um ESP zu speichern weil das innerhalb von RaiseException bis zur Exception nicht mehr geändert wird un später im Exception Record bzw im Exception Conext auf das alte ESP zeigt damit ich die vorher gepusheten resiger wieder ordentlich füllen kann

dabei ist es mir wichtig das ich RaiseException aufrufen kann und nicht OutputDebugStringA (was das selbe in dem fall wäre)
nur weiß ich nicht pb das überall funtkioniert, da ich nicht garantieren kann das EBX nicht unter 95/98/ME/2k etc. geändert wird

deshalb würd ich am liebsten try except nehmen, aber viewlleicht kenn einer noch eine andere assembler möglichkeit
  Mit Zitat antworten Zitat