2010-09-20 3 views
1

J'ai un débutant mais une question vraiment importante pour moi: j'ai une application Mac Os X qui utilise l'api carbone, mais c'est toujours une application C++. J'ai besoin de déboguer quelles fonctions sont appelées au moment de l'exécution, puis de créer un correctif C++ pour remplacer l'une de ces fonctions.Injecter du code C dans l'application * nix: remplacer une fonction

Le vrai but: J'ai besoin de consigner tout le texte imprimé dans une fenêtre de discussion que l'application a dans une vue carbone non accessible. Je pensais au début que c'était une application de cacao, mais ce n'est pas le cas, donc fscript et imlib ne sont pas bons pour injecter du code.

Est-ce possible? Des indices? Merci beaucoup.

cheers :)

Répondre

0

Vous pouvez regarder dans truss pour comprendre ce que les appels système sont en cours mais je ne suis pas sûr pour les appels d'utilisateurs. La variable d'environnement LD_PRELOAD peut vous permettre d'injecter des méthodes dans d'autres applications, mais les méthodes C++ ont tendance à avoir différentes dépendances concernant la méthode de gestion des noms et d'appel, il serait donc difficile de brancher la vôtre.

Pouvez-vous simplement demander au responsable de l'application d'ajouter des accroches réelles pour répondre à vos besoins?

+0

Merci ;-) J'ai étudié et utilisé la commande suivante: – flaab

+0

$ strings J'ai été en mesure de trouver les chaînes en format fsprint C++. Je vais déclarer le mien et les injecter en utilisant LD_PRELOAD: Je vais enregistrer toutes les chaînes en cours de traitement correspondant à une expression régulière et cela devrait faire l'affaire. Je vais vous laisser savoir comment ça s'est passé. Merci;) – flaab

+0

Je veux dire que je vais redéclairer fsprintf et ainsi de suite;) – flaab

Questions connexes