Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Gérer un handler exception quelque soit la valeur ESP

1 réponse
Avatar
Sivaller
Bonjour,
Je suis sur un projet qui est un Jitter Intel x86,
Pour jitter le code , les registres ne sont pas mémorisé mais directement
sur le processeur, c'est à dire les registres sont natifs même ESP.

Probléme : je voudrais que quand il y a une exception dans le code jitter
qu'un handler
exception soit appeler quelque soit la valeur ESP (dépend en fonction de
l'OS booter).

Comment faire ? car déjà quand je met ESP = 0 , le handler n'est pas appelé

Merci bcp ;

#include "stdafx.h"
#include <windows.h>


long dummy;


unsigned long _stdcall Except_Handler(
EXCEPTION_RECORD *ExceptionRecord ,
long EstablisherFrame ,
CONTEXT *ContextRecord ,
long DispatcherContext)
{

//si c'est bien une violation d'acces
if (ExceptionRecord->ExceptionCode == EXCEPTION_ACCESS_VIOLATION)
{
ContextRecord->Eax = (unsigned long)&dummy;
return ExceptionContinueExecution;
}

return ExceptionContinueSearch;

}

typedef struct
{
unsigned long ancvect;
unsigned long newvect;
}TV;


int main(int argc, char* argv[])
{

TV tv;
unsigned long i;
_asm
{
mov eax,fs:[0]
mov i,eax
}
tv.ancvect=i;
tv.newvect=(unsigned long)Except_Handler;
i=(unsigned long)&tv;
_asm
{
mov eax,i
mov fs:[0],eax
mov esp,0 //valeur null
}
/*_asm
{
push offset Except_Handler
push fs:[0]


mov fs:[0],esp
//mov esp,0


} */

char *p;
p=0;
*p=45;
//printf ("%d",*p);
printf("Hello World!\n");
return 0;
}

1 réponse

Avatar
Vincent Burel
"Sivaller" wrote in message
news:4586f027$0$25931$
Bonjour,
Je suis sur un projet qui est un Jitter Intel x86,
Pour jitter le code , les registres ne sont pas mémorisé mais directement
sur le processeur, c'est à dire les registres sont natifs même ESP.

Probléme : je voudrais que quand il y a une exception dans le code jitter
qu'un handler
exception soit appeler quelque soit la valeur ESP (dépend en fonction de
l'OS booter).

Comment faire ? car déjà quand je met ESP = 0 , le handler n'est pas


appelé

ben je ne pense pas que ESP soit protégé, donc je ne pense pas que le mettre
à zéro déclenche une exception d'autant que justement ESP sera modifié par
le processor au déclenchment d'une interruption ou d'une exception...
puisque le processeur, avant d'appeler le handler, empile au moins EFLAGS,
CS et EIP... (l'adresse du code qui à déclenché l'exception).

VB