2010-10-04 4 views
0

Est-ce que quelqu'un sait où, relativement au pointeur de trame, est l'adresse de retour de la fonction? Y a-t-il une différence entre Windows et Unix?Pointeur de cadre + adresse de retour

merci :)

+0

Cela n'a pas beaucoup de sens pour moi. D'après mon expérience, le registre Frame Pointer est un décalage de quelque sorte par rapport au pointeur de pile alors que l'adresse de retour réside dans l'espace de code. Rare est le cas où le code et l'espace de pile se mélangent. Qu'est-ce que vous essayez d'accomplir ici? –

+1

@Michael Je pense qu'il veut dire, quel est le décalage sur la pile (par rapport au pointeur de trame) où l'adresse de retour est * stocké *? (Je suis d'accord avec vous sur le "qu'est-ce que vous essayez d'accomplir", cependant.) –

Répondre

2

Il dépend fortement de l'architecture, compilateur, etc.

Essayez dissasembling certains programmes de jouets et découvrir (voir objdump sous Linux)

1

L'adresse de retour est à RASE + 4 dans votre cadre de pile mais vous ne pourrez pas l'utiliser comme cela dans un tampon tampon puisque vous ne contrôlez pas encore le flux d'exécution.

Ce que vous devriez rechercher est la distance de l'adresse de retour du tampon. Cela est unique à chaque vulnérabilité et tout ce qui se trouve entre les deux doit être prédit ou vous risquez de provoquer le vidage du processus.

Questions connexes