linux下何谓.so文件

本文介绍了Linux下的.so文件,即动态链接库的概念及其用途。详细讲述了.so文件的编译过程及如何将动态库链接到程序中,同时提供了具体的命令实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

linux下何谓.so文件:1. 用过windows的同学应该都知道 .dll文件吧, 这二者有什么共通之处呢,其实 .so文件就跟.dll文件差不多.//
2.一般来说.so文件就是常说的动态链接库, 都是C或C++编译出来的。与Java比较就是:它通常是用的Class文件(字节码).//
3.Linux下的.so文件时不能直接运行的,一般来讲,.so文件称为共享库.//
4.那么.so文件是怎么用的呢?
for example:(1)动态库的编译
这里有一个头文件:so_test.h,三个.c文件:test_a.c、test_b.c、test_c.c,我们将这几个文件编译成一个动态库:libtest.so。
命令:$ gcc test_a.c test_b.c test_c.c -fPIC -shared -o libtest.so 
参考2:都是由C或C++编译出来的
-shared 该选项指定生成动态连接库(让连接器生成T类型的导出符号表,有时候也生成弱连接W类型的导出符号),不用该标志外部程序无法连接。相当于一个可执行文件
-fPIC:表示编译为位置独立的代码,不用此选项的话编译后的代码是位置相关的所以动态载入时是通过代码拷贝的方式来满足不同进程的需要,而不能达到真正代码段共享的目的。
(2)动态库的链接
这里有个程序源文件 test.c 与动态库 libtest.so 链接生成执行文件 test:
命令:$ gcc test.c -L. -ltest -o test
注:测试是否动态连接,如果列出libtest.so,那么应该是连接正常了
-L.:表示要连接的库在当前目录中
-ltest:编译器查找动态连接库时有隐含的命名规则,即在给出的名字前面加上lib,后面加上.so来确定库的名称
命令:$ ldd test
(注:执行test,可以看到它是如何调用动态库中的函数的。

Ok, That's all !
### 使用 Hook 技术于 Kali Linux 中进行渗透测试或安全工具开发 在讨论如何利用 Hook 技术之前,有必要先理解何谓 Hook 及其工作原理。Hook 是一种允许拦截并处理函数调用的技术,在操作系统层面可以改变程序的行为或者获取额外的信息。 对于 Kali Linux 而言,存在多种方式实现 Hook 功能: #### 1. 用户空间中的 Library Injection 和 Function Hooking 通过动态链接库注入(Library Injection),可以在目标进程中加载自定义的共享对象文件 (.so),从而执行任意代码。这通常涉及修改环境变量 `LD_PRELOAD` 或者使用特定工具来完成注入过程[^3]。 一旦成功注入了一个恶意/定制化的 .so 文件到另一个应用程序里,则可以通过重写某些标准 C 库函数(比如 open(), read() 等)达到监视甚至控制该应用的目的——这就是所谓的 function hooking[^4]。 ```bash export LD_PRELOAD=/path/to/malicious.so ./target_application ``` #### 2. 内核模块级别的 System Call Table Hooking 更深入一点的方法是在内核级别操作 system call table 来挂钩系统调用。这种方法需要编写专门针对当前运行内核版本设计好的 kernel module (ko) 并将其编译成二进制形式以便后续加载至内存中去替换原有的 syscall entry point 地址指向新的 handler routine 实现逻辑上的劫持行为[^5]。 不过值得注意的是这种做法风险极高因为任何错误都可能导致整个系统的崩溃因此除非绝对必要否则不建议轻易尝试此类高级技巧。 #### 3. 利用现有框架简化 Hook 的创建与管理 为了降低复杂度以及提高效率,许多开发者会选择基于已有的开源项目如 Frida、Xposed Framework 或 Cydia Substrate 这样的平台来进行快速原型制作或是实际部署生产环境中使用的 hooks 。这些工具提供了易于理解和上手 API 接口使得即使是初学者也能轻松掌握基本概念进而开展相关研究活动[^6]。 Frida 特别适合用来做黑盒分析因为它支持远程调试并且能够跨多个平台无缝切换;而 Xposed 主要面向 Android 设备提供了一套完整的插件生态系统让使用者无需重新启动就能即时生效所作更改。 综上所述,在 Kali Linux 上实施 Hook 不仅限于上述几种途径而已还有更多可能性等待探索发现。重要的是根据具体需求选择合适的方式方法确保既满足功能要求又兼顾安全性考量。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值