Est-il possible d'apprendre des informations intéressantes sur un exécutable à partir des symboles ?
Voici un code C++ :
#include <iostream>
void fonction1() {
std::cout << "fonction1" << std::endl;
}
void fonction2() {
std::cout << "fonction2" << std::endl;
}
void fonction3() {
std::cout << "fonction3" << std::endl;
}
void fonction4() {
std::cout << "fonction4" << std::endl;
}
void fonction5() {
std::cout << "fonction5" << std::endl;
}
int main() {
int a = 8;
int b = 9;
int c = a + b;
fonction1();
fonction2();
fonction3();
fonction4();
fonction5();
std::cout << "Hello world" << std::endl;
std::cout << "a = " << a << std::endl;
std::cout << "b = " << b << std::endl;
std::cout << "c = " << c << std::endl;
return 0;
}
Je le compile et j'affiche les symboles contenus dans l'exécutable avec la commande readelf --symbols :
Symbol table '.dynsym' contains 14 entries:
Num: Value Size Type Bind Vis Ndx Name
0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND
1: 0000000000000000 0 FUNC GLOBAL DEFAULT UND _ZSt4endlIcSt11char_trait@GLIBCXX_3.4 (3)
2: 0000000000000000 0 FUNC GLOBAL DEFAULT UND __cxa_atexit@GLIBC_2.2.5 (2)
3: 0000000000000000 0 FUNC GLOBAL DEFAULT UND _ZStlsISt11char_traitsIcE@GLIBCXX_3.4 (3)
4: 0000000000000000 0 FUNC GLOBAL DEFAULT UND _ZNSolsEPFRSoS_E@GLIBCXX_3.4 (3)
5: 0000000000000000 0 FUNC GLOBAL DEFAULT UND _ZNSt8ios_base4InitC1Ev@GLIBCXX_3.4 (3)
6: 0000000000000000 0 FUNC GLOBAL DEFAULT UND _ZNSolsEi@GLIBCXX_3.4 (3)
7: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_deregisterTMCloneTab
8: 0000000000000000 0 FUNC GLOBAL DEFAULT UND __libc_start_main@GLIBC_2.2.5 (2)
9: 0000000000000000 0 NOTYPE WEAK DEFAULT UND __gmon_start__
10: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_registerTMCloneTable
11: 0000000000000000 0 FUNC GLOBAL DEFAULT UND _ZNSt8ios_base4InitD1Ev@GLIBCXX_3.4 (3)
12: 0000000000000000 0 FUNC WEAK DEFAULT UND __cxa_finalize@GLIBC_2.2.5 (2)
13: 0000000000004040 272 OBJECT GLOBAL DEFAULT 26 _ZSt4cout@GLIBCXX_3.4 (3)
Symbol table '.symtab' contains 81 entries:
Num: Value Size Type Bind Vis Ndx Name
0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND
1: 0000000000000318 0 SECTION LOCAL DEFAULT 1
2: 0000000000000338 0 SECTION LOCAL DEFAULT 2
3: 0000000000000358 0 SECTION LOCAL DEFAULT 3
4: 000000000000037c 0 SECTION LOCAL DEFAULT 4
5: 00000000000003a0 0 SECTION LOCAL DEFAULT 5
6: 00000000000003c8 0 SECTION LOCAL DEFAULT 6
7: 0000000000000518 0 SECTION LOCAL DEFAULT 7
8: 0000000000000686 0 SECTION LOCAL DEFAULT 8
9: 00000000000006a8 0 SECTION LOCAL DEFAULT 9
10: 00000000000006e8 0 SECTION LOCAL DEFAULT 10
11: 0000000000000808 0 SECTION LOCAL DEFAULT 11
12: 0000000000001000 0 SECTION LOCAL DEFAULT 12
13: 0000000000001020 0 SECTION LOCAL DEFAULT 13
14: 0000000000001080 0 SECTION LOCAL DEFAULT 14
15: 0000000000001090 0 SECTION LOCAL DEFAULT 15
16: 00000000000010e0 0 SECTION LOCAL DEFAULT 16
17: 00000000000014c8 0 SECTION LOCAL DEFAULT 17
18: 0000000000002000 0 SECTION LOCAL DEFAULT 18
19: 0000000000002054 0 SECTION LOCAL DEFAULT 19
20: 00000000000020d0 0 SECTION LOCAL DEFAULT 20
21: 0000000000003d70 0 SECTION LOCAL DEFAULT 21
22: 0000000000003d80 0 SECTION LOCAL DEFAULT 22
23: 0000000000003d88 0 SECTION LOCAL DEFAULT 23
24: 0000000000003f88 0 SECTION LOCAL DEFAULT 24
25: 0000000000004000 0 SECTION LOCAL DEFAULT 25
26: 0000000000004040 0 SECTION LOCAL DEFAULT 26
27: 0000000000000000 0 SECTION LOCAL DEFAULT 27
28: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtstuff.c
29: 0000000000001110 0 FUNC LOCAL DEFAULT 16 deregister_tm_clones
30: 0000000000001140 0 FUNC LOCAL DEFAULT 16 register_tm_clones
31: 0000000000001180 0 FUNC LOCAL DEFAULT 16 __do_global_dtors_aux
32: 0000000000004150 1 OBJECT LOCAL DEFAULT 26 completed.8060
33: 0000000000003d80 0 OBJECT LOCAL DEFAULT 22 __do_global_dtors_aux_fin
34: 00000000000011c0 0 FUNC LOCAL DEFAULT 16 frame_dummy
35: 0000000000003d70 0 OBJECT LOCAL DEFAULT 21 __frame_dummy_init_array_
36: 0000000000000000 0 FILE LOCAL DEFAULT ABS main.cpp
37: 0000000000002004 1 OBJECT LOCAL DEFAULT 18 _ZStL19piecewise_construc
38: 0000000000004151 1 OBJECT LOCAL DEFAULT 26 _ZStL8__ioinit
39: 00000000000013dd 77 FUNC LOCAL DEFAULT 16 _Z41__static_initializati
40: 000000000000142a 25 FUNC LOCAL DEFAULT 16 _GLOBAL__sub_I__Z9fonctio
41: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtstuff.c
42: 00000000000022b4 0 OBJECT LOCAL DEFAULT 20 __FRAME_END__
43: 0000000000000000 0 FILE LOCAL DEFAULT ABS
44: 0000000000002054 0 NOTYPE LOCAL DEFAULT 19 __GNU_EH_FRAME_HDR
45: 0000000000001000 0 FUNC LOCAL DEFAULT 12 _init
46: 0000000000003d88 0 OBJECT LOCAL DEFAULT 23 _DYNAMIC
47: 0000000000003d80 0 NOTYPE LOCAL DEFAULT 21 __init_array_end
48: 0000000000003d70 0 NOTYPE LOCAL DEFAULT 21 __init_array_start
49: 0000000000003f88 0 OBJECT LOCAL DEFAULT 24 _GLOBAL_OFFSET_TABLE_
50: 0000000000004010 0 NOTYPE GLOBAL DEFAULT 25 _edata
51: 0000000000004000 0 NOTYPE WEAK DEFAULT 25 data_start
52: 0000000000002000 4 OBJECT GLOBAL DEFAULT 18 _IO_stdin_used
53: 0000000000001295 51 FUNC GLOBAL DEFAULT 16 _Z9fonction5v
54: 0000000000000000 0 FUNC WEAK DEFAULT UND __cxa_finalize@@GLIBC_2.2
55: 00000000000012c8 277 FUNC GLOBAL DEFAULT 16 main
56: 0000000000000000 0 FUNC GLOBAL DEFAULT UND _ZSt4endlIcSt11char_trait
57: 00000000000011c9 51 FUNC GLOBAL DEFAULT 16 _Z9fonction1v
58: 0000000000004008 0 OBJECT GLOBAL HIDDEN 25 __dso_handle
59: 00000000000014c8 0 FUNC GLOBAL HIDDEN 17 _fini
60: 00000000000011fc 51 FUNC GLOBAL DEFAULT 16 _Z9fonction2v
61: 0000000000000000 0 FUNC GLOBAL DEFAULT UND __cxa_atexit@@GLIBC_2.2.5
62: 00000000000010e0 47 FUNC GLOBAL DEFAULT 16 _start
63: 0000000000000000 0 FUNC GLOBAL DEFAULT UND _ZStlsISt11char_traitsIcE
64: 0000000000000000 0 FUNC GLOBAL DEFAULT UND _ZNSolsEPFRSoS_E@@GLIBCXX
65: 0000000000001262 51 FUNC GLOBAL DEFAULT 16 _Z9fonction4v
66: 0000000000004010 0 OBJECT GLOBAL HIDDEN 25 __TMC_END__
67: 0000000000004040 272 OBJECT GLOBAL DEFAULT 26 _ZSt4cout@@GLIBCXX_3.4
68: 0000000000004000 0 NOTYPE GLOBAL DEFAULT 25 __data_start
69: 0000000000004158 0 NOTYPE GLOBAL DEFAULT 26 _end
70: 0000000000004010 0 NOTYPE GLOBAL DEFAULT 26 __bss_start
71: 0000000000000000 0 FUNC GLOBAL DEFAULT UND _ZNSt8ios_base4InitC1Ev@@
72: 0000000000001450 101 FUNC GLOBAL DEFAULT 16 __libc_csu_init
73: 0000000000000000 0 FUNC GLOBAL DEFAULT UND _ZNSolsEi@@GLIBCXX_3.4
74: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_deregisterTMCloneTab
75: 00000000000014c0 5 FUNC GLOBAL DEFAULT 16 __libc_csu_fini
76: 0000000000000000 0 FUNC GLOBAL DEFAULT UND __libc_start_main@@GLIBC_
77: 0000000000000000 0 NOTYPE WEAK DEFAULT UND __gmon_start__
78: 000000000000122f 51 FUNC GLOBAL DEFAULT 16 _Z9fonction3v
79: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_registerTMCloneTable
80: 0000000000000000 0 FUNC GLOBAL DEFAULT UND _ZNSt8ios_base4InitD1Ev@@
Je vois beaucoup de gens analyser des symboles au travail ou sur Youtube mais je ne comprends jamais en quoi cela peut être utile.
Si une âme charitable peut éclairer ma lanterne.
- Edité par Autechre 21 février 2023 à 19:23:50
Informations intéressantes à partir des symboles ?
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.