2017-02-22 4 views
0

J'ai un binaire que je suis en train de courir qui semble exiger spécifiquement OPENSSL_1.0.0 la version 4:Comment construire la version 4 Openssl_1.0.0

Version needs section '.gnu.version_r' contains 2 entries: 
Addr: 0x00000000080486ac Offset: 0x0006ac Link: 6 (.dynstr) 
    000000: Version: 1 File: libcrypto.so.1.0.0 Cnt: 1 
    0x0010: Name: OPENSSL_1.0.0 Flags: none Version: 4 

J'ai vérifié le code source de git OpenSSL et construit 1.0.0-stable, mais ne peut pas comprendre comment construire spécifiquement ce qui est nécessaire par le binaire.

Quelle version dois-je extraire du repo openssl et comment le compiler pour qu'il soit utilisable par ce binaire?

Voici d'autres champs peut relivant à partir de son en-tête elfe:

ELF Header: 
    Magic: 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00 
    Class:        ELF32 
    Data:        2's complement, little endian 
    Version:       1 (current) 
    OS/ABI:       UNIX - System V 
    ABI Version:      0 
    Type:        EXEC (Executable file) 
    Machine:       Intel 80386 
    Version:       0x1 
    Entry point address:    0x804a6e0 
    Start of program headers:   52 (bytes into file) 
    Start of section headers:   214412 (bytes into file) 
    Flags:        0x0 
    Size of this header:    52 (bytes) 
    Size of program headers:   32 (bytes) 
    Number of program headers:   9 
    Size of section headers:   40 (bytes) 
    Number of section headers:   37 
    Section header string table index: 34 


Relocation section '.rel.plt' at offset 0x73c contains 37 entries: 
Offset  Info Type   Sym.Value Sym. Name 
0805b038 00000d07 R_386_JUMP_SLOT 00000000 [email protected]_1.0.0 

Dynamic section at offset 0x11f0c contains 25 entries: 
    Tag  Type       Name/Value 
0x00000001 (NEEDED)      Shared library: [libcrypto.so.1.0.0] 

Symbol table '.dynsym' contains 43 entries: 
    Num: Value Size Type Bind Vis  Ndx Name  
    13: 00000000  0 FUNC GLOBAL DEFAULT UND [email protected]_1.0.0 (4) 

Version symbols section '.gnu.version' contains 43 entries: 
Addr: 0000000008048656 Offset: 0x000656 Link: 5 (.dynsym) 
    00c: 2 (GLIBC_2.0)  4 (OPENSSL_1.0.0) 2 (GLIBC_2.0)  0 (*local*) 
+0

Je crois que la SONAME 'OPENSSL_1.0.0' est la ligne OpenSSL 1.0.x. Cette ligne inclut OpenSSL 1.0.1 et 1.0.2. Commander 'OpenSSL_1_0_2-stable'. Voir aussi [Release Strategy] (https://www.openssl.org/policies/releasestrat.html) sur le site Web d'OpenSSL. – jww

Répondre

1

La version que vous voyez il n'y a pas la version de la bibliothèque, mais la version (arbitraire) du symbole dans la table. Comme jww a déjà souligné, cela fait référence à OPENSSL_1.0.0 qui est la chaîne de version de symbole, et se rapporte à la branche de version 1.0.x.

Voir https://blog.flameeyes.eu/2011/06/gold-readiness-obstacle-2-base-versioning/ pour une référence aléatoire à la gestion des versions de symboles dont j'ai déjà parlé.