
Une bibliothèque permettant l'inspection et la manipulation de la mémoire et du code d'un processus en cours d'exécution sur un système Linux.
raminspect est une crate qui permet l'inspection et la manipulation de la mémoire et du code d'un processus en cours d'exécution sur un système Linux. Elle fournit des fonctions pour rechercher et remplacer des termes de recherche dans la mémoire d'un processus, des fonctions pour allouer de la nouvelle mémoire appartenant au processus, ainsi qu'une interface permettant l'injection de shellcode arbitraire s'exécutant dans le contexte du processus. Tout cela nécessite les privilèges root, pour des raisons évidentes.
demo
Vous devriez pouvoir exécuter l'exemple firefox_search si Firefox est installé. Pour ce faire, commencez par ouvrir une instance de Firefox et tapez « Old search text » dans la barre de recherche. Si tout se passe bien, lorsque vous exécutez l'exemple en tant que root avec la commande sudo cargo run --example firefox_search --release, le texte devrait être remplacé par « New search text », bien que vous deviez probablement cliquer à nouveau sur la barre de recherche pour qu'il affiche le nouveau texte.
La fonctionnalité de recherche et remplacement est disponible avec ou sans le module noyau, mais si vous souhaitez injecter du shellcode ou allouer de nouveaux buffers, vous devez d'abord compiler et charger le module noyau prérequis. Pour ce faire, installez le paquet d'en-têtes du noyau de votre distribution, effectuez un git clone, puis exécutez les commandes suivantes dans le sous-dossier kern_module du dépôt (si la compilation échoue pour une raison quelconque, veuillez ouvrir une issue) :
make all
sudo insmod raminspect.ko
Notez également que la partie injection de shellcode est actuellement conçue pour fonctionner sur n'importe quelle architecture (même si le shellcode lui-même doit être spécifique à la plateforme), mais que la partie allocation mémoire arbitraire est actuellement limitée à x86-64. Les PRs visant à ajouter la prise en charge de l'allocation arbitraire sur davantage d'architectures CPU sont les bienvenues.
Ce projet n'est pas encore dans un état stable ; attendez-vous à des changements cassants et à des bugs. Si vous trouvez un bug dans la crate ou si l'un des exemples ne fonctionne pas sur votre machine, veuillez créer une issue dans le dépôt afin qu'il puisse être corrigé rapidement.