Mac查看so文件的具體信息

了解ELF的文件格式可通過SO(ELF)文件格式詳解

通過命令greadelf -a xxx.so和gobjdump -x xxx.so以及readelf這三個命令得到so的信息
我個人常用readelf命令,具體指令的使用可參考readelf命令使用說明

命令安裝和配置

運行下述命令:
brew update
brew install binutils

執(zhí)行安裝命令 brew install binutils,控制臺會打印如下信息
If you need to have binutils first in your PATH run:
echo 'export PATH="/usr/local/opt/binutils/bin:$PATH"' >> ~/.bash_profile

配置Mac環(huán)境變量即可
vi ~/.bash_profile 添加path即可
source ~/.bash_profile 命令生效

執(zhí)行結(jié)果預(yù)覽

以armeabi-v7a包下的聲網(wǎng) libagora-rtc-sdk-jni.so 為例

具體指令可安裝之后輸入對應(yīng)的命令,查看命令行提示自行選用嚎货,個人常用

-h --file-header Display the ELF file header
-a --all Equivalent to: -h -l -S -s -r -d -V -A -I

readelf -h libagora-rtc-sdk-jni.so

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: DYN (Shared object file)
Machine: ARM
Version: 0x1
Entry point address: 0x0
Start of program headers: 52 (bytes into file)
Start of section headers: 9480288 (bytes into file)
Flags: 0x5000200, Version5 EABI, soft-float ABI
Size of this header: 52 (bytes)
Size of program headers: 32 (bytes)
Number of program headers: 8
Size of section headers: 40 (bytes)
Number of section headers: 28
Section header string table index: 27

greadelf -a libagora-rtc-sdk-jni.so

ELF Header:

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: DYN (Shared object file)
Machine: ARM (x86的此處為 Intel 80386)
Version: 0x1
Entry point address: 0x0
Start of program headers: 52 (bytes into file)
Start of section headers: 9480288 (bytes into file)
Flags: 0x5000200, Version5 EABI, soft-float ABI
Size of this header: 52 (bytes)
Size of program headers: 32 (bytes)
Number of program headers: 8
Size of section headers: 40 (bytes)
Number of section headers: 28
Section header string table index: 27

Section Headers:

Section Headers:
[Nr] Name Type Addr Off Size ES Flg Lk Inf Al
[ 0] NULL 00000000 000000 000000 00 0 0 0
[ 1] .note.androi[...] NOTE 00000134 000134 000098 00 A 0 0 4
[ 2] .note.gnu.bu[...] NOTE 000001cc 0001cc 000024 00 A 0 0 4
[ 3] .dynsym DYNSYM 000001f0 0001f0 00d440 10 A 4 1 4
[ 4] .dynstr STRTAB 0000d630 00d630 01fb31 00 A 0 0 1
[ 5] .hash HASH 0002d164 02d164 00552c 04 A 3 0 4
[ 6] .gnu.version VERSYM 00032690 032690 001a88 02 A 3 0 2
[ 7] .gnu.version_d VERDEF 00034118 034118 00001c 00 A 4 1 4
[ 8] .gnu.version_r VERNEED 00034134 034134 000060 00 A 4 3 4
[ 9] .rel.dyn REL 00034194 034194 04ceb8 08 A 3 0 4
[10] .rel.plt REL 0008104c 08104c 000a68 08 AI 3 21 4
[11] .plt PROGBITS 00081ab4 081ab4 000fb0 00 AX 0 0 4
[12] .text PROGBITS 00082a70 082a70 5b579c 00 AX 0 0 16
[13] .ARM.exidx ARM_EXIDX 0063820c 63820c 0433e0 08 AL 12 0 4
[14] .ARM.extab PROGBITS 0067b5ec 67b5ec 04b270 00 A 0 0 4
[15] .rodata PROGBITS 006c6860 6c6860 1360fc 00 A 0 0 16
[16] .data.rel.ro[...] PROGBITS 007fdde0 7fcde0 000b24 00 WA 0 0 8
[17] .fini_array FINI_ARRAY 007fe904 7fd904 00000c 04 WA 0 0 4
[18] .data.rel.ro PROGBITS 007fe910 7fd910 046970 00 WA 0 0 16
[19] .init_array INIT_ARRAY 00845280 844280 000150 04 WA 0 0 4
[20] .dynamic DYNAMIC 008453d0 8443d0 000140 08 WA 4 0 4
[21] .got PROGBITS 00845514 844514 002aec 00 WA 0 0 4
[22] .data PROGBITS 00848000 847000 0c357c 00 WA 0 0 16
[23] .bss NOBITS 0090b580 90a57c 122718 00 WA 0 0 16
[24] .comment PROGBITS 00000000 90a57c 000163 01 MS 0 0 1
[25] .note.gnu.go[...] NOTE 00000000 90a6e0 00001c 00 0 0 4
[26] .ARM.attributes ARM_ATTRIBUTES 00000000 90a6fc 00003a 00 0 0 1
[27] .shstrtab STRTAB 00000000 90a736 00012a 00 0 0 1
Key to Flags:
W (write), A (alloc), X (execute), M (merge), S (strings), I (info),
L (link order), O (extra OS processing required), G (group), T (TLS),
C (compressed), x (unknown), o (OS specific), E (exclude),
y (purecode), p (processor specific)

There are no section groups in this file.

gobjdump -x libagora-rtc-sdk-jni.so

ibagora-rtc-sdk.so: file format elf32-littlearm
libagora-rtc-sdk.so
architecture: armv7, flags 0x00000150:
HAS_SYMS, DYNAMIC, D_PAGED
start address 0x00000000

Program Header:
PHDR off 0x00000034 vaddr 0x00000034 paddr 0x00000034 align 22
filesz 0x00000100 memsz 0x00000100 flags r--
LOAD off 0x00000000 vaddr 0x00000000 paddr 0x00000000 align 2
12
filesz 0x007fc95c memsz 0x007fc95c flags r-x
LOAD off 0x007fcde0 vaddr 0x007fdde0 paddr 0x007fdde0 align 212
filesz 0x0010d79c memsz 0x0022feb8 flags rw-
DYNAMIC off 0x008443d0 vaddr 0x008453d0 paddr 0x008453d0 align 2
2
filesz 0x00000140 memsz 0x00000140 flags rw-
NOTE off 0x00000134 vaddr 0x00000134 paddr 0x00000134 align 22
filesz 0x000000bc memsz 0x000000bc flags r--
STACK off 0x00000000 vaddr 0x00000000 paddr 0x00000000 align 2
4
filesz 0x00000000 memsz 0x00000000 flags rw-
0x70000001 off 0x0063820c vaddr 0x0063820c paddr 0x0063820c align 22
filesz 0x000433e0 memsz 0x000433e0 flags r--
RELRO off 0x007fcde0 vaddr 0x007fdde0 paddr 0x007fdde0 align 2
4
filesz 0x0004a220 memsz 0x0004a220 flags rw-

Dynamic Section:
PLTGOT 0x00847ac0
PLTRELSZ 0x00000a68
JMPREL 0x0008104c
PLTREL 0x00000011
REL 0x00034194
RELSZ 0x0004ceb8
RELENT 0x00000008
RELCOUNT 0x0000999e
SYMTAB 0x000001f0
SYMENT 0x00000010
STRTAB 0x0000d630
STRSZ 0x0001fb31
HASH 0x0002d164
NEEDED libOpenSLES.so
NEEDED libEGL.so
NEEDED libGLESv1_CM.so
NEEDED libGLESv2.so
NEEDED libdl.so
NEEDED libm.so
NEEDED liblog.so
NEEDED libc.so
SONAME libagora-rtc-sdk.so
FINI_ARRAY 0x007fe904
FINI_ARRAYSZ 0x0000000c
INIT_ARRAY 0x00845280
INIT_ARRAYSZ 0x00000150
SYMBOLIC 0x00000000
FLAGS 0x0000000a
FLAGS_1 0x00000001
VERSYM 0x00032690
VERDEF 0x00034118
VERDEFNUM 0x00000001
VERNEED 0x00034134
VERNEEDNUM 0x00000003

Version definitions:
1 0x01 0x0e4641cf libagora-rtc-sdk.so

Version References:
required from libc.so:
0x00050d63 0x00 02 LIBC
required from libm.so:
0x00050d63 0x00 03 LIBC
required from libdl.so:
0x00050d63 0x00 04 LIBC
private flags = 0x5000200: [Version5 EABI] [soft-float ABI]

Sections:
Idx Name Size VMA LMA File off Algn
0 .note.android.ident 00000098 00000134 00000134 00000134 22
CONTENTS, ALLOC, LOAD, READONLY, DATA
1 .note.gnu.build-id 00000024 000001cc 000001cc 000001cc 2
2
CONTENTS, ALLOC, LOAD, READONLY, DATA
2 .dynsym 0000d440 000001f0 000001f0 000001f0 22
CONTENTS, ALLOC, LOAD, READONLY, DATA
3 .dynstr 0001fb31 0000d630 0000d630 0000d630 2
0
CONTENTS, ALLOC, LOAD, READONLY, DATA
4 .hash 0000552c 0002d164 0002d164 0002d164 22
CONTENTS, ALLOC, LOAD, READONLY, DATA
5 .gnu.version 00001a88 00032690 00032690 00032690 2
1
CONTENTS, ALLOC, LOAD, READONLY, DATA
6 .gnu.version_d 0000001c 00034118 00034118 00034118 22
CONTENTS, ALLOC, LOAD, READONLY, DATA
7 .gnu.version_r 00000060 00034134 00034134 00034134 2
2
CONTENTS, ALLOC, LOAD, READONLY, DATA
8 .rel.dyn 0004ceb8 00034194 00034194 00034194 22
CONTENTS, ALLOC, LOAD, READONLY, DATA
9 .rel.plt 00000a68 0008104c 0008104c 0008104c 2
2
CONTENTS, ALLOC, LOAD, READONLY, DATA
10 .plt 00000fb0 00081ab4 00081ab4 00081ab4 22
CONTENTS, ALLOC, LOAD, READONLY, CODE
11 .text 005b579c 00082a70 00082a70 00082a70 2
4
CONTENTS, ALLOC, LOAD, READONLY, CODE
12 .ARM.exidx 000433e0 0063820c 0063820c 0063820c 22
CONTENTS, ALLOC, LOAD, READONLY, DATA
13 .ARM.extab 0004b270 0067b5ec 0067b5ec 0067b5ec 2
2
CONTENTS, ALLOC, LOAD, READONLY, DATA
14 .rodata 001360fc 006c6860 006c6860 006c6860 24
CONTENTS, ALLOC, LOAD, READONLY, DATA
15 .data.rel.ro.local 00000b24 007fdde0 007fdde0 007fcde0 2
3
CONTENTS, ALLOC, LOAD, DATA
16 .fini_array 0000000c 007fe904 007fe904 007fd904 22
CONTENTS, ALLOC, LOAD, DATA
17 .data.rel.ro 00046970 007fe910 007fe910 007fd910 2
4
CONTENTS, ALLOC, LOAD, DATA
18 .init_array 00000150 00845280 00845280 00844280 22
CONTENTS, ALLOC, LOAD, DATA
19 .dynamic 00000140 008453d0 008453d0 008443d0 2
2
CONTENTS, ALLOC, LOAD, DATA
20 .got 00002aec 00845514 00845514 00844514 22
CONTENTS, ALLOC, LOAD, DATA
21 .data 000c357c 00848000 00848000 00847000 2
4
CONTENTS, ALLOC, LOAD, DATA
22 .bss 00122718 0090b580 0090b580 0090a57c 24
ALLOC
23 .comment 00000163 00000000 00000000 0090a57c 2
0
CONTENTS, READONLY
24 .note.gnu.gold-version 0000001c 00000000 00000000 0090a6e0 22
CONTENTS, READONLY, OCTETS
25 .ARM.attributes 0000003a 00000000 00000000 0090a6fc 2
0
CONTENTS, READONLY
SYMBOL TABLE:
no symbols

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末楚堤,一起剝皮案震驚了整個濱河市施逾,隨后出現(xiàn)的幾起案子胧后,更是在濱河造成了極大的恐慌,老刑警劉巖招狸,帶你破解...
    沈念sama閱讀 216,470評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件兄世,死亡現(xiàn)場離奇詭異啼辣,居然都是意外死亡,警方通過查閱死者的電腦和手機御滩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評論 3 392
  • 文/潘曉璐 我一進店門鸥拧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來党远,“玉大人,你說我怎么就攤上這事富弦」涤椋” “怎么了?”我有些...
    開封第一講書人閱讀 162,577評論 0 353
  • 文/不壞的土叔 我叫張陵腕柜,是天一觀的道長济似。 經(jīng)常有香客問我,道長盏缤,這世上最難降的妖魔是什么砰蠢? 我笑而不...
    開封第一講書人閱讀 58,176評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮唉铜,結(jié)果婚禮上台舱,老公的妹妹穿的比我還像新娘。我一直安慰自己潭流,他們只是感情好竞惋,可當(dāng)我...
    茶點故事閱讀 67,189評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著幻枉,像睡著了一般碰声。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上熬甫,一...
    開封第一講書人閱讀 51,155評論 1 299
  • 那天,我揣著相機與錄音蔓罚,去河邊找鬼椿肩。 笑死,一個胖子當(dāng)著我的面吹牛豺谈,可吹牛的內(nèi)容都是我干的郑象。 我是一名探鬼主播,決...
    沈念sama閱讀 40,041評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼茬末,長吁一口氣:“原來是場噩夢啊……” “哼厂榛!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起丽惭,我...
    開封第一講書人閱讀 38,903評論 0 274
  • 序言:老撾萬榮一對情侶失蹤击奶,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后责掏,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體柜砾,經(jīng)...
    沈念sama閱讀 45,319評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,539評論 2 332
  • 正文 我和宋清朗相戀三年换衬,在試婚紗的時候發(fā)現(xiàn)自己被綠了痰驱。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片证芭。...
    茶點故事閱讀 39,703評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖担映,靈堂內(nèi)的尸體忽然破棺而出废士,到底是詐尸還是另有隱情,我是刑警寧澤蝇完,帶...
    沈念sama閱讀 35,417評論 5 343
  • 正文 年R本政府宣布湃密,位于F島的核電站,受9級特大地震影響四敞,放射性物質(zhì)發(fā)生泄漏泛源。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,013評論 3 325
  • 文/蒙蒙 一忿危、第九天 我趴在偏房一處隱蔽的房頂上張望达箍。 院中可真熱鬧,春花似錦铺厨、人聲如沸缎玫。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,664評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽赃磨。三九已至,卻和暖如春洼裤,著一層夾襖步出監(jiān)牢的瞬間邻辉,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,818評論 1 269
  • 我被黑心中介騙來泰國打工腮鞍, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留值骇,地道東北人。 一個月前我還...
    沈念sama閱讀 47,711評論 2 368
  • 正文 我出身青樓移国,卻偏偏與公主長得像吱瘩,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子迹缀,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,601評論 2 353

推薦閱讀更多精彩內(nèi)容