首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

linux 什么是SO文件

下面的内容大多都是连接中的,穿插我自己的笔记 牵扯到ELF格式,gcc编译选项待补,简单实用的说明一下,对Linux下的so文件有个实际性的认识。 1.so文件是什么?...———————————————————————- 链接:得到输出文件libs.so gcc -g -shared -Wl,-soname,libs.so -o libs.so libs.o -lc...这个特性使得在Linux下,升级使得共享库的程序和定位错误变得十分容易。   ...在Linux中,应用程序通过使用soname,来指定所希望库的版本,库作者可以通过保留或改变soname来声明,哪些版本是兼容的,这使得程序员摆脱了共享库版本冲突问题的困扰。...下面的还没细看,汗 4.库的初始化,解析: windows下的动态库加载,卸载都会有初始化函数以及卸载函数来完成库的初始化以及资源回收,linux当然也可以实现。

5.5K20
您找到你想要的搜索结果了吗?
是的
没有找到

linuxso注入与热更新原理

简介 之前写了个hookso的工具,用来操作linux进程的动态链接库行为,本文从so注入与热更新入手,简单讲解一下其中的原理,配合源码阅读效果更佳。...这里要介绍一下linux的ptrace函数。...函数查找 我们知道,linux的可执行文件是elf文件格式,动态链接库其实也是elf格式。关于elf,有很多资料,这里简单讲一下elf结构。...(实际上linux各种运行时库的版本也很难受) 为什么不做成机器码直接jmp就好了? 机器码里直接jmp,但是事先不知道目标地址,所以只能填空,这样又不好与正常代码区分。...通过查阅资料可知,linux amd64调用函数,用到的寄存器及含义如下: rdi:参数1 rsi:参数2 rdx:参数3 rcx:参数4 r8:参数5 r9:参数6 rax:函数地址 rbp:栈底地址

10.4K50

高性能网络编程7--tcp连接的内存使用

socket编程方法提供了SO_SNDBUFSO_RCVBUF这样的接口来设置连接的读写缓存,linux上还提供了以下系统级的配置来整体设置服务器上的TCP内存使用,但这些配置看名字却有些互相冲突、概念模糊的感觉...这篇文章主要描述linux内核为了TCP连接上传输的数据是怎样管理读写缓存的。 一、缓存上限是什么? (1)先从应用程序编程时可以设置的SO_SNDBUFSO_RCVBUF说起。...SO_SNDBUFSO_RCVBUF都是个体化的设置,即,只会影响到设置过的连接,而不会对其他连接生效。SO_SNDBUF表示这个连接上的内核写缓存上限。...(2)那么,可以设置的SO_SNDBUFSO_RCVBUF缓存使用上限与实际内存到底有怎样的关系呢?...另外请注意:当我们在编程中对连接设置了SO_SNDBUFSO_RCVBUF,将会使linux内核不再对这样的连接执行自动调整功能! 那么,这个功能到底是怎样起作用的呢?

62010

高性能网络编程7–tcp连接的内存使用

socket编程方法提供了SO_SNDBUFSO_RCVBUF这样的接口来设置连接的读写缓存,linux上还提供了以下系统级的配置来整体设置服务器上的TCP内存使用,但这些配置看名字却有些互相冲突、概念模糊的感觉...这篇文章主要描述linux内核为了TCP连接上传输的数据是怎样管理读写缓存的。 一、缓存上限是什么? (1)先从应用程序编程时可以设置的SO_SNDBUFSO_RCVBUF说起。...SO_SNDBUFSO_RCVBUF都是个体化的设置,即,只会影响到设置过的连接,而不会对其他连接生效。SO_SNDBUF表示这个连接上的内核写缓存上限。...(2)那么,可以设置的SO_SNDBUFSO_RCVBUF缓存使用上限与实际内存到底有怎样的关系呢?...另外请注意:当我们在编程中对连接设置了SO_SNDBUFSO_RCVBUF,将会使linux内核不再对这样的连接执行自动调整功能! 那么,这个功能到底是怎样起作用的呢?

1.1K40

高性能网络编程7--tcp连接的内存使用

socket编程方法提供了SO_SNDBUFSO_RCVBUF这样的接口来设置连接的读写缓存,linux上还提供了以下系统级的配置来整体设置服务器上的TCP内存使用,但这些配置看名字却有些互相冲突、概念模糊的感觉...这篇文章主要描述linux内核为了TCP连接上传输的数据是怎样管理读写缓存的。 一、缓存上限是什么? (1)先从应用程序编程时可以设置的SO_SNDBUFSO_RCVBUF说起。...SO_SNDBUFSO_RCVBUF都是个体化的设置,即,只会影响到设置过的连接,而不会对其他连接生效。SO_SNDBUF表示这个连接上的内核写缓存上限。...(2)那么,可以设置的SO_SNDBUFSO_RCVBUF缓存使用上限与实际内存到底有怎样的关系呢?...另外请注意:当我们在编程中对连接设置了SO_SNDBUFSO_RCVBUF,将会使linux内核不再对这样的连接执行自动调整功能! 那么,这个功能到底是怎样起作用的呢?

1.4K60

高性能网络编程7--tcp连接的内存使用

socket编程方法提供了SO_SNDBUFSO_RCVBUF这样的接口来设置连接的读写缓存,linux上还提供了以下系统级的配置来整体设置服务器上的TCP内存使用,但这些配置看名字却有些互相冲突、概念模糊的感觉...这篇文章主要描述linux内核为了TCP连接上传输的数据是怎样管理读写缓存的。 一、缓存上限是什么? (1)先从应用程序编程时可以设置的SO_SNDBUFSO_RCVBUF说起。...SO_SNDBUFSO_RCVBUF都是个体化的设置,即,只会影响到设置过的连接,而不会对其他连接生效。SO_SNDBUF表示这个连接上的内核写缓存上限。...(2)那么,可以设置的SO_SNDBUFSO_RCVBUF缓存使用上限与实际内存到底有怎样的关系呢?...另外请注意:当我们在编程中对连接设置了SO_SNDBUFSO_RCVBUF,将会使linux内核不再对这样的连接执行自动调整功能! 那么,这个功能到底是怎样起作用的呢?

1.9K91

setsockopt与getsockopt

SO_SNDBUF,设置发送缓冲区的大小。 发送缓冲区的大小是有上下限的,其上限为256 * (sizeof(struct sk_buff) + 256),下限为2048字节。...SO_PRIORITY,设置在套接字发送的所有包的协议定义优先权。Linux通过这一值来排列网络队列。 这个值在0到6之间(包括0和6),由option_value指定。...SO_RCVLOWAT,设置接收数据前的缓冲区内的最小字节数。 在Linux中,缓冲区内的最小字节数是固定的,为1。即将sock->sk->sk_rcvlowat固定赋值为1。...(const char*)&nRecvBuf,sizeof(int)); //发送缓冲区 int nSendBuf=32*1024;//设置为32K setsockopt (s,SOL_SOCKET,SO_SNDBUF...如果在发送数据的时,希望不经历由系统缓冲区到socket缓冲区的拷贝而影响 程序的性能: int nZero=0; setsockopt (socket,SOL_S0CKET,SO_SNDBUF,(char

1.1K30

反编译so库破解so

所以想破解so,将对i2c num 的大小改大点。...from=sec (2)实战预热 https://blog.csdn.net/m0_37766442/article/details/72903385 一、反编译so 使用IDA打开so 根据log信息或猜测查找需要破解的大致位置...我们看到上方有一个 loc_82036,这代表一段代码的标签处,类似C里面goto 的标签,那肯定其他地方会向这个标签做跳转 选中这个标签,右击 点击红框选项,就会列出所有向此处跳转的地方,这个so,...点中CMP R0,#6的地址处,然后切换到HEX View Hex VIEW 可以切换数据格式,64位so用4字节格式,32位so用2字节格式 我们需要将CMP R0,#6 改成CMP R0,#8...,跳转到这一地址 我们将06改成08保存 替换so,不再打印那个错误log,读正常了,但是写还有问题,同样的方法修改I2C写操作里的值,问题解决 发布者:全栈程序员栈长,转载请注明出处:https:

4.3K30

直击案发现场!TCP 10 倍延迟的真相是?

如果调用setsockopt()设置了socket选项SO_SNDBUF,将关闭发送端缓冲的自动调节机制,tcp_wmem将被忽略,SO_SNDBUF的最大值由net.core.wmem_max限制。...(这个是3.1的Linux,应用SO_RCVBUF设置的是8K,用一半来做接收窗口)。...总结 一般来说绝对不要在程序中手工设置SO_SNDBUFSO_RCVBUF,内核自动调整比你做的要好; SO_SNDBUF一般会比发送滑动窗口要大,因为发送出去并且ack了的才能从SO_SNDBUF中释放...; TCP接收窗口跟SO_RCVBUF关系很复杂; SO_RCVBUF太小并且rtt很大的时候会严重影响性能; 接收窗口比发送窗口复杂多了; 发送窗口/SO_SNDBUF--发送仓库,带宽/拥塞窗口--...总之记住一句话:不要设置socket的SO_SNDBUFSO_RCVBUF。

1K21
领券