精灵编辑:在其自己的部分中替换具有不同功能的部分
我有一个.o对象文件,该文件具有同一文件中其他功能的函数。该功能在自己的部分中,而不是导出。我需要用自己的实现替换此功能。我自己的实现需要外部符号。我考虑过简单地修补该部分,以便调用位于某个位置的地址(因此,旧功能实际上只是将控件传输到我的代码),然后我只需要添加某种参考/重新安置信息,以便链接器知道它需要将功能的地址放置在该位置(看起来这是所有其他“导入”的方法)。但是,如何使用Objcopy,LD,GCC和NM等工具进行操作?不幸的是,我真的无法使用任何其他工具(除了在常规Linux机器(例如SED,尴尬,DD等)上使用的工具)。我可以看到,其他导入的符号在没有地址等的情况下列出了Symtab,但我看不到它们是如何提及的。
readelf -ws
is and readelf -t
的输出
Symbol table '.symtab' contains 190 entries:
Num: Value Size Type Bind Vis Ndx Name
0: 00000000 0 NOTYPE LOCAL DEFAULT UND
1: 00000000 0 SECTION LOCAL DEFAULT 57
2: 00000000 0 SECTION LOCAL DEFAULT 58
3: 00000000 0 SECTION LOCAL DEFAULT 59
4: 00000000 0 SECTION LOCAL DEFAULT 61
5: 00000000 0 SECTION LOCAL DEFAULT 62
6: 00000000 0 SECTION LOCAL DEFAULT 64
7: 00000000 0 SECTION LOCAL DEFAULT 66
8: 00000000 0 SECTION LOCAL DEFAULT 68
9: 00000000 0 SECTION LOCAL DEFAULT 70
10: 00000000 0 SECTION LOCAL DEFAULT 72
11: 00000000 0 SECTION LOCAL DEFAULT 74
12: 00000000 0 SECTION LOCAL DEFAULT 76
13: 00000000 0 SECTION LOCAL DEFAULT 78
14: 00000000 0 SECTION LOCAL DEFAULT 80
15: 00000000 0 SECTION LOCAL DEFAULT 82
16: 00000000 0 SECTION LOCAL DEFAULT 84
17: 00000000 0 SECTION LOCAL DEFAULT 86
18: 00000000 0 SECTION LOCAL DEFAULT 88
19: 00000000 0 SECTION LOCAL DEFAULT 90
20: 00000000 0 SECTION LOCAL DEFAULT 92
21: 00000000 0 SECTION LOCAL DEFAULT 94
22: 00000000 0 SECTION LOCAL DEFAULT 96
23: 00000000 0 SECTION LOCAL DEFAULT 98
24: 00000000 0 SECTION LOCAL DEFAULT 100
25: 00000000 0 SECTION LOCAL DEFAULT 102
26: 00000000 0 SECTION LOCAL DEFAULT 104
27: 00000000 0 SECTION LOCAL DEFAULT 105
28: 00000000 0 SECTION LOCAL DEFAULT 107
29: 00000000 0 SECTION LOCAL DEFAULT 109
30: 00000000 0 SECTION LOCAL DEFAULT 111
31: 00000000 0 SECTION LOCAL DEFAULT 113
32: 00000000 0 SECTION LOCAL DEFAULT 115
33: 00000000 0 SECTION LOCAL DEFAULT 117
34: 00000000 0 SECTION LOCAL DEFAULT 119
35: 00000000 0 SECTION LOCAL DEFAULT 121
36: 00000000 0 SECTION LOCAL DEFAULT 123
37: 00000000 0 SECTION LOCAL DEFAULT 125
38: 00000000 0 SECTION LOCAL DEFAULT 126
39: 00000000 0 SECTION LOCAL DEFAULT 128
40: 00000000 0 SECTION LOCAL DEFAULT 130
41: 00000000 0 SECTION LOCAL DEFAULT 132
42: 00000000 0 SECTION LOCAL DEFAULT 134
43: 00000000 0 SECTION LOCAL DEFAULT 136
44: 00000000 0 SECTION LOCAL DEFAULT 138
45: 00000000 0 SECTION LOCAL DEFAULT 140
46: 00000000 0 SECTION LOCAL DEFAULT 142
47: 00000000 0 SECTION LOCAL DEFAULT 144
48: 00000000 0 SECTION LOCAL DEFAULT 146
49: 00000000 0 SECTION LOCAL DEFAULT 148
50: 00000000 0 SECTION LOCAL DEFAULT 150
51: 00000000 0 SECTION LOCAL DEFAULT 152
52: 00000000 0 SECTION LOCAL DEFAULT 154
53: 00000000 0 SECTION LOCAL DEFAULT 156
54: 00000000 0 SECTION LOCAL DEFAULT 158
55: 00000000 0 SECTION LOCAL DEFAULT 160
56: 00000000 0 SECTION LOCAL DEFAULT 162
57: 00000000 0 SECTION LOCAL DEFAULT 164
58: 00000000 0 SECTION LOCAL DEFAULT 166
59: 00000000 0 SECTION LOCAL DEFAULT 168
60: 00000000 0 SECTION LOCAL DEFAULT 1
61: 00000000 0 SECTION LOCAL DEFAULT 2
62: 00000000 0 SECTION LOCAL DEFAULT 3
63: 00000000 0 SECTION LOCAL DEFAULT 4
64: 00000000 0 SECTION LOCAL DEFAULT 5
65: 00000000 0 SECTION LOCAL DEFAULT 6
66: 00000000 0 SECTION LOCAL DEFAULT 7
67: 00000000 0 SECTION LOCAL DEFAULT 8
68: 00000000 0 SECTION LOCAL DEFAULT 9
69: 00000000 0 SECTION LOCAL DEFAULT 10
70: 00000000 0 SECTION LOCAL DEFAULT 11
71: 00000000 0 SECTION LOCAL DEFAULT 12
72: 00000000 0 SECTION LOCAL DEFAULT 13
73: 00000000 0 SECTION LOCAL DEFAULT 14
74: 00000000 0 SECTION LOCAL DEFAULT 15
75: 00000000 0 SECTION LOCAL DEFAULT 16
76: 00000000 0 SECTION LOCAL DEFAULT 17
77: 00000000 0 SECTION LOCAL DEFAULT 18
78: 00000000 0 SECTION LOCAL DEFAULT 19
79: 00000000 0 SECTION LOCAL DEFAULT 20
80: 00000000 0 SECTION LOCAL DEFAULT 21
81: 00000000 0 SECTION LOCAL DEFAULT 22
82: 00000000 0 SECTION LOCAL DEFAULT 23
83: 00000000 0 SECTION LOCAL DEFAULT 24
84: 00000000 0 SECTION LOCAL DEFAULT 25
85: 00000000 0 SECTION LOCAL DEFAULT 26
86: 00000000 0 SECTION LOCAL DEFAULT 27
87: 00000000 0 SECTION LOCAL DEFAULT 28
88: 00000000 0 SECTION LOCAL DEFAULT 29
89: 00000000 0 SECTION LOCAL DEFAULT 30
90: 00000000 0 SECTION LOCAL DEFAULT 31
91: 00000000 0 SECTION LOCAL DEFAULT 32
92: 00000000 0 SECTION LOCAL DEFAULT 33
93: 00000000 0 SECTION LOCAL DEFAULT 34
94: 00000000 0 SECTION LOCAL DEFAULT 35
95: 00000000 0 SECTION LOCAL DEFAULT 36
96: 00000000 0 SECTION LOCAL DEFAULT 37
97: 00000000 0 SECTION LOCAL DEFAULT 38
98: 00000000 0 SECTION LOCAL DEFAULT 39
99: 00000000 0 SECTION LOCAL DEFAULT 40
100: 00000000 0 SECTION LOCAL DEFAULT 41
101: 00000000 0 SECTION LOCAL DEFAULT 42
102: 00000000 0 SECTION LOCAL DEFAULT 43
103: 00000000 0 SECTION LOCAL DEFAULT 44
104: 00000000 0 SECTION LOCAL DEFAULT 45
105: 00000000 0 SECTION LOCAL DEFAULT 46
106: 00000000 0 SECTION LOCAL DEFAULT 47
107: 00000000 0 SECTION LOCAL DEFAULT 48
108: 00000000 0 SECTION LOCAL DEFAULT 49
109: 00000000 0 SECTION LOCAL DEFAULT 50
110: 00000000 0 SECTION LOCAL DEFAULT 51
111: 00000000 0 SECTION LOCAL DEFAULT 52
112: 00000000 0 SECTION LOCAL DEFAULT 53
113: 00000000 0 SECTION LOCAL DEFAULT 54
114: 00000000 0 SECTION LOCAL DEFAULT 55
115: 00000000 0 SECTION LOCAL DEFAULT 56
116: 00000000 0 SECTION LOCAL DEFAULT 170
117: 00000000 0 SECTION LOCAL DEFAULT 171
118: 00000000 0 SECTION LOCAL DEFAULT 172
119: 00000000 0 SECTION LOCAL DEFAULT 174
120: 00000000 0 NOTYPE GLOBAL DEFAULT UND wpabuf_put
121: 00000004 30 FUNC GLOBAL DEFAULT 64 eap_peer_get_eap_method
122: 00000004 29 FUNC GLOBAL DEFAULT 66 eap_peer_get_methods
123: 00000008 65 FUNC GLOBAL DEFAULT 68 eap_peer_get_type
124: 00000000 0 NOTYPE GLOBAL DEFAULT UND ets_strcmp
125: 00000008 52 FUNC GLOBAL DEFAULT 72 eap_get_phase2_type
126: 00000010 136 FUNC GLOBAL DEFAULT 74 eap_get_phase2_types
127: 00000000 0 NOTYPE GLOBAL DEFAULT UND pvPortMalloc
128: 00000008 51 FUNC GLOBAL DEFAULT 76 eap_peer_method_alloc
129: 00000000 0 NOTYPE GLOBAL DEFAULT UND pvPortZalloc
130: 00000008 24 FUNC GLOBAL DEFAULT 78 eap_peer_method_free
131: 00000000 0 NOTYPE GLOBAL DEFAULT UND vPortFree
132: 0000000c 99 FUNC GLOBAL DEFAULT 80 eap_peer_method_register
133: 00000008 48 FUNC GLOBAL DEFAULT 82 eap_peer_unregister_methods
134: 00000010 42 FUNC GLOBAL DEFAULT 84 eap_peer_register_methods
135: 00000000 0 NOTYPE GLOBAL DEFAULT UND eap_peer_tls_register
136: 00000000 0 NOTYPE GLOBAL DEFAULT UND eap_peer_mschapv2_register
137: 00000000 0 NOTYPE GLOBAL DEFAULT UND eap_peer_peap_register
138: 00000000 0 NOTYPE GLOBAL DEFAULT UND eap_peer_ttls_register
139: 00000000 0 NOTYPE GLOBAL DEFAULT UND g_ic
140: 00000000 0 NOTYPE GLOBAL DEFAULT UND ieee80211_output_pbuf
141: 00000000 0 NOTYPE GLOBAL DEFAULT UND ets_memset
142: 00000000 0 NOTYPE GLOBAL DEFAULT UND ets_memcpy
143: 00000008 59 FUNC GLOBAL DEFAULT 92 wpa2_sm_alloc_eapol
144: 00000000 0 NOTYPE GLOBAL DEFAULT UND pbuf_alloc
145: 00000020 145 FUNC GLOBAL DEFAULT 96 eap_sm_build_identity_resp
146: 00000000 5 FUNC GLOBAL DEFAULT 125 eap_get_config
147: 00000000 0 NOTYPE GLOBAL DEFAULT UND os_printf_plus
148: 00000000 0 NOTYPE GLOBAL DEFAULT UND eap_msg_alloc
149: 00000000 0 NOTYPE GLOBAL DEFAULT UND eap_update_len
150: 00000010 79 FUNC GLOBAL DEFAULT 100 eap_sm_send_eapol
151: 00000034 454 FUNC GLOBAL DEFAULT 102 eap_sm_process_request
152: 00000000 0 NOTYPE GLOBAL DEFAULT UND wpabuf_free
153: 0000001c 188 FUNC GLOBAL DEFAULT 105 wpa2_sm_rx_eapol
154: 00000000 0 NOTYPE GLOBAL DEFAULT UND wpabuf_alloc_copy
155: 00000000 0 NOTYPE GLOBAL DEFAULT UND wpa_set_pmk
156: 00000000 0 NOTYPE GLOBAL DEFAULT UND ets_bzero
157: 00000000 0 NOTYPE GLOBAL DEFAULT UND ets_strncpy
158: 00000000 0 NOTYPE GLOBAL DEFAULT UND wifi_get_macaddr
159: 00000000 0 NOTYPE GLOBAL DEFAULT UND tls_init
160: 00000000 0 NOTYPE GLOBAL DEFAULT UND tls_deinit
161: 00000004 37 FUNC GLOBAL DEFAULT 126 eap_get_config_identity
162: 00000004 37 FUNC GLOBAL DEFAULT 128 eap_get_config_password
163: 00000004 51 FUNC GLOBAL DEFAULT 130 eap_get_config_password2
164: 00000004 39 FUNC GLOBAL DEFAULT 132 eap_get_config_new_password
165: 00000004 63 FUNC GLOBAL DEFAULT 134 eap_get_config_blob
166: 00000000 0 NOTYPE GLOBAL DEFAULT UND ets_strncmp
167: 00000048 164 FUNC GLOBAL DEFAULT 136 wifi_station_set_wpa2_enterprise_auth
168: 00000004 36 FUNC GLOBAL DEFAULT 138 wifi_station_set_enterprise_cert_key
169: 00000004 21 FUNC GLOBAL DEFAULT 140 wifi_station_clear_enterprise_cert_key
170: 00000004 16 FUNC GLOBAL DEFAULT 142 wifi_station_set_enterprise_ca_cert
171: 00000004 11 FUNC GLOBAL DEFAULT 144 wifi_station_clear_enterprise_ca_cert
172: 00000024 109 FUNC GLOBAL DEFAULT 146 wifi_station_set_enterprise_identity
173: 00000010 40 FUNC GLOBAL DEFAULT 148 wifi_station_clear_enterprise_identity
174: 00000024 109 FUNC GLOBAL DEFAULT 150 wifi_station_set_enterprise_username
175: 00000010 40 FUNC GLOBAL DEFAULT 152 wifi_station_clear_enterprise_username
176: 00000024 103 FUNC GLOBAL DEFAULT 154 wifi_station_set_enterprise_password
177: 00000010 40 FUNC GLOBAL DEFAULT 156 wifi_station_clear_enterprise_password
178: 00000024 103 FUNC GLOBAL DEFAULT 158 wifi_station_set_enterprise_new_password
179: 00000010 40 FUNC GLOBAL DEFAULT 160 wifi_station_clear_enterprise_new_password
180: 00000004 8 FUNC GLOBAL DEFAULT 162 wifi_station_set_enterprise_disable_time_check
181: 00000004 8 FUNC GLOBAL DEFAULT 164 wifi_station_get_enterprise_disable_time_check
182: 00000004 8 FUNC GLOBAL DEFAULT 166 wpa2_enterprise_set_user_get_time
183: 00000004 28 FUNC GLOBAL DEFAULT 168 wpa2_get_time
184: 00000004 36 FUNC GLOBAL DEFAULT 138 wifi_station_set_cert_key
185: 00000004 21 FUNC GLOBAL DEFAULT 140 wifi_station_clear_cert_key
186: 00000024 109 FUNC GLOBAL DEFAULT 146 wifi_station_set_identity
187: 00000010 40 FUNC GLOBAL DEFAULT 148 wifi_station_clear_identity
188: 00000024 109 FUNC GLOBAL DEFAULT 150 wifi_station_set_username
189: 00000010 40 FUNC GLOBAL DEFAULT 152 wifi_station_clear_username
说明了我需要修改的部分/函数:
有179个截面标题,从Offset 0x96b0
Section Headers:
[Nr] Name
Type Addr Off Size ES Lk Inf Al
Flags
...
[113] .text.eap_peer_config_deinit
PROGBITS 00000000 000dd0 000868 00 0 0 4
[00000006]: ALLOC, EXEC
[114] .rela.text.eap_peer_config_deinit
RELA 00000000 005d68 000000 0c 176 113 4
[00000040]: INFO LINK
开始当我达到字符限制时,要切断输出。
I have a .o object file which has a function that other functions in that same file are calling. That function is in it's own section and not exported. I need to replace this function with my own implementation. My own implementation needs external symbols aswell. I thought about simply patching that section so it calls an address that's placed at some location (so the old function is effectively just transfering control to my code), then I only need to add some kind of reference/relocation information so the linker knows that it needs to place the address of the function at that location (it looks like that's how it's done for all the other "imports"). But how do I do this using tools like objcopy, ld, gcc, and nm? Unfortunately I can't really use any additional tools (except for those present on a normal linux machine like sed, awk, dd and so on). I can see that the other imported symbols are listed in the symtab without an address and so on, but I can't see how they are referred to.
The output of readelf -Ws
is
Symbol table '.symtab' contains 190 entries:
Num: Value Size Type Bind Vis Ndx Name
0: 00000000 0 NOTYPE LOCAL DEFAULT UND
1: 00000000 0 SECTION LOCAL DEFAULT 57
2: 00000000 0 SECTION LOCAL DEFAULT 58
3: 00000000 0 SECTION LOCAL DEFAULT 59
4: 00000000 0 SECTION LOCAL DEFAULT 61
5: 00000000 0 SECTION LOCAL DEFAULT 62
6: 00000000 0 SECTION LOCAL DEFAULT 64
7: 00000000 0 SECTION LOCAL DEFAULT 66
8: 00000000 0 SECTION LOCAL DEFAULT 68
9: 00000000 0 SECTION LOCAL DEFAULT 70
10: 00000000 0 SECTION LOCAL DEFAULT 72
11: 00000000 0 SECTION LOCAL DEFAULT 74
12: 00000000 0 SECTION LOCAL DEFAULT 76
13: 00000000 0 SECTION LOCAL DEFAULT 78
14: 00000000 0 SECTION LOCAL DEFAULT 80
15: 00000000 0 SECTION LOCAL DEFAULT 82
16: 00000000 0 SECTION LOCAL DEFAULT 84
17: 00000000 0 SECTION LOCAL DEFAULT 86
18: 00000000 0 SECTION LOCAL DEFAULT 88
19: 00000000 0 SECTION LOCAL DEFAULT 90
20: 00000000 0 SECTION LOCAL DEFAULT 92
21: 00000000 0 SECTION LOCAL DEFAULT 94
22: 00000000 0 SECTION LOCAL DEFAULT 96
23: 00000000 0 SECTION LOCAL DEFAULT 98
24: 00000000 0 SECTION LOCAL DEFAULT 100
25: 00000000 0 SECTION LOCAL DEFAULT 102
26: 00000000 0 SECTION LOCAL DEFAULT 104
27: 00000000 0 SECTION LOCAL DEFAULT 105
28: 00000000 0 SECTION LOCAL DEFAULT 107
29: 00000000 0 SECTION LOCAL DEFAULT 109
30: 00000000 0 SECTION LOCAL DEFAULT 111
31: 00000000 0 SECTION LOCAL DEFAULT 113
32: 00000000 0 SECTION LOCAL DEFAULT 115
33: 00000000 0 SECTION LOCAL DEFAULT 117
34: 00000000 0 SECTION LOCAL DEFAULT 119
35: 00000000 0 SECTION LOCAL DEFAULT 121
36: 00000000 0 SECTION LOCAL DEFAULT 123
37: 00000000 0 SECTION LOCAL DEFAULT 125
38: 00000000 0 SECTION LOCAL DEFAULT 126
39: 00000000 0 SECTION LOCAL DEFAULT 128
40: 00000000 0 SECTION LOCAL DEFAULT 130
41: 00000000 0 SECTION LOCAL DEFAULT 132
42: 00000000 0 SECTION LOCAL DEFAULT 134
43: 00000000 0 SECTION LOCAL DEFAULT 136
44: 00000000 0 SECTION LOCAL DEFAULT 138
45: 00000000 0 SECTION LOCAL DEFAULT 140
46: 00000000 0 SECTION LOCAL DEFAULT 142
47: 00000000 0 SECTION LOCAL DEFAULT 144
48: 00000000 0 SECTION LOCAL DEFAULT 146
49: 00000000 0 SECTION LOCAL DEFAULT 148
50: 00000000 0 SECTION LOCAL DEFAULT 150
51: 00000000 0 SECTION LOCAL DEFAULT 152
52: 00000000 0 SECTION LOCAL DEFAULT 154
53: 00000000 0 SECTION LOCAL DEFAULT 156
54: 00000000 0 SECTION LOCAL DEFAULT 158
55: 00000000 0 SECTION LOCAL DEFAULT 160
56: 00000000 0 SECTION LOCAL DEFAULT 162
57: 00000000 0 SECTION LOCAL DEFAULT 164
58: 00000000 0 SECTION LOCAL DEFAULT 166
59: 00000000 0 SECTION LOCAL DEFAULT 168
60: 00000000 0 SECTION LOCAL DEFAULT 1
61: 00000000 0 SECTION LOCAL DEFAULT 2
62: 00000000 0 SECTION LOCAL DEFAULT 3
63: 00000000 0 SECTION LOCAL DEFAULT 4
64: 00000000 0 SECTION LOCAL DEFAULT 5
65: 00000000 0 SECTION LOCAL DEFAULT 6
66: 00000000 0 SECTION LOCAL DEFAULT 7
67: 00000000 0 SECTION LOCAL DEFAULT 8
68: 00000000 0 SECTION LOCAL DEFAULT 9
69: 00000000 0 SECTION LOCAL DEFAULT 10
70: 00000000 0 SECTION LOCAL DEFAULT 11
71: 00000000 0 SECTION LOCAL DEFAULT 12
72: 00000000 0 SECTION LOCAL DEFAULT 13
73: 00000000 0 SECTION LOCAL DEFAULT 14
74: 00000000 0 SECTION LOCAL DEFAULT 15
75: 00000000 0 SECTION LOCAL DEFAULT 16
76: 00000000 0 SECTION LOCAL DEFAULT 17
77: 00000000 0 SECTION LOCAL DEFAULT 18
78: 00000000 0 SECTION LOCAL DEFAULT 19
79: 00000000 0 SECTION LOCAL DEFAULT 20
80: 00000000 0 SECTION LOCAL DEFAULT 21
81: 00000000 0 SECTION LOCAL DEFAULT 22
82: 00000000 0 SECTION LOCAL DEFAULT 23
83: 00000000 0 SECTION LOCAL DEFAULT 24
84: 00000000 0 SECTION LOCAL DEFAULT 25
85: 00000000 0 SECTION LOCAL DEFAULT 26
86: 00000000 0 SECTION LOCAL DEFAULT 27
87: 00000000 0 SECTION LOCAL DEFAULT 28
88: 00000000 0 SECTION LOCAL DEFAULT 29
89: 00000000 0 SECTION LOCAL DEFAULT 30
90: 00000000 0 SECTION LOCAL DEFAULT 31
91: 00000000 0 SECTION LOCAL DEFAULT 32
92: 00000000 0 SECTION LOCAL DEFAULT 33
93: 00000000 0 SECTION LOCAL DEFAULT 34
94: 00000000 0 SECTION LOCAL DEFAULT 35
95: 00000000 0 SECTION LOCAL DEFAULT 36
96: 00000000 0 SECTION LOCAL DEFAULT 37
97: 00000000 0 SECTION LOCAL DEFAULT 38
98: 00000000 0 SECTION LOCAL DEFAULT 39
99: 00000000 0 SECTION LOCAL DEFAULT 40
100: 00000000 0 SECTION LOCAL DEFAULT 41
101: 00000000 0 SECTION LOCAL DEFAULT 42
102: 00000000 0 SECTION LOCAL DEFAULT 43
103: 00000000 0 SECTION LOCAL DEFAULT 44
104: 00000000 0 SECTION LOCAL DEFAULT 45
105: 00000000 0 SECTION LOCAL DEFAULT 46
106: 00000000 0 SECTION LOCAL DEFAULT 47
107: 00000000 0 SECTION LOCAL DEFAULT 48
108: 00000000 0 SECTION LOCAL DEFAULT 49
109: 00000000 0 SECTION LOCAL DEFAULT 50
110: 00000000 0 SECTION LOCAL DEFAULT 51
111: 00000000 0 SECTION LOCAL DEFAULT 52
112: 00000000 0 SECTION LOCAL DEFAULT 53
113: 00000000 0 SECTION LOCAL DEFAULT 54
114: 00000000 0 SECTION LOCAL DEFAULT 55
115: 00000000 0 SECTION LOCAL DEFAULT 56
116: 00000000 0 SECTION LOCAL DEFAULT 170
117: 00000000 0 SECTION LOCAL DEFAULT 171
118: 00000000 0 SECTION LOCAL DEFAULT 172
119: 00000000 0 SECTION LOCAL DEFAULT 174
120: 00000000 0 NOTYPE GLOBAL DEFAULT UND wpabuf_put
121: 00000004 30 FUNC GLOBAL DEFAULT 64 eap_peer_get_eap_method
122: 00000004 29 FUNC GLOBAL DEFAULT 66 eap_peer_get_methods
123: 00000008 65 FUNC GLOBAL DEFAULT 68 eap_peer_get_type
124: 00000000 0 NOTYPE GLOBAL DEFAULT UND ets_strcmp
125: 00000008 52 FUNC GLOBAL DEFAULT 72 eap_get_phase2_type
126: 00000010 136 FUNC GLOBAL DEFAULT 74 eap_get_phase2_types
127: 00000000 0 NOTYPE GLOBAL DEFAULT UND pvPortMalloc
128: 00000008 51 FUNC GLOBAL DEFAULT 76 eap_peer_method_alloc
129: 00000000 0 NOTYPE GLOBAL DEFAULT UND pvPortZalloc
130: 00000008 24 FUNC GLOBAL DEFAULT 78 eap_peer_method_free
131: 00000000 0 NOTYPE GLOBAL DEFAULT UND vPortFree
132: 0000000c 99 FUNC GLOBAL DEFAULT 80 eap_peer_method_register
133: 00000008 48 FUNC GLOBAL DEFAULT 82 eap_peer_unregister_methods
134: 00000010 42 FUNC GLOBAL DEFAULT 84 eap_peer_register_methods
135: 00000000 0 NOTYPE GLOBAL DEFAULT UND eap_peer_tls_register
136: 00000000 0 NOTYPE GLOBAL DEFAULT UND eap_peer_mschapv2_register
137: 00000000 0 NOTYPE GLOBAL DEFAULT UND eap_peer_peap_register
138: 00000000 0 NOTYPE GLOBAL DEFAULT UND eap_peer_ttls_register
139: 00000000 0 NOTYPE GLOBAL DEFAULT UND g_ic
140: 00000000 0 NOTYPE GLOBAL DEFAULT UND ieee80211_output_pbuf
141: 00000000 0 NOTYPE GLOBAL DEFAULT UND ets_memset
142: 00000000 0 NOTYPE GLOBAL DEFAULT UND ets_memcpy
143: 00000008 59 FUNC GLOBAL DEFAULT 92 wpa2_sm_alloc_eapol
144: 00000000 0 NOTYPE GLOBAL DEFAULT UND pbuf_alloc
145: 00000020 145 FUNC GLOBAL DEFAULT 96 eap_sm_build_identity_resp
146: 00000000 5 FUNC GLOBAL DEFAULT 125 eap_get_config
147: 00000000 0 NOTYPE GLOBAL DEFAULT UND os_printf_plus
148: 00000000 0 NOTYPE GLOBAL DEFAULT UND eap_msg_alloc
149: 00000000 0 NOTYPE GLOBAL DEFAULT UND eap_update_len
150: 00000010 79 FUNC GLOBAL DEFAULT 100 eap_sm_send_eapol
151: 00000034 454 FUNC GLOBAL DEFAULT 102 eap_sm_process_request
152: 00000000 0 NOTYPE GLOBAL DEFAULT UND wpabuf_free
153: 0000001c 188 FUNC GLOBAL DEFAULT 105 wpa2_sm_rx_eapol
154: 00000000 0 NOTYPE GLOBAL DEFAULT UND wpabuf_alloc_copy
155: 00000000 0 NOTYPE GLOBAL DEFAULT UND wpa_set_pmk
156: 00000000 0 NOTYPE GLOBAL DEFAULT UND ets_bzero
157: 00000000 0 NOTYPE GLOBAL DEFAULT UND ets_strncpy
158: 00000000 0 NOTYPE GLOBAL DEFAULT UND wifi_get_macaddr
159: 00000000 0 NOTYPE GLOBAL DEFAULT UND tls_init
160: 00000000 0 NOTYPE GLOBAL DEFAULT UND tls_deinit
161: 00000004 37 FUNC GLOBAL DEFAULT 126 eap_get_config_identity
162: 00000004 37 FUNC GLOBAL DEFAULT 128 eap_get_config_password
163: 00000004 51 FUNC GLOBAL DEFAULT 130 eap_get_config_password2
164: 00000004 39 FUNC GLOBAL DEFAULT 132 eap_get_config_new_password
165: 00000004 63 FUNC GLOBAL DEFAULT 134 eap_get_config_blob
166: 00000000 0 NOTYPE GLOBAL DEFAULT UND ets_strncmp
167: 00000048 164 FUNC GLOBAL DEFAULT 136 wifi_station_set_wpa2_enterprise_auth
168: 00000004 36 FUNC GLOBAL DEFAULT 138 wifi_station_set_enterprise_cert_key
169: 00000004 21 FUNC GLOBAL DEFAULT 140 wifi_station_clear_enterprise_cert_key
170: 00000004 16 FUNC GLOBAL DEFAULT 142 wifi_station_set_enterprise_ca_cert
171: 00000004 11 FUNC GLOBAL DEFAULT 144 wifi_station_clear_enterprise_ca_cert
172: 00000024 109 FUNC GLOBAL DEFAULT 146 wifi_station_set_enterprise_identity
173: 00000010 40 FUNC GLOBAL DEFAULT 148 wifi_station_clear_enterprise_identity
174: 00000024 109 FUNC GLOBAL DEFAULT 150 wifi_station_set_enterprise_username
175: 00000010 40 FUNC GLOBAL DEFAULT 152 wifi_station_clear_enterprise_username
176: 00000024 103 FUNC GLOBAL DEFAULT 154 wifi_station_set_enterprise_password
177: 00000010 40 FUNC GLOBAL DEFAULT 156 wifi_station_clear_enterprise_password
178: 00000024 103 FUNC GLOBAL DEFAULT 158 wifi_station_set_enterprise_new_password
179: 00000010 40 FUNC GLOBAL DEFAULT 160 wifi_station_clear_enterprise_new_password
180: 00000004 8 FUNC GLOBAL DEFAULT 162 wifi_station_set_enterprise_disable_time_check
181: 00000004 8 FUNC GLOBAL DEFAULT 164 wifi_station_get_enterprise_disable_time_check
182: 00000004 8 FUNC GLOBAL DEFAULT 166 wpa2_enterprise_set_user_get_time
183: 00000004 28 FUNC GLOBAL DEFAULT 168 wpa2_get_time
184: 00000004 36 FUNC GLOBAL DEFAULT 138 wifi_station_set_cert_key
185: 00000004 21 FUNC GLOBAL DEFAULT 140 wifi_station_clear_cert_key
186: 00000024 109 FUNC GLOBAL DEFAULT 146 wifi_station_set_identity
187: 00000010 40 FUNC GLOBAL DEFAULT 148 wifi_station_clear_identity
188: 00000024 109 FUNC GLOBAL DEFAULT 150 wifi_station_set_username
189: 00000010 40 FUNC GLOBAL DEFAULT 152 wifi_station_clear_username
and readelf -t
says this about the section/function I need to modify:
There are 179 section headers, starting at offset 0x96b0:
Section Headers:
[Nr] Name
Type Addr Off Size ES Lk Inf Al
Flags
...
[113] .text.eap_peer_config_deinit
PROGBITS 00000000 000dd0 000868 00 0 0 4
[00000006]: ALLOC, EXEC
[114] .rela.text.eap_peer_config_deinit
RELA 00000000 005d68 000000 0c 176 113 4
[00000040]: INFO LINK
I had to cut the output as I reached the character limit.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
最简单的解决方案是用
.o
使用objcopy-remove section ...-删除 - 重组...
,然后添加您自己的函数,在单独的.o
中实现。这要比编辑现有
.o
“剪接”不同的实现要简单得多,并且似乎满足了您的要求。The simplest solution is to remove the function from the
.o
file withobjcopy --remove-section ... --remove-relocations ...
, and add your own implementation in a separate.o
.That's much simpler than editing existing
.o
to "splice in" different implementation, and appears to satisfy your requirements.