CA2437627C - Procede et systeme pour gerer des executables a bibliotheques partagees - Google Patents

Procede et systeme pour gerer des executables a bibliotheques partagees Download PDF

Info

Publication number
CA2437627C
CA2437627C CA2437627A CA2437627A CA2437627C CA 2437627 C CA2437627 C CA 2437627C CA 2437627 A CA2437627 A CA 2437627A CA 2437627 A CA2437627 A CA 2437627A CA 2437627 C CA2437627 C CA 2437627C
Authority
CA
Canada
Prior art keywords
file
functions
symbol
function
executable
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CA2437627A
Other languages
English (en)
Other versions
CA2437627A1 (fr
Inventor
Marc Philippe Vertes
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of CA2437627A1 publication Critical patent/CA2437627A1/fr
Application granted granted Critical
Publication of CA2437627C publication Critical patent/CA2437627C/fr
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • G06F9/4484Executing subprograms
    • G06F9/4486Formation of subprogram jump address

Abstract

L'invention concerne un procédé et un système pour modifier de manière non intrusive un fichier exécutable E comprenant des références (F1, F2, et F3) à des fonctions disposées dans au moins une bibliothèque partagée B au sein d'un ordinateur. Selon l'invention on crée au moins deux nouveaux fichiers, un ficher META comprenant quelques références non résolues (F2, F3) dans le fichier exécutable E et un fichier de services comprenant de nouvelles fonctions ou services (X2, X3) à insérer dans le fichier exécutable E. La phase d'édition de liens affecte en priorité au fichier META puis à la bibliothèque partagée B les références non résolues. Lorsque ces références sont répertorier dans le fichier META, alors on établit, pour cette référence, un lien entre de la bibliothèque partagée B. Dans le fichier META on a ensuite la possibilité d'associer à cette référence une ou plusieurs fonctions stockées partagée B. L'invention permet l'extension incrémentale et non intrusive des systèmes d'exploitation. Il n'es plus nécessaire d'effectuer des modifications au coeur du noyau pour modifier le comportement du système.

Description

"Procede et systems pour gerer des executables a bibliotheques partagees."
La presents invention concerns un procede et un systems pour gerer des fichiers executables utilisant des bibliotheques partagees.
Dune fa~on generals, pour eviter des fichiers executables de grande capacite, on rassemble Bans un fichier distinct 1'ensemble de fonctions communes a ces fichiers executables. Ce fichier distinct ou bibliotheque partagee est habituellement integre daps des systemes d'exploitation. Ainsi, les codes objets definissant une fonction ne sont plus integres dans des fichiers executables, seule la reference a cette function est indiquee dans les fichiers executables.
Un fichier executable utilisant au moms une bibliotheque partagee, ou fichier executable dynamique, fait donc appel a des functions d'usage commun contenues dans la bibliotheque partagee. Si 1'on desire modifier meme une partie mineure du fichier executable, on est oblige d'effectuer la modification sur 1'ensemble du code source du fichier executable, puffs de realiser a nouveau une phase de compilation de ce code source . Cependant, 1e . code source d'un fichier executable nest pas toujours disponible.
Le but de 1'invention est de permettre une modification dynamique du comportement d'un fichier executable dynamique de maniere non intrusive, c'est a dire sans modification physique du fichier d'executable et d'eventuelles bibliotheques partagees.
La presents invention a egalement pour but d'etendre, de maniere dynamique et non intrusive, les capacites des fichiers executables existants durant leur execution.
- 2-On atteint les objectifs ci-avant aver un procede pour modifier de maniere non intrusive un fichier executable comprenant des references a des functions disposees dans au moms une bibliotheque partagee au sein d'un ordinateur. Selon 1'invention, pour une reference dans 1e fichier executable faisant appel a une function donnee de la bibliotheque partagee, on accede a un fichier de reference servant de relais entre 1e fichier executable et 1'endroit ou. est effectivement disposes ladite function donnee, ce fichier de reference comportant 1'adresse de cette function donnee, on remplace cette adresse par une nouvelle adresse pointant vers une autre function de sorts qu'au cours de 1'execution du fichier executable, 1'appel a ladite function donnee, permet 1'execution de cette autre function .
L'invention est tells qu'on agit sur un fichier de reference comportant des adresses des functions de fa~on a modifier ces adresses et fournir ainsi au fichier executable, un nouveau code objet sans changer 1e fichier executable.
Selon un premier mode de miss en oeuvre de 1'invention:
- au lancement du fichier executable, on pre-charge un fichier de reference comprenant une pluralite de references a des functions nouvelles disposees dans un fichier de services, - lors de la phase d'edition dynamique de liens pendant 1e lancement du fichier executable, pour chaque reference non resolue comprise dans 1e fichier executable, on affects en priorite ladite reference au fichier de reference dans la mesure ou. cette reference est definie dans ce fichier de reference, sinon on affects cette reference a la bibliotheque partagee, - au cours de 1'execution du fichier executable, 1'appel a une function references dans 1e fichier de reference, permet 1'execution dune function nouvelle
- 3-disposes dans 1e fichier de service au lieu de 1'execution de la fonction reellement appelse, 1e chemin d'acces a cette fonction nouvelle stant definie dans 1e fichier de reference.
Une reference est consideree non rssolue lorsque 1e code objet de la fonction a laquelle ells renvoie nest pas inclus dans 1e fichier executable.
Un fichier de services est un fichier renfermant de nouveaux services ou fonctions que 1'on souhaite adjoindre au fichier executable. Le fichier de references comprend une partie des references presenter dans 1e fichier executable. Dune fa~on conventionnelle, ces references ont pour but 1'execution des fonctions de la bibliotheque partagee. Mais avec 1e procede selon 1'invention, avant de faire 1e lien entre chaque reference du fichier executable et une fonction correspondante dans la bibliotheque partagse, on verifie. d'abord si cette fonction est rsferencee dans 1e fichier de references. Dans 1'affirmatif, on dit que 1e fichier de references a intercepts cette fonction correspondante et on realise alors un lien entre cette reference et 1e fichier des references. Dans 1e car contraire, c'est-a-dire la fonction nest pas references dans 1e fichier de references, on effectue de fa~on conventionnelle un lien dynamique entre 1e fichier executable et la fonction correspondante dans la bibliotheque partagse.
Lorsqu'une fonction est interceptee, 1e fichier de reference comprend une reference a cette fonction, et on associe une ou plusieurs fonctions nouvelles a cette reference. En d'autres termes, a chaque reference du fichier de references est associe un chemin d'acces vers une nouvelle fonction. Cette nouvelle fonction peut titre une fonction (ou service) presents dans 1e fichier de services. Par ailleurs, 1e chemin d'acces defini dans 1e fichier de reference peut en outre permettre 1'execution
- 4-dune fonction de la bibliotheque partagee. Le fait d'intercepter une fonction permet donc de substituer cette fonction originale soft par de nouvelles fonctions, soft par une combinaison de fonctions comprenant ou non la fonction originale stockee dans la bibliotheque partagee.
Dans un mode particulier de realisation, lors du premier appal a une fonction referencee dans 1e fichier de reference, on effectue une nouvelle phase d'edition dynamique de liens entre les references comprises dans 1e fichier de reference et des fonctions en relation avec ces references. On peut effectuer cette nouvelle phase d'edition dynamique de liens en utilisant des routines de manipulation de bibliotheques partagees.
Avantageusement, on peut donc gerer 1e fichier de reference et 1e fichier de services en tant qua des bibliotheques partagees.
Salon un mode de mise en oeuvre de 1'invention, au tours de 1'execution du fichier executable, on controle et modifie les chemins d'acces dans 1e fichier de reference au moyen d'un canal de commande.
On peut egalement utiliser 1e canal de commande pour controler les fonctions comprises dans 1e fichier de services.
Les fichiers executables sont desormais mutables, sans qu'i1 soft necessaire de les regenerer. Des services peuvent titre inseres, supprimes, ou modifies en tours d'execution.
Le fichier de reference se sert des fonctions d'edition dynamique de liens du systeme d'exploitation de 1'ordinateur pour modifier les fichiers executables et activer ou desactiver des services.
Salon 1'etat de la technique, 1e processus d'edition dynamique de liens est normalement activee uniquement au chargement du fishier executable, avant son lancement.
Avec 1e procede salon 1'invention, ce processus est
- 5-accessible pendant touts la duree d'execution du fichier executable.
On dit que 1e fichier de references est reentrant car une meme fonction peut etre alteree par plusieurs services, 1'ordre d'execution de ces services etant defini par ce fichier de references.
Selon un autre aspect de 1'invention, i1 est propose un systems pour modifier de maniere non intrusive un fichier executable comprenant des references a des fonctions disposees dans au moms une bibliotheque partagee au sein d'un ordinateur. Avantageusement, ce systems comprend .
- un fichier de services comportant une pluralite de fonctions destinees a etre inserees de fa~on dynamique dans 1e fichier executable lors dune phase d'execution de ce fichier executable, - un fishier de reference comportant une pluralite de references a des fonctions localisees dans ledit fishier de services et Bans la bibliotheque partagee, et - des moyens de commands pour controler et commander 1e fishier de services et 1e fishier de reference.
Selon un second mode de miss en ~uvre de 1'invention, on desire gerer une bibliotheque partagee dotes dune pseudo-fonction locale capable de simuler la presence dune fonction dans la bibliotheque partagee, cette pseudo-fonction pointant en fait une adresse disposes dans une table de relocation. Certaines stapes du procede sont mises en ~uvre par un module de gestion. Pour se faire, 1e fishier de reference consists en la table de relocation, et apres 1e chargement du module de gestion .
on determine, au sein du fishier executable, la lists des objets dynamiques ainsi que leurs adresses respectives de chargement; pour chaque objet dynamique, la lists des fonctions externes importees ainsi que la lists des fonctions exportees; et _ 6_ - on modifie, en cours d'execution du fichier executable, dans la table de relocation, 1'adresse dune fonction donnee de sorts que 1e prochain appel a cette fonction donnee permet 1'execution dune fonction correspondant a la nouvelle adresse.
Ce second mode permet d' agir sur une table d' adresses preexistantes. En effet les bibliotheques partagees comportant des fonctions exportees sont dotees de table de relocation et dans f art anterieur, ces tables sont statiques. En modifiant la table de relocation, on modifie 1e graphs d'appel.
Avantageusement, on peut memoriser 1'ensemble des modifications rubies par la table de relocation de fagon a rendre 1e processus des modifications reversible.
De preference, 1e module de gestion etant dote d'un langage de commands, on pent modifier de fagon dynamique la table de relocation.
Pour charger 1e module de gestion dans 1e fichier executable, on peut pre-charger 1e module de gestion sous forms de bibliotheque partagee au demarrage du fichier executable. Autrement, on peut aussi interrompre 1e fichier executable en cours d'execution au moyen d'un module de supervision, ce~module de supervision etant externs au fichier executable et apte a commander 1e module de gestion; inserer un point d'arret daps 1e fichier executable a 1'instruction courante; et charger 1e module de gestion Bans 1e fichier executable. Ze module de gestion est traits comme une bibliotheque partagee.
Selon une caracteristique avantageuse de 1'invention, on transmet au module de gestion des commander de modification de la table de relocation au moyen du module de supervision qui est dote de moyen d'appel du module de gestion.
Avec ce second mode, les nouvelles fonctions peuvent ne pas titre predeterminees. Elles peuvent se trouver predefinies dans un fichier de service ou etre cree alors qua 1e fichier executable est en cours d'execution.
Salon 1'invention, on pent retirer 1e module de gestion du fichier executable en cours d'execution a 1'aide de moyens de liberation contenus dans 1e module de supervision.
Salon un troisieme mode de miss en oeuvre dans lequel le systems d'exploitation de 1'ordinateur charge a la voles en cours d'execution une nouvelle bibliotheque partagee comportant des fonctions exportees, les adresses de ces fonctions exportees etant stockees dans des variables locales arbitraires du fichier executable, on interpose le fichier de reference entre les variables locales et les fonctions exportees susceptibles d'etre appelees par le fichier executable, le fichier de reference comportant par defaut les adresses de ces fonctions exportees. Le fichier de reference est tel qu'il pent etre modifie au moyen d'un module de gestion. Ce fichier de reference est donc place a un endroit accessible par le module de gestion contrairement aux variables locales.
D'autres avantages et caracteristiques de 1'invention apparaitront a 1'examen de la description detaillee d'un mode de miss en oeuvre nullement limitatif, et des dessins annexes sur lesquels .
- la figure 1 est un schema simplifie illustrant 1'organisation physique d'un fichier executable utilisant une bibliotheque partagee salon f art anteri'eur;
- la figure 2 est un schema simplifie illustrant 1'organisation physique d'un fichier executable utilisant plusieurs bibliotheques partagees salon la presents invention;
- la figure 3 est un organigramme comprenant differentes stapes d'un procede salon 1'invention;

_ g_ - la figure 4 est un schema simplifie illustrant 1'organisation physique d'un fichier executable utilisant une bibliotheque partagee dotes d'un moyen de re-direction vers des fonctions exportees;
- la figure 5 reprend les elements de la figure 4 dans 1e cas ou. i1 y a eu remplacement dune function exportee selon 1e second mode de miss en oeuvre de la presents invention; et - la figure 6 est un schema simplifie illustrant un troisieme mode de miss en oeuvre de 1'invention dans 1e cas dune bibliotheque partagee charges en cours d'execution par 1e systems d'exploitation de 1'ordinateur.
Sur la figure 1 est representee une organisation physique d'un fichier executable dynamique E utilisant une bibliotheque partagee B selon f art anterieur. Le fichier executable E est un programme soul forms de code objet daps lequel sont specifies des symboles Fl, F2 et F3. Ces symboles sont des references a des functions F1, F2 et F3 d'usage commun dont les codes objets coFl, coF2 et coF3 sont stockes dans la bibliotheque partagee B. Cette bibliotheque est un fichier separe non concatene au programme E. Avant 1'execution des premieres instructions codees dans 1e programme E, une phase de resolution des references aux symboles est effectuee a chaque chargement en memoirs du programme E par un programme d' amor~age (ou bootloader en langue anglaise). Cette phase de resolution des references fait partie dune phase d'edition de liens qui a pour but de tier chaque reference Fi du programme E
a son code objet stocks dans la bibliotheque B.
La figure 2 illustre un systems selon 1'invention daps lequel on retrouve les elements de la figure 1. La figure 3 decrit differentes stapes d'un procede selon 1'invention.
On va maintenant decrire un mode de miss en oeuvre de 1'invention en reference aux figures 2 et 3.

On volt sur la figure 2, deux nouveaux fichiers par rapport a la figure' 1. On distingue un fichier de references META qui est une bibliotheque partagee specifique comportant les references F2 et F3. On distingue egalement 1e fichier de services S qui est une bibliotheque partagee specifique comportant des codes objets coXl, coX2 et coX3 des nouvelles fonctions ou services Xl, X2 et X3. On desire modifier 1'execution du programme E en integrant quelques nouvelles fonctions Xi sans pour cela modifier physiquement 1e fichier executable E et la bibliotheque B.
Dans 1e fichier META, a chaque reference est associee une equation telle qua .
F2 = S . X2, B . F2 et F3 = S . X3 L'equation associee a F2 signifie qua 1'on remplace 1'execution de la fonction F2 par 1'execution de la function X2 stockee daps 1e fichier S puffs par 1'execution de la function F2 stockee dans la bibliotheque partagee B.
L'equation associee a F3 signifie qua 1'on remplace 1'execution de la function F3 par 1'execution de la function X3 stockee dans 1e fishier S.
Lors du lancement du programme E a 1'etape 1, 1e systeme d'exploitation dans lequel opera 1'invention est instruit de pre-charger 1e fishier META a 1'etape 2 avant execution des premieres instructions codees dans E. Par example, ceci est obtenu sur 1e systeme LINUX en positionnant la variable d'environnement "LD_PRELOAD".
Ensuite a 1'etape 3 debute la phase d'edition dynamique de liens qui est effectuee par 1e programme d'amor~age (bootloader). On considere a 1'etape 4 tou.tes les functions dont 1e code objet nest pas inclus dans 1e fichier E, c'est-a-dire que 1e fichier E ne comprend que leurs references ou symboles, on dit alors que les symboles sont non resolus. Sur la figure 2, ces references sont Fl, F2 et F3. Elles sont affectees en priorite a META
de tells sorts qu'a 1'etape 5 on verifie d'abord si elles sont repertoriees dans 1e fichier META. Seules les references F2 et F3 sont repertoriees dans 1e fichier META. Dans ce cas, on edits a 1' etape 7 un lien ente les references F1 et F~ du fichier executable E et les references F1 et F2 du fichier de references META. Par contre si une fonction nest pas references dans 1e fichier META tells que la fonction F1, on edits a 1'etape
6 un lien entre la reference F1 du fichier executable E et 1e code obj et coFl de la fonction Fl, ce code obj et coF1 etant stocks dans la bibliotheque partagee B.
Une fois la phase d'edition de liens terminee a 1'etape 8, on debuts reellement 1'execution du fichier E a 1'etape 9. Loss de 1'execution de E, 1'initialisation du fichier META est declenchee par 1e premier appel a T une des fonctions interceptees, en 1'occurrence la fonction F2 a 1'etape 10. Cette initialisation consists a completes la phase d'edition de liens des stapes comprises entre 3 et 8. Pour ce faire, on utilise les memes routines de manipulation des bibliotheques partagees que celles utilisees par 1e programme d'amorqage. Pour les deux fonctions F1 et F2, sont resolues .
~1a reference de chaque fonction Bans META vers 1e service a inserer; Sur la figure 2, F~ dans 1e fichier META dolt pointer sur X2 dans 1e fichier de services S; F3 daps 1e fichier META dolt pointer sur X3 dans 1e fichier de services S; En 1'absence d'un service a inserer, la fonction est redirigee vers sa bibliotheque d'origine B;
~eventuellement, dans 1e fichier de services S, la ou les references vers des fonctions pre requises;. Sur la figure 2 par exemple, la fonction x2 dans S rappelle la function F2 Bans B; Cette action est tres importante car elle permet d'etablir un chainage des services, et aussi de pouvoir developper des services incrementaux.
Cette phase d'initialisation est realisee aux etapes 11 et 14. Suite a cette initialisation de META, 1e graphe d'appel entre les functions est desormais etabli, de sorte qu'on execute ensuite la function X2 a 1'etape 12 puffs la function F2 a 1'etape 13.
La capacite de pouvoir redefinir 1e graphe d'appel des functions est mise en oeuvre au lancement du programme E, de maniere a inserer des services sous forma de bibliotheque partagee, mais on peut aussi activer ces services tout au long de 1'execution de ce programme E, notamment au moyen d' un canal de commande dans 1e fichier META. L'ouverture de ce canal de commande peut etre declenchee suivant de multiples strategies . a 1'interception de functions dans META, sur signal, etc.
A titre d'exemple, on peut utiliser 1e fichier META
pour specifier un appal systeme de la fa~on suivante .
"
extern int open(const char *patlmame, int flags, mode t mode) if (traceon && tracefile) fprintf(tracefile, "traceos: %d: open(\"%s\", oo, %o)\n", INDEX, pid, pathname, flags, mode);
Return((*meta open)(pathname, flags, mode));}
Dans 1'exemple ci-dessus, la ligne en Bras designe 1'appel a la function "open" sous-jacente. La variable "meta open" est un pointeur sur la function originale, ou une routine implementant un autre service de maniere identique. Cette function, par exempla X2 definie daps S, peut etre chargee par META pour une pluralite de fichiers executables, sans qu'il y ait besoin de les modifier.
Le fichier META est independant des programmes modifies aussi bien qua des services realises. Chaque service, sous forme de bibliotheque partagee, fournit au fishier META les donnees suivantes .
- la liste des fonctions que 1e fishier META dolt intercepter, avec la correspondance de la fonction interne a appeler, par exemple cur la figure 2, 1'appel de la fonction F2 dans E doit declencher la fonction X2 dans S;
- la liste des fonctions externes (dons pouvant etre interceptees) pre-requires pour la mire en oeuvre du service, c'est cette information qui permet au fishier META de realiser 1e chainage entre services et fonctions;
- la definition de ' chacune des fonctions de substitution a activer lors de 1'interception, ainsi que des fonctions nouvelles variees; et - la liste des fonctions nouvelles exportees par 1e service, dont peuvent se servir les services sour-jacents;
par exemple, META exporte des fonctions d'ouverture du canal de commander de maniere a se que 1es autres services puissent les utiliser sans avoir a les re-implementer.
La presente invention apporte une methode alternative pour aborder simplement des problemes generaux, tels que la tolerance aux pannes des applications, la migration des applications, 1e controle externe des entrees-sorties.
Elle permet de rendre les fichiers executables mutables de fa~on non intrusive. Ainsi, dans un fishier executable dans un systeme selon 1'invention, les fonctions mutables sont celles qui sont definies dans des bibliotheques partagees chargeables dynamiquement, que se soient des appels systemes, ou d'autres types de fonctions (mathematiques, ... ).
Le procede selon 1'invention se Bert des fonctions d'edition de liens dynamique du systeme d'exploitation afin de manipuler de fa~on non intrusive des fichiers executables et activer/desactiver des services, eux-memes sour forme de bibliotheques partagees. Les fonctions d'edition dynamique de liens sont avantageusement accessibles durant toute 1'execution du fichier executable. Enfin, 1e fichier de reference META est reentrant puisque une meme fonction peut titre alteree par plusieurs services. On peut par ailleurs envisager la conception de plusieurs fichiers de references de type META et plusieurs fichiers de services S.
Sur la figure 4, on retrouve 1e fichier executable E.
La bibliotheque B2 est telle qu'elle ne renferme pas 1e code objet de la fonction F3, elle renferme plutot une application ou pseudo-fonction dite "Stub" permettant de simuler la presence de cette fonction F3 vis a vis du fichier executable E. En realite, 1'application "Stub"
pointe sur une adresse TR(2) localisee dans une table de relocation TR, qui pointe a son tour sur une adresse M(2) . 15 dans un emplacement M la ou se trouve effectivement 1e code objet coF3 de la fonction F3. Ce qui est remarquable c'est que la table de relocation TR est accessible par tout module externe au fichier executable. L'invention utilise un module de gestion MG qui est un agent ou une application dotee dune intelligence pour modifier les adresses contenues dans la table de relocation. Sur la figure 5, via 1e module de gestion MG, on remplace dans la table de relocation 1'adresse M(2) par 1'adresse M(3).
Entre temps, on a dispose dans M(3) un code objet coX4 dune nouvelle fonction X4. Ainsi lorsque 1e fichier executable appel la fonction F3, c'est 1e code objet coX4 de 1a fonction X4 qui sera traite. Le module de gestion comprend egalement des moyens pour memoriser ce remplacement de sorte qu'il est possible de revenir sur 1'etat initiale, c'est a dire M(2) dans la table de relocation TR.
Le module de gestion est accompagne d'un module de supervision qui permet de recevoir des commander venant d'un utilisateur, les interpreter en langage comprehensible par 1e module de gestion, puffs activer ces commandes .
En d'autres termes, daps 1e second mode de miss en oeuvre de 1'invention, on considers un fichier executable ou un programme Bans lequel est invoquee une fonction dont la definition est stockee dans une bibliotheque partagee externs, Pour touts fonction externs a un objet dynamique (programme ou bibliotheque partagee) dont 1'utilisation par 1'objet dynamique est explicate, i1 exists une pseudo-fonction locale a 1'objet (appelee "stub"), generee lors de la phase preliminaire d'edition de liens par 1e programme d'edition de liens (LD sous LINUX). Pour la bibliotheque partagee, 1e but du "stub" est de masquer 1e fait que 1e code obj et de la fonction est en realite non locale a la bibliotheque. Qui plus est, ce code objet peut etre situe a une adresse inconnue au moment de la generation de la bibliotheque partagee. A 1'execution du programme, cette pseudo-fonction invoque 1e veritable code objet en etablissant un chemin d'acces jusqu'a ce code objet. Ce chemin d'acces est etabli au moment de 1'edition de liens dynamiques et consists a stocker 1'adresse du code objet dans une zone appelee table de relocation, situee dans 1e segment DATA de 1'objet dynamique.
Avantageusement, ce segment DATA est modifiable.
Le second mode de miss en ~uvre du procede consists a pouvoir modifier 1'adresse dune fonction externs dans la table de relocation de la bibliotheque partagee, lors dune phase ulterieure a 1'edition de liens dynamique, et ce de maniere arbitraire au cours de 1'execution du programme. Pour ce faire, on substitue la definition dune fonction par une autre. Une propriete interessante de ce procede est qu'il permet de modifier la reference a une fonction meme lorsque 1e programme a ete interrompu durant 1'execution. En effet, les fonctions elles-memes n'etant pas modifiees, mais uniquement leur adresse d'indirection, 1'occurrence precedents de la fonction termine son deroulement normalement, la modification n'etant prise en compte qu'a la prochaine invocation de la fonction.
Le module de gestion salon 1'invention comports notamment les fonctions suivantes .
- une fonction d'introspection capable de determiner une fois charges dans un programme:
~ la lists des objets dynamiques de ce programme (executable partial et bibliotheques partagees) ainsi qua leurs adresses respectives de chargement, ~ pour chaque objet dynamique, la lists des fonctions externes importees, c'est-a-dire pour lesquelles i1 exists une entree dans la table de relocation susceptible d'etre modifies ulterieurement, ~ pour chaque objet dynamique, la lists des fonctions exportees, c'est-a-dire dont 1'adresse de definition apparait eventuellement dans une table de relocation d'un autre objet dynamique du mama programme, - une fonction de modification de la table de relocation, capable dune part d'effectuer 1a modification d'adresse dune fonction externs a la bibliotheque, et d'autre part de memoriser les mises a jour successives afro de pouvoir eventuellement les annular, et obtenir une reversibilite complete du systems, -une fonction de chargement du module, consistant en 1'insertion d'un canal de commands permettant son chargement depuis un module de supervision, puffs son activation, salon les methodes suivantes .
~ soft au demarrage du programme, par un pre-chargement du module de gestion lui-mama sous forma de bibliotheque partagee, ~ soft au cours de 1'execution du programme, par interruption du programme, insertion d'un point d'arret daps 1e programme a 1'instruction courante via 1e systeme d'exploitation, et la mice en oeuvre du chargement du module de gestion.
- une fonction de liberation du module, permettant au module de se retirer du programme en cours d'execution.
D'autre part, i1 existe, pour les programmes dynamiques, une autre possibilite d'invoquer des fonctions externes . 1e programme peut acceder au cours de son execution a des fonctions fournies par 1e systeme d'exploitation permettant de charger a la volee (en cours d'execution) une nouvelle bibliotheque partagee (fonction "DLOPEN" sons LINUX), puffs d'acceder aux fonctions exportees par cette bibliotheque en obtenant leurs adresses (fonction "DLSYM" sous LINUX) et en stockant celles-ci directement daps des variables locales arbitraires et non plus dans une table de relocation comma decrit precedemment. A priori, ces variables locales sont inconnues et inaccessibles depuis un module externe.
Sur la figure 6, on volt une bibliotheque partagee B3 qui est une bibliotheque chargee par 1e systeme d'exploitation. Salon f art anterieur, les adresses des fonctions exportees sont normalement disposees dans des variables locales VL et ces variables locales ne sont pas disponibles.
Salon 1'invention, on considere une application (fonction "DLSYM" sons LINUX) du systeme d'exploitation, cette application permet normalement d'acceder a 1'adresse M(2) du code objet de la fonction exportee F3 de la bibliotheque partagee B3. On modifie alors cette application de maniere a ce qu'elle retourne non plus 1'adresse M(2) du code objet de la de la fonction F3, mais 1'adresse dune table d'interposition I generee par 1e module de gestion MG. Cette table d'interposition (a 1'adresse correspondant a F3) pointe par defaut sur 1e code objet coF3 de la fonction exportee F3 dans M.
L'avantage est que la table d'interposition est modifiable via 1e module de gestion MG.
Le procede selon 1'invention s'applique a une application cible, pour laquelle on desire pouvoir modifier dynamiquement 1e fonctionnement. Dans ces second et troisieme mode, ce procede fait notamment intervenir les elements suivants pour sa mire en ~uvre .
-un module de gestion sour forme de bibliotheque partagee, dote d'un langage de commande permettant 1e changement dynamique du graphe d'appel des fonctions. Ces commander peuvent par exemple etre . "remplacer fonctionl definie dans bibliotheque 1 par fonction2 definie dans bibliotheque2"; "annuler 1e remplacement" ; "lister les fonctions remplacees" ; "lister les nouvelles fonctions" ;
... Suite a une commande de remplacement par exemple, tout appel de fonctionl se traduira par 1'invocation de fonction2 en lieu et place de fonctionl. Ces modifications sont persistantes jusqu'a la fin du programme. Elles ne sont pas definitives de sorte qu'un programme se relance dans sa configuration par defaut.
-un module de supervision sous forme de programme externe permettant de .
~ charger 1e module de gestion dans un programme en cours d'execution par insertion d'un point d'arret et invocation de la fonction de chargement du module de gestion sour forme dune bibliotheque partagee . "dlopen("mg.so")" sour LINUX; la technique mise en oeuvre est similaire a celle utilisee par les debogueurs;
~ dialoguer aver 1e programme (fichier executable) via un canal de commande afro de manipuler 1e graphe d'appel de ce programme; les commander peuvent etre activees par une interface graphique, ou par ligne de commands, ou bien par des fonctions embarquees Bans tous autres programmes;
-en dehors de la capacite de modification du graphs d'appel, 1e programme externs nest pas obligatoire au bon fonctionnement de 1'application.
A titre d'exemples non limitatifs, la presents invention peut etre miss en oeuvre daps les applications suivantes .
Instrumentation dynamique et de maniere reversible des systemes d'informations deployes et operationnels, par insertion de sondes de mesure de performance, lors de campagne de tests. Ces operations sont en Principe impossible avec les techniques actuelles d'instrumentations, qui sont irreversibles, et dont 1e Gout d'operation nest pas compatible avec 1e deploiement operationnel.
Maintenance evolutive et correctrice sur des programmes en cours de fonctionnement, en rempla~ant dynamiquement une fonction par une nouvelle version corrigeant des bugs, ou introduisant de nouvelles fonctionnalites. Les techniques actuelles necessitent aujourd'hui 1'arret complet, 1e remplacement et 1e redemarrage des programmes.
Implementation des fonctionnalites systemes de maniere non intrusive a la fois pour les applications et pour 1e systems d'exploitation, par exemple en substituant les fonctions systemes capable de rediriger les traitements sur une autre machine en cas de panne. Les techniques actuelles ne permettent pas ces evolutions sans toucher au cceur du systems, ou sans reecrire des applications specifiques.
Integration des applications heterogenes de maniere non intrusive, en developpant des connecteurs et des filtres de conversion. et en etant capable de les inserer de maniere opportune sans reecrire 1'application, par substitution sur les interfaces existantes.
Bien sur, 1'invention nest pas limitee aux exemples qui viennent d'etre decrits et de nombreux amenagements peuvent titre apportes a ces exemples sans sortir du cadre de 1'invention.

Claims (12)

REVENDICATIONS
1. Procédé pour modifier de manière non intrusive l'exécution d'un fichier exécutable comprenant des symboles référençant des fonctions disposées dans des bibliothèques partagées au sein d'un ordinateur, caractérisé en ce que le procédé comprend :
- au lancement du fichier exécutable, pré-charger (2) un fichier relais associant des chemins d'accès respectifs vers au moins une fonction de substitution à
certains desdits symboles du fichier exécutable, - exécuter une étape d'édition dynamique de liens (3) comprenant, pour chaque symbole contenu dans le fichier exécutable, l'affectation dudit symbole au fichier relais (5,7) si le symbole est défini dans le fichier relais, et sinon, si le symbole référence une fonction disposée dans une bibliothèque partagée, l'affectation du symbole à
ladite bibliothèque partagée (5,6), et - au cours de l'exécution du fichier exécutable (9), en réponse à l'appel d'une fonction donnée référencée par un desdits symboles dans le fichier exécutable, exécuter les fonctions de substitution associées au symbole dans le fichier relais (12, 13), si le symbole a été affecté au fichier relais, et sinon ladite fonction donnée si le symbole a été affecté à la bibliothèque partagée.
2. Procédé selon la revendication 1, caractérisé en ce que le fichier relais (META) est manipulé en tant que bibliothèque partagée.
3. Procédé selon l'une des revendications 1 et 2, caractérisé en ce que l'étape d'affectation dudit symbole au fichier relais comprend l'édition d'un lien entre le fichier exécutable et le fichier relais pour ledit symbole (7).
4. Procédé selon la revendication1, 2 ou 3, caractérisé en ce que chaque chemin d'accès associé à un symbole dans le fichier relais définit une combinaison ordonnée de fonctions de substitution, et en ce que l'étape d'exécution des fonctions de substitution (12, 13) est mise en oeuvre conformément à la combinaison ordonnée définie par le chemin d'accès associé.
5. Procédé selon la revendication 4, caractérisé en ce que certaines des fonctions de substitution de ladite combinaison sont localisées dans des bibliothèques partagées (13).
6. Procédé selon la revendication 1, 2, 3, 4 ou 5, caractérisé en ce que certaines au moins des fonctions de substitution sont disposées dans des fichiers de service.
7. Procédé selon la revendication 6, caractérisé en ce que les fichiers de service sont manipulés en tant que bibliothèques partagées.
8. Procédé selon la revendication 1, 2, 3, 4, 5, 6 ou 7, caractérisé en ce qu'il comprend, au cours de l'exécution du fichier exécutable, l'initialisation préalable du fichier relais (11, 14) au premier appel d'une fonction, référence par un symbole qui a été
affecté au fichier relais.
9. Procédé selon la revendication 8, caractérisé en ce que ladite étape d'initialisation comprend une phase d'édition dynamique de liens (11, 14) comprenant l'édition de liens entre chaque symbole qui a été affecté au fichier relais et lesdites fonctions de substitution associées au symbole dans le fichier relais.
10. Procédé selon la revendication 9, caractérisé en ce que la phase d'édition dynamique de liens (11, 14) met en oeuvre des routines de manipulation de bibliothèques partagées.
11. Procédé selon la revendication 1, 2, 3, 4, 5, 6, 7, 8, 9 ou 10, caractérisé en ce que les chemins d'accès définis dans le fichier relais sont contrôlables et modifiables au moyen d'un canal de commande.
12. Procédé selon la revendication 11, caractérisé en ce que le canal de commande est en outre utilisé pour contrôler les fonctions de substitution associées aux symboles dans le fichier relais.
CA2437627A 2001-02-01 2002-02-01 Procede et systeme pour gerer des executables a bibliotheques partagees Expired - Fee Related CA2437627C (fr)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
FR01/01378 2001-02-01
FR0101378A FR2820221B1 (fr) 2001-02-01 2001-02-01 Procede et systeme pour gerer des executables a bibliotheques partagees
PCT/FR2002/000398 WO2002061579A2 (fr) 2001-02-01 2002-02-01 Procede et systeme pour gerer des executables a bibliotheques partagees

Publications (2)

Publication Number Publication Date
CA2437627A1 CA2437627A1 (fr) 2002-08-08
CA2437627C true CA2437627C (fr) 2010-07-20

Family

ID=8859512

Family Applications (1)

Application Number Title Priority Date Filing Date
CA2437627A Expired - Fee Related CA2437627C (fr) 2001-02-01 2002-02-01 Procede et systeme pour gerer des executables a bibliotheques partagees

Country Status (8)

Country Link
US (1) US7506316B2 (fr)
EP (2) EP1386230B1 (fr)
JP (1) JP4006337B2 (fr)
AT (1) ATE391953T1 (fr)
CA (1) CA2437627C (fr)
DE (1) DE60226019T2 (fr)
FR (1) FR2820221B1 (fr)
WO (1) WO2002061579A2 (fr)

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2820221B1 (fr) 2001-02-01 2004-08-20 Cimai Technology Procede et systeme pour gerer des executables a bibliotheques partagees
US20030223091A1 (en) * 2002-05-28 2003-12-04 Garg Manmohan M. Method and implementation of capturing print data from heterogeneous networked clients
US20070146781A1 (en) * 2002-05-28 2007-06-28 Garg Man M Method and implementation of capturing print data from heterogeneous networked clients
JP4115759B2 (ja) * 2002-07-01 2008-07-09 株式会社東芝 耐タンパプロセッサにおける共有ライブラリの使用方法およびそのプログラム
US7844734B2 (en) * 2002-11-18 2010-11-30 Innopath Software, Inc. Dynamic addressing (DA) using a centralized DA manager
GB2407655B (en) * 2003-10-28 2009-08-05 Symbian Ltd Mapping of dynamic link libraries in a computing device
US7739689B1 (en) * 2004-02-27 2010-06-15 Symantec Operating Corporation Internal monitoring of applications in a distributed management framework
US20060026584A1 (en) * 2004-07-27 2006-02-02 Muratori Richard D Explicit linking of dynamic link libraries
FR2881247B1 (fr) * 2005-01-21 2007-03-23 Meiosys Soc Par Actions Simpli Procede de gestion semantique, de journalisation ou de rejeu d'operations non deterministes au sein du deroulement d'un processus applicatif
FR2881242B1 (fr) * 2005-01-21 2007-03-23 Meiosys Soc Par Actions Simpli Procede non intrusif de journalisation d'evements internes au sein d'un processus applicatif, et systeme mettant en oeuvre ce procede
FR2881239B1 (fr) * 2005-01-24 2007-03-23 Meiosys Soc Par Actions Simpli Procede de gestion d'acces a des ressources partagees dans un environnement multi-processeurs
FR2883083B1 (fr) * 2005-03-14 2007-05-04 Meiosys Soc Par Actions Simpli Procede d'execution d'une application dans un conteneur virtuel formant une session d'environnement virtualise
US7721278B2 (en) * 2005-05-27 2010-05-18 Microsoft Corporation Modular server architecture for multi-environment HTTP request processing
US20070234342A1 (en) * 2006-01-25 2007-10-04 Flynn John T Jr System and method for relocating running applications to topologically remotely located computing systems
US7613749B2 (en) 2006-04-12 2009-11-03 International Business Machines Corporation System and method for application fault tolerance and recovery using topologically remotely located computing devices
US7930710B2 (en) * 2006-05-16 2011-04-19 Panasonic Corporation Program start-up unit, program start-up method, recording medium with start-up processing program recorded, and integrated circuit
US7594138B2 (en) 2007-01-31 2009-09-22 International Business Machines Corporation System and method of error recovery for backup applications
US8495573B2 (en) * 2007-10-04 2013-07-23 International Business Machines Corporation Checkpoint and restartable applications and system services
US8156510B2 (en) 2007-10-04 2012-04-10 International Business Machines Corporation Process retext for dynamically loaded modules
US8006254B2 (en) * 2007-10-04 2011-08-23 International Business Machines Corporation Bequeathing privilege to a dynamically loaded module
US8448159B2 (en) * 2007-11-02 2013-05-21 Tti Inventions C Llc Method and system for policy enabled programming
EP2245821A2 (fr) * 2008-02-18 2010-11-03 Martin Boesgaard Authentification d'une page web à langage javascript incorporé
CA2684225A1 (fr) * 2009-10-30 2011-04-30 Ibm Canada Limited - Ibm Canada Limitee Validation delta selective d'artefact partage
US8607199B2 (en) * 2009-12-16 2013-12-10 International Business Machines Corporation Techniques for debugging code during runtime
US8495601B2 (en) 2010-06-09 2013-07-23 Lear Corporation Shared memory architecture
US8539472B2 (en) 2010-06-09 2013-09-17 Lear Corporation Method and system of updating shared memory
KR101059658B1 (ko) * 2010-07-01 2011-08-25 엔에이치엔(주) 개발자 인터페이스 제공 방법 및 시스템
JP5803157B2 (ja) * 2011-03-07 2015-11-04 日本電気株式会社 情報処理装置、プログラム不正検知方法、およびプログラム不正検知プログラム
KR101991687B1 (ko) 2012-11-23 2019-06-24 삼성전자 주식회사 동적 라이브러리 프로파일링 방법, 이를 기록한 컴퓨터로 읽을 수 있는 기록 매체 및 동적 라이브러리 프로파일링 시스템
US9189622B2 (en) * 2013-04-30 2015-11-17 Vmware, Inc. Static redirection for objective C
US9720660B2 (en) * 2013-05-21 2017-08-01 Red Hat, Inc. Binary interface instrumentation
CN105528365A (zh) * 2014-09-30 2016-04-27 国际商业机器公司 用于管理可执行文件的方法和装置
US10514994B2 (en) 2015-06-09 2019-12-24 Satori Worldwide, Llc Distributed scalable workload testing
CN107292132B (zh) * 2016-03-30 2023-03-14 北京娜迦信息科技发展有限公司 用于安卓系统的共享对象文件的加载方法与装置
US11063950B2 (en) * 2016-06-09 2021-07-13 Microsoft Technology Licensing, Llc Secure remote desktop session
US10310872B2 (en) * 2017-02-21 2019-06-04 Red Hat, Inc. Transparent fast application launcher
WO2018187160A1 (fr) * 2017-04-07 2018-10-11 Satori Worldwide, Llc Test de charge de travail extensible distribué
CN109710671B (zh) * 2018-12-14 2023-05-30 国云科技股份有限公司 实现数据库操作数据引流的方法及其数据库防火墙系统

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01307825A (ja) 1988-06-06 1989-12-12 Nec Corp インターフェイスモジュールを介する動的リンク実行方式
US5175828A (en) * 1989-02-13 1992-12-29 Hewlett-Packard Company Method and apparatus for dynamically linking subprogram to main program using tabled procedure name comparison
JPH04243424A (ja) 1991-01-17 1992-08-31 Nec Corp 動的リンク方式
JPH06110678A (ja) * 1992-09-30 1994-04-22 Toshiba Corp プログラム実行方式及び実行プログラムの動的変更方法
CA2102883A1 (fr) * 1993-02-26 1994-08-27 James W. Arendt Systeme et methode de chargement differe de bibliotheques mises en commun
US5546586A (en) * 1993-05-06 1996-08-13 Apple Computer, Inc. Method and apparatus for vectorizing the contents of a read only memory device without modifying underlying source code
US5481706A (en) * 1993-11-01 1996-01-02 International Business Machines Corporation System and method for creating thread-safe shared libraries
US6219825B1 (en) * 1995-01-10 2001-04-17 Hewlett-Packard Company Profile based optimization of shared libraries
JPH11110194A (ja) * 1997-10-06 1999-04-23 Toshiba Corp 外部ライブラリ関数との結合方法ならびに同方法がプログラムされ記録される記録媒体
US6154878A (en) * 1998-07-21 2000-11-28 Hewlett-Packard Company System and method for on-line replacement of software
US6351843B1 (en) * 1998-08-31 2002-02-26 International Business Machines Corporation Dynamically inserting a function into an application executable at runtime
US6314566B1 (en) * 1998-09-29 2001-11-06 Apple Computer, Inc. Method and apparatus for “Just-in-Time” dynamic loading and unloading of computer software libraries
FR2820221B1 (fr) 2001-02-01 2004-08-20 Cimai Technology Procede et systeme pour gerer des executables a bibliotheques partagees
US20020174161A1 (en) * 2001-05-18 2002-11-21 Scheetz Michael A. Java startup wrapper

Also Published As

Publication number Publication date
DE60226019T2 (de) 2009-06-25
WO2002061579A3 (fr) 2003-11-27
CA2437627A1 (fr) 2002-08-08
JP2004530184A (ja) 2004-09-30
US7506316B2 (en) 2009-03-17
EP1386230B1 (fr) 2008-04-09
WO2002061579A2 (fr) 2002-08-08
DE60226019D1 (de) 2008-05-21
US20040111720A1 (en) 2004-06-10
FR2820221A1 (fr) 2002-08-02
JP4006337B2 (ja) 2007-11-14
EP1386230A2 (fr) 2004-02-04
ATE391953T1 (de) 2008-04-15
FR2820221B1 (fr) 2004-08-20
EP1914630A1 (fr) 2008-04-23

Similar Documents

Publication Publication Date Title
CA2437627C (fr) Procede et systeme pour gerer des executables a bibliotheques partagees
US11138309B2 (en) System and method for controlling inter-application association through contextual policy control
CN105490860B (zh) 部署应用程序运行环境的方法、装置及系统
US11818224B2 (en) On demand resources
US9507581B2 (en) Systems and methods of device firmware delivery for pre-boot updates
US7542988B1 (en) File type associative application layered system
US7433900B2 (en) Custom filesystem having file mappings to files of a real filesystem
US9405521B2 (en) Mapping of virtualized setup-free applications for a computing system
US8645939B2 (en) Use of aliasing in an installer
US8601581B2 (en) Malware automated removal system and method
US7461096B1 (en) Weighted prioritizing layered computing system
US8533705B2 (en) Registry emulation
US8843903B1 (en) Process tracking application layered system
US8010961B1 (en) Data layer prioritization in an application layered system
US6779179B1 (en) Registry emulation
US7877413B1 (en) Path variablizing layered system
US8914785B2 (en) Providing virtual appliance system firmware images
US5537596A (en) Method and apparatus for overriding resource maps in a computer system
JPH10260927A (ja) 周辺機器のインタフェース方法及びインタフェース装置
US20080301662A1 (en) Method for versioning classes loaded in an osgi-enabled j2ee environment
CN103530180A (zh) 应用程序的存储空间切换方法及装置
FR2864650A1 (fr) Procede de mise a jour d'applications pour carte a puce
WO2008005536A2 (fr) Système et procédé de suppression automatisée de logiciels malveillants
EP2304559B1 (fr) Procédé de basculement entre deux versions d'une même application au sein d'un dispositif de traitement de l'information et ledit dispositif
KR100222620B1 (ko) 다중 프로그램의 다운로드 방법

Legal Events

Date Code Title Description
EEER Examination request
MKLA Lapsed

Effective date: 20130201

MKLA Lapsed

Effective date: 20130201