logo Homepage
+  NewbieContest
|-+  Divers» Cracking» Executable linké statiquement
Username:
Password:
Pages: [1]
  Imprimer  
Auteur Fil de discussion: Executable linké statiquement  (Lu 4945 fois)
Antilles
Profil challenge

Classement : 2017/54254

Néophyte
*
Hors ligne Hors ligne
Messages: 11


Voir le profil
« le: 11 Mai 2016 à 18:03:26 »

Bonjour à tous,

Ca fais très très longtemps que je ne me suis pas connecté ici, ça à bien changé ! J'aime bien.

Je dois changer le comportement d'un exe  dont on me dit qu'il est linké statiquement.

Concrètement qu'est ce que cela change pour moi ?

D'après ce que je sais, il ne serait pas donc possible de modifier le comportement d'une méthode en écrasant une DLL. Je m'égare ?

Journalisée
dionosis

Profil challenge

Classement : 29/54254

Membre Junior
**
Hors ligne Hors ligne
Messages: 94


Voir le profil
« #1 le: 12 Mai 2016 à 01:52:50 »

Salut,

Il y a tout un tas de fonctions dont tu n'écris pas directement le code mais ne fais que les appeler depuis le tiens.

Lorsque tu emploies la fonction malloc() par exemple, voilà ce qu'il se passe :
 - soit tu lies statiquement, auquel cas le corps de la méthode sera copié directement dans le binaire produit
 - soit tu lies dynamiquement, auquel cas le code n'existera pas dans le binaire produit mais l'os l'importera au loadtime (msvcrX.dll sous windows)

Lier dynamiquement produira un binaire plus petit et si un bug dans la fonction malloc est découvert puis corrigé, celui-ci sera corrigé avec une mise à jour de la runtime sans que tu n'ais à reproduire et livrer ton binaire.
En revanche ça implique que la runtime correpondante soit présente sur la machine exécutant le binaire, sans quoi celui-ci ne pourra pas fonctionner correctement (message d'erreur au chargement).

Lier statiquement produira un binaire plus lourd et si un bug dans la fonction malloc est découvert puis corrigé, il te faudra mettre à jour tes outils de dev puis reproduire et livrer ton binaire pour profiter de la correction.
En revanche ton binaire sera autonome et pourra s'exécuter sur une machine ne possédant pas la runtime correspondante.

Passser de l'un à l'autre ne changera rien pour l'utilisateur final pour peu qu'il possède la runtime correspondante commme expliqué ci-dessus.
Dans la majorité des cas, passer de l'un à l'autre se fait en un clic dans ton outils de dev mais impliquera forcément de reproduire et livrer ton binaire.

Edit:
Ca c'est s'il s'agit de la runtime 'système' comme dans mon exemple.
S'il s'agit d'une ou plusieurs autres dll propriétaire(s), passer de l'un à l'autre se fait en incluant la librairie correspondant au mode de liaison souhaité (extension '.lib' généralement).


++
« Dernière édition: 12 Mai 2016 à 12:23:39 par dionosis » Journalisée
pixis
Administrateur

Profil challenge

Classement : 16/54254

Membre Héroïque
*****
Hors ligne Hors ligne
Messages: 664


Voir le profil WWW
« #2 le: 12 Mai 2016 à 02:27:35 »

Il me semble qu'il y a une petite coquille

- soit tu lies dynamiquement statiquement, auquel cas le corps de la méthode sera copié directement dans le binaire produit
- soit tu lies statiquement dynamiquement, auquel cas le code n'existera pas dans le binaire produit mais l'os l'importera au loadtime (msvcrX.dll sous windows)
Journalisée

Newbie Contest Staff :
Pixis
Statut :
Administrateur
Blog :
hackndo
dionosis

Profil challenge

Classement : 29/54254

Membre Junior
**
Hors ligne Hors ligne
Messages: 94


Voir le profil
« #3 le: 12 Mai 2016 à 12:14:12 »

Salut,

Citation de: pixis
Il me semble qu'il y a une petite coquille
Yep, tu as raison. J'ai posté ça un peu vite avant d'aller dormir.
Je corrige.

++
Journalisée
Antilles
Profil challenge

Classement : 2017/54254

Néophyte
*
Hors ligne Hors ligne
Messages: 11


Voir le profil
« #4 le: 12 Mai 2016 à 16:29:46 »

Merci pour vos réponses, ça m'a bien aidé.

Journalisée
Pages: [1]
  Imprimer  
 
Aller à: