J'essaye d'écrire un programme qui permet à un binaire d'être exécuté, en substituant un certain fichier à la demande d'un autre. C'est une bibliothèque avec des remplacements simples pour les fonctions d'appel système, qui est utilisée avec LD_PRELOAD. Le problème est qu'il s'ouvre à la lecture (le fichier de remplacement est lu à la place), mais écrit toujours revenir au fichier spécifié. Y a-t-il d'autres appels système "ouverts" que je devrais connaître?Problème de remplacement des appels système Linux à l'aide de LD_PRELOAD
Répondre
Nevermind - erreur stupide.
ne vérifiait pas les deux chemins absolus et relatifs ...
+1 pour le trouver seul – lothar
Je ne sais pas quelle est la cause de votre problème, mais l'utilisation de strace dans votre programme peut donner un aperçu. Cela devrait faire partie de toute distribution Linux saine.
en remplaçant un certain fichier sur demande avec un autre
On dirait que vous vérifiez que le fichier d'entrée (vérifiez-vous par nom de fichier?). Vous devez vérifier et remplacer le fichier de sortie aussi.
Si la sortie est destinée à l'une des sorties standard, vous devez les fermer et les rouvrir avec votre substitut de sortie avant de vous lancer dans l'exécutable.
Pour rechercher tous les appels système que votre fichier exécutable effectue, vous pouvez utiliser strace.
Pour rechercher tous les appels de bibliothèque que votre fichier exécutable effectue, vous pouvez utiliser ltrace.
S'il est ouvert pour l'écriture, il est très probable qu'il passe par la fonction creat
(je suppose que fopen
vous redirigerait là-bas). Vérifiez votre fcntl.h
pour une liste complète.
- 1. Appels système de .NET vers mono
- 2. Est-il possible de faire des appels système sur iOS?
- 3. structure de données laide à la recherche java
- 4. Profilage continu de la bibliothèque linux à l'échelle du système
- 5. LD_PRELOAD équivalent pour Windows pour précharger des bibliothèques partagées
- 6. problème de remplacement de chaîne JavaScript
- 7. Remplacement de la base de données d'éléments par des appels jquery ajax
- 8. Suivi des appels ODBC pour Informix Client pour Linux
- 9. Remplacement du code de remplacement Eclipse non mis à jour
- 10. DBD :: Oracle entraînant une corruption des appels système?
- 11. Problème avec la fonction de remplacement
- 12. Méthodes de désintégration qui contiennent des appels de système de fichiers
- 13. Programmer des appels de délégué
- 14. Machines virtuelles et gestion de la mémoire et des appels système
- 15. JQuery remplacement du problème d'image
- 16. Problèmes lors de l'injection dans printf à l'aide de la méthode LD_PRELOAD
- 17. appels de procédure à distance
- 18. problème C++ des fonctions mathématiques (sous Linux)
- 19. Menu de remplacement des fenêtres
- 20. Comment puis-je compiler ce code pour travailler avec LD_PRELOAD sur Linux?
- 21. Remplacement d'une colonne de données dans des fichiers texte avec la commande Linux
- 22. système de fichiers en-tête et linux modifié en dernier
- 23. Problème de fuseau horaire dans Java/Linux
- 24. invocation acteur multiple de blocage des appels
- 25. Connectez-vous à un serveur Linux à partir d'un système Windows à l'aide de fichiers batch
- 26. Obtention des appels système Python en tant que résultats de chaîne
- 27. Quelle est la meilleure pratique pour écrire des appels de registre/Appels de système de fichiers/filtre de création de processus pour WinXP, Vista?
- 28. système de fichiers Linux meilleures pratiques d'analyse comparative
- 29. Comment faire des appels API Win32 à partir de PHP?
- 30. OSGI - appels de méthodes statiques à travers des bundles
Avez-vous essayé stracing le binaire pour voir quel descripteur de fichier les écritures sont, et où que fd vient? –