分析linux中动态库so文件的常用方法


风晓
风晓 2024-01-06 11:22:04 50949 赞同 0 反对 0
分类: 资源
在linux系统中,我们经常会遇到各种各样的动态库文件,常见的是.so后缀,那么我们应该如何分析这些文件的用途和作用呢?毕竟我们不能一知半解的“搞事情”。

正文
查看文件属性
首先,我们从整体上了解一下该文件的基础属性,此时可以使用file命令,示例用法如下图所示:


通过执行结果,我们可以知道这是一个32位的动态库文件。

查看依赖文件
一般来说,动态库文件都会依赖其他动态库,具体情况还要看该动态库文件的作用和功能,此时可以使用ldd命令,示例用法如下图所示:


可以看出test.so文件依赖了另外7个文件。

此外,我们可以使用readelf命令实现相同的目的,示例用法如下图所示:


查看符号表
查看so动态库的符号表和导出方法列表,可以使用nm命令,示例用法如下图所示:


查看汇编信息
如果我们需要查看某个方法的汇编实现,可以使用objdump命令,其实它也具有nm命令的能力,示例命令如下:

objdump -d test.so
输出结果比较多,下面只展示部分结果:

00000000000e4150 <_ZN3fmt8internal13FormatterBase10do_get_argEjRPKc>:
e4150:55 push %rbp
e4151:48 89 f8 mov %rdi,%rax
e4154:49 89 c8 mov %rcx,%r8
e4157:48 8b 3e mov (%rsi),%rdi
e415a:48 89 e5 mov %rsp,%rbp
e415d:49 89 fa mov %rdi,%r10
e4160:49 c1 ea 3c shr $0x3c,%r10
e4164:83 fa 0f cmp $0xf,%edx
e4167:0f 87 83 00 00 00 ja e41f0 <_ZN3fmt8internal13FormatterBase10do_get_argEjRPKc+0xa0>
e416d:8d 0c 95 00 00 00 00 lea 0x0(,%rdx,4),%ecx
e4174:41 b9 0f 00 00 00 mov $0xf,%r9d
e417a:49 d3 e1 shl %cl,%r9
e417d:4c 21 cf and %r9,%rdi
e4180:48 d3 ef shr %cl,%rdi
e4183:85 ff test %edi,%edi
e4185:74 22 je e41a9 <_ZN3fmt8internal13FormatterBase10do_get_argEjRPKc+0x59>
e4187:4d 85 d2 test %r10,%r10
e418a:89 d2 mov %edx,%edx
e418c:0f 84 d6 00 00 00 je e4268 <_ZN3fmt8internal13FormatterBase10do_get_argEjRPKc+0x118>
e4192:48 c1 e2 05 shl $0x5,%rdx
e4196:48 03 56 08 add 0x8(%rsi),%rdx
e419a:48 8b 0a mov (%rdx),%rcx
e419d:48 8b 52 08 mov 0x8(%rdx),%rdx
e41a1:48 89 4d e0 mov %rcx,-0x20(%rbp)
e41a5:48 89 55 e8 mov %rdx,-0x18(%rbp)
e41a9:89 7d f0 mov %edi,-0x10(%rbp)
e41ac:48 8b 55 e0 mov -0x20(%rbp),%rdx
e41b0:48 89 10 mov %rdx,(%rax)
e41b3:48 8b 55 e8 mov -0x18(%rbp),%rdx
e41b7:48 89 50 08 mov %rdx,0x8(%rax)
e41bb:48 8b 55 f0 mov -0x10(%rbp),%rdx
e41bf:48 89 50 10 mov %rdx,0x10(%rax)
e41c3:48 8b 55 f8 mov -0x8(%rbp),%rdx
e41c7:48 89 50 18 mov %rdx,0x18(%rax)
e41cb:8b 50 10 mov 0x10(%rax),%edx
e41ce:85 d2 test %edx,%edx
e41d0:74 75 je e4247 <_ZN3fmt8internal13FormatterBase10do_get_argEjRPKc+0xf7>
e41d2:83 fa 01 cmp $0x1,%edx
e41d5:75 17 jne e41ee <_ZN3fmt8internal13FormatterBase10do_get_argEjRPKc+0x9e>
e41d7:48 8b 10 mov (%rax),%rdx
e41da:48 8b 0a mov (%rdx),%rcx
e41dd:48 89 08 mov %rcx,(%rax)
e41e0:48 8b 4a 08 mov 0x8(%rdx),%rcx
e41e4:8b 52 10 mov 0x10(%rdx),%edx
e41e7:48 89 48 08 mov %rcx,0x8(%rax)
e41eb:89 50 10 mov %edx,0x10(%rax)
e41ee:5d pop %rbp
e41ef:c3 retq
e41f0:4d 85 d2 test %r10,%r10
e41f3:74 63 je e4258 <_ZN3fmt8internal13FormatterBase10do_get_argEjRPKc+0x108>
e41f5:48 8b 7e 08 mov 0x8(%rsi),%rdi
e41f9:be 10 00 00 00 mov $0x10,%esi
e41fe:66 90 xchg %ax,%ax
e4200:89 f1 mov %esi,%ecx
e4202:48 c1 e1 05 shl $0x5,%rcx
e4206:48 01 f9 add %rdi,%rcx
e4209:44 8b 49 10 mov 0x10(%rcx),%r9d
e420d:45 85 c9 test %r9d,%r9d
e4210:74 66 je e4278 <_ZN3fmt8internal13FormatterBase10do_get_argEjRPKc+0x128>
e4212:83 c6 01 add $0x1,%esi
e4215:39 f2 cmp %esi,%edx
e4217:73 e7 jae e4200 <_ZN3fmt8internal13FormatterBase10do_get_argEjRPKc+0xb0>
e4219:89 d2 mov %edx,%edx
e421b:48 c1 e2 05 shl $0x5,%rdx
e421f:48 01 fa add %rdi,%rdx
e4222:48 8b 0a mov (%rdx),%rcx
e4225:48 89 08 mov %rcx,(%rax)
e4228:48 8b 4a 08 mov 0x8(%rdx),%rcx
e422c:48 89 48 08 mov %rcx,0x8(%rax)
e4230:48 8b 4a 10 mov 0x10(%rdx),%rcx
e4234:48 8b 52 18 mov 0x18(%rdx),%rdx
e4238:48 89 48 10 mov %rcx,0x10(%rax)
e423c:48 89 50 18 mov %rdx,0x18(%rax)
e4240:8b 50 10 mov 0x10(%rax),%edx
e4243:85 d2 test %edx,%edx
e4245:75 8b jne e41d2 <_ZN3fmt8internal13FormatterBase10do_get_argEjRPKc+0x82>
e4247:48 8d 3d ad 9a 0f 00 lea 0xf9aad(%rip),%rdi # 1ddcfb <_fini+0x63f>
e424e:49 89 38 mov %rdi,(%r8)
e4251:5d pop %rbp
e4252:c3 retq
e4253:0f 1f 44 00 00 nopl 0x0(%rax,%rax,1)
e4258:c7 45 f0 00 00 00 00 movl $0x0,-0x10(%rbp)
e425f:e9 48 ff ff ff jmpq e41ac <_ZN3fmt8internal13FormatterBase10do_get_argEjRPKc+0x5c>
e4264:0f 1f 40 00 nopl 0x0(%rax)
e4268:48 c1 e2 04 shl $0x4,%rdx
e426c:48 03 56 08 add 0x8(%rsi),%rdx
e4270:e9 25 ff ff ff jmpq e419a <_ZN3fmt8internal13FormatterBase10do_get_argEjRPKc+0x4a>
e4275:0f 1f 00 nopl (%rax)
e4278:48 8b 11 mov (%rcx),%rdx
e427b:48 89 10 mov %rdx,(%rax)
e427e:48 8b 51 08 mov 0x8(%rcx),%rdx
e4282:48 89 50 08 mov %rdx,0x8(%rax)
e4286:48 8b 51 10 mov 0x10(%rcx),%rdx
e428a:48 89 50 10 mov %rdx,0x10(%rax)
e428e:48 8b 51 18 mov 0x18(%rcx),%rdx
e4292:48 89 50 18 mov %rdx,0x18(%rax)
e4296:e9 30 ff ff ff jmpq e41cb <_ZN3fmt8internal13FormatterBase10do_get_argEjRPKc+0x7b>
e429b:0f 1f 44 00 00 nopl 0x0(%rax,%rax,1)

00000000000e42a0 <_ZN6spdlog7details7log_msgD1Ev>:
e42a0:55 push %rbp
e42a1:48 89 e5 mov %rsp,%rbp
e42a4:41 55 push %r13
e42a6:41 54 push %r12
e42a8:53 push %rbx
e42a9:48 89 fb mov %rdi,%rbx
e42ac:48 83 ec 08 sub $0x8,%rsp
e42b0:4c 8b 2d e9 a4 35 00 mov 0x35a4e9(%rip),%r13 # 43e7a0 <_ZTVN3fmt17BasicMemoryWriterIcSaIcEEE@@Base+0x9078>
e42b7:4c 8b 25 da a3 35 00 mov 0x35a3da(%rip),%r12 # 43e698 <_ZTVN3fmt8internal12MemoryBufferIcLm500ESaIcEEE@@Base+0x8f98>
e42be:49 8d 45 10 lea 0x10(%r13),%rax
e42c2:48 89 87 48 02 00 00 mov %rax,0x248(%rdi)
e42c9:49 8d 44 24 10 lea 0x10(%r12),%rax
e42ce:48 89 87 58 02 00 00 mov %rax,0x258(%rdi)
e42d5:48 8b bf 60 02 00 00 mov 0x260(%rdi),%rdi
e42dc:48 8d 83 78 02 00 00 lea 0x278(%rbx),%rax
e42e3:48 39 c7 cmp %rax,%rdi
e42e6:74 05 je e42ed <_ZN6spdlog7details7log_msgD1Ev+0x4d>
e42e8:e8 53 01 ff ff callq d4440 <_ZdlPv@plt>
e42ed:49 8d 45 10 lea 0x10(%r13),%rax
e42f1:48 8b 7b 38 mov 0x38(%rbx),%rdi
e42f5:48 83 c3 50 add $0x50,%rbx
e42f9:48 89 43 d0 mov %rax,-0x30(%rbx)
e42fd:49 8d 44 24 10 lea 0x10(%r12),%rax
e4302:48 89 43 e0 mov %rax,-0x20(%rbx)
e4306:48 39 df cmp %rbx,%rdi
e4309:74 15 je e4320 <_ZN6spdlog7details7log_msgD1Ev+0x80>
e430b:48 83 c4 08 add $0x8,%rsp
e430f:5b pop %rbx
e4310:41 5c pop %r12
e4312:41 5d pop %r13
e4314:5d pop %rbp
e4315:e9 26 01 ff ff jmpq d4440 <_ZdlPv@plt>
e431a:66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1)
e4320:48 83 c4 08 add $0x8,%rsp
e4324:5b pop %rbx
e4325:41 5c pop %r12
e4327:41 5d pop %r13
e4329:5d pop %rbp
e432a:c3 retq
e432b:0f 1f 44 00 00 nopl 0x0(%rax,%rax,1)

如果您发现该资源为电子书等存在侵权的资源或对该资源描述不正确等,可点击“私信”按钮向作者进行反馈;如作者无回复可进行平台仲裁,我们会在第一时间进行处理!

评价 0 条
风晓L1
粉丝 1 资源 2038 + 关注 私信
最近热门资源
银河麒麟桌面操作系统备份用户数据  125
统信桌面专业版【全盘安装UOS系统】介绍  119
银河麒麟桌面操作系统安装佳能打印机驱动方法  111
银河麒麟桌面操作系统 V10-SP1用户密码修改  105
最近下载排行榜
银河麒麟桌面操作系统备份用户数据 0
统信桌面专业版【全盘安装UOS系统】介绍 0
银河麒麟桌面操作系统安装佳能打印机驱动方法 0
银河麒麟桌面操作系统 V10-SP1用户密码修改 0
作者收入月榜
1

prtyaa 收益393.62元

2

zlj141319 收益218元

3

1843880570 收益214.2元

4

IT-feng 收益209.03元

5

风晓 收益208.24元

6

777 收益172.71元

7

Fhawking 收益106.6元

8

信创来了 收益105.84元

9

克里斯蒂亚诺诺 收益91.08元

10

技术-小陈 收益79.5元

请使用微信扫码

加入交流群

请使用微信扫一扫!