Comment connecter tous les appels du système d’exploitation de mon propre processus?

Je dois pirater tous les appels du système d’exploitation de mon propre processus. Je ne peux pas réécrire le code car ce n’est en partie pas mon code (plug-ins). Je dois être en mesure de décider dans le cadre de la mise en œuvre d’un appel système spécifique, si je souhaite appeler l’implémentation d’origine ou non.

Les systèmes d’exploitation seront à la première Windows XP et les versions supérieures. Plus tard, os x 10.5 et plus suivront. À partir de Windows avec les versions 32 bits, plus tard pour tous les systèmes d’exploitation, les versions 64 bits également.

J’ai trouvé beaucoup de documentation et d’outils sur le raccordement d’autres processus, mais j’espère que mon travail est beaucoup plus simple et que j’espère un code source.

Merci d’avance, Bernd.

Il existe de nombreuses bibliothèques d’accroche qui vous permettent de le faire, par exemple Detours ou madCodeHook sous Windows. Nul doute qu’il existe des librairies similaires sur OSX, je ne les connais pas!

Il est très facile d’accrocher une routine et de la remplacer par votre propre implémentation. Il est moins facile de conserver la possibilité d’exécuter la routine d’origine dans certaines circonstances, et d’utiliser une bibliothèque de twigment vous permettra d’éviter les problèmes.

Sous Mac OS X, vous pouvez remplacer les fonctions avec la macro DYLD_INTERPOSE (et DYLD_INSERT_LIBRARIES , si nécessaire). Cette réponse a un exemple: le patch Ansi C utilisant dlsym comstack OK sous linux mais échoue sur Mac Os X

Pour Windows, il existe l’alternative open source à Microsoft Detours appelée EasyHook:

  • CodePlex: EasyHook
  • Projet de code: EasyHook – La réinvention du hook API Windows