Bonjour,
pour un projet je dois effectuer un chiffrement sur un fichier binaire. Je chiffre donc mon fichier et j'injecter mon code de déchiffrement, celui-ci effectue bien le déchiffrement (un simple xor).
Cependant, lors de l’exécution l'interpreteur (./helloworld), me renvoie une erreur :
Ce qui arrive évidemment car les instructions chiffrées ne représente plus des instructions valides.
Code : Sélectionner tout - Visualiser dans une fenêtre à part illegal instruction
Je me suis mis en tête de contourner cette restriction. Pour cela j'insère une interruption (exit), que je modifie ensuite dynamiquement en une interruption inutile.
Malheureusement je n'arrive pas à tromper l’interpréteur, car celui-ci détecte ma modification.
J'ai remarqué un point intéressant :
- Le processeur charge des blocs d'instruction en mémoire (en cache), donc je dois effectuer la modification avant le chargement du bloc.
Je voulais savoir si l'interpréteur linux faisait de même (j'en suis convaincu), et surtout si il le fait utilise-t-il le processeur ? Ou s'agit-il d'un logiciel de check interne, donc qui peut avoir une configuration différente ou que je peux tenter de tromper.
Je voulais savoir si vous aviez de la documentation sur le sujet.
J'espère avoir été clair sur ce sujet relativement complexe, et je suis disponible pour tout renseignement supplémentaire.
merci d'avance de votre aide
p.s. Je travaille sur :
OS : Linux armadeus 2.6.29.6
Support matériel : APF27








Répondre avec citation

Partager