safeseh

03/05/2013 - 20:14 von Jens Kallup | Report spam
Hallo Jungs,

erst Heute bemerke ich, das mein alter NewsServer den Betrieb
eingestellt hat und sicher daher nix mehr ankam.
Ok.
Ich habe eine Frage zu Structured Exception Handling (seh):
in C++ gibt es ja sowas wie

try
{
//code
} catch(...) { print error; }

ich arbeite unter windows mit den Yasm.exe und dort gibt es den Befehl:
"safeseh handler".

wie setze ich asm code ein, vielleicht auch noch verschachtelt, wie in
das Beispiel oben?

Gruß
Jens
 

Lesen sie die antworten

#1 Jan Seiffert
04/05/2013 - 17:43 | Warnen spam
Jens Kallup schrieb:
Hallo Jungs,

erst Heute bemerke ich, das mein alter NewsServer den Betrieb eingestellt hat und sicher daher nix mehr ankam.
Ok.
Ich habe eine Frage zu Structured Exception Handling (seh):
in C++ gibt es ja sowas wie

try
{
//code
} catch(...) { print error; }

ich arbeite unter windows mit den Yasm.exe und dort gibt es den Befehl:
"safeseh handler".

wie setze ich asm code ein, vielleicht auch noch verschachtelt, wie in das Beispiel oben?




Keine ahnung wie das in ASM aussieht, aber nicht einfach
http://msdn.microsoft.com/en-us/lib...85%29.aspx

In Pseudocode könnte das so aussehen:

// catch devision by 0
LONG CALLBACK my_VectoredHandler(PEXCEPTION_POINTERS ei)
{
if(ei->ExceptionCode != EXCEPTION_INT_DEVIDE_BY_ZERO)
return EXCEPTION_CONTINUE_SEARCH;

ei->ExceptionAddress = handle_ex;
return EXCEPTION_CONTINUE_EXECUTION;
}


PVOID ex_handler = AddVectoredExceptionHandler(0, my_VectoredHandler);
// code
goto out;
handle_ex:
print error; // Problem ist jetzt wie man die Exception-info hier hin bekommt...
out:
RemoveVectoredExceptionHandler(ex_handler);


Gruß
Jens



Gruss
Jan

Ähnliche fragen