首页
学习
活动
专区
工具
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
您找到你想要的搜索结果了吗?
是的
没有找到

lua调用c语言so动态库--以waf中证书检查为例

​ 需求 在基于nginx做waf开发时,nginx+lua+c动态库是常见的开发模式,在lua生态无法满足需求时,就需要我们在lua代码中调用动态库的方式,进行扩展,下面以lua调用c语言+openssl...动态库的方式,进行判断证书的创建时间和证书的过期时间为例,进行说明 由于lua没有openss sdk做证书检查校验工作,那么就需要我们基于c语言和openssl库些一个so动态库,以供lua调用去判断证书有效时间...c函数从lua获取参数 与lua交互的c函数,所有函数入参参数固定为lua_State *L。...}, {"expire_cert_time", expire_cert_time}, {NULL,NULL} }; c库入口函数 通过luaopen_xxx实现,xxx标识c函数封装so...动态库的名称,该例中动态库名称为libcert.so,固函数名为luaopen_libcert,luaL_register参数为lua_State、动态库名称libcert、上面luaL_Reg lib

1.7K30

linuxso注入与热更新原理

简介 之前写了个hookso的工具,用来操作linux进程的动态链接库行为,本文从so注入与热更新入手,简单讲解一下其中的原理,配合源码阅读效果更佳。...这里要介绍一下linux的ptrace函数。...假如有100个函数,那么就要修改100次,对于导出lua函数比较多的so来说,会很麻烦,特别是类成员函数的名字还很复杂。...所以最好能直接注入一个新的so,重新绑定一下,将map中的地址替换为新的函数地址。 隐含问题 这里有几个问题: 如何拿到lua_State * L?...具体示意图如下: 7.png 最终效果,我们在lua_settop的地方断住,此时可以认为Lua的栈是稳定的,我们只要保证执行后,Lua栈一致即可。

10.4K50

Lua菜鸟①】初识Lua

简介 Lua 是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。...可扩展: Lua提供了非常易于使用的扩展接口和机制:由宿主语言(通常是C或C++)提供这些功能,Lua可以使用它们,就像是本来就内置的功能一样。...独立应用脚本 Web 应用脚本 扩展和数据库插件如:MySQL Proxy 和 MySQL WorkBench 安全系统,如入侵检测系统 以下使用window环境,适合我这样的菜鸟: 第一个Lua程序,...环境配置 大家可以在Lua的官网下载window系统所需要的编译器,然后配置环境即可 将lua命令加入到path中即可,这样就可以利用VS Code直接运行 ? 然后就是给世界打招呼了 ?...菜鸟终于可以写Lua了,明天继续!

2.9K90

反编译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

Lua语言_lua基本语法

1、Lua简介 1.1 Lua是什么 1.2 特性 1.3 应用场景 2、Lua的安装 3、入门程序 4、Lua的基础语法 4.1 注释 4.2 定义变量 4.3 Lua中的数据类型 4.4 流程控制...4.5 循环 4.6 函数 4.7 表 4.8 模块 1、Lua简介 1.1 Lua是什么 Lua [1] 是一个小巧的脚本语言。...2、Lua的安装 有linux版本的安装也有mac版本的安装。。我们采用linux版本的安装,首先我们准备一个linux虚拟机。 安装步骤,在linux系统中执行下面的命令。...curl -R -O http://www.lua.org/ftp/lua-5.3.5.tar.gz tar zxf lua-5.3.5.tar.gz cd lua-5.3.5 make linux...Lua 交互式编程模式可以通过命令 lua -i 或 lua 来启用: lua -i 如下图: (2)脚本式编程 我们可以将 Lua 程序代码保持到一个以 lua 结尾的文件,并执行,该模式称为脚本式编程

3.1K20

【Android 逆向】Android 中常用的 so 动态库 ( libdvm.so | libart.so | libandroid_runtime.so | libandroidfw.so )

文章目录 一、Android 虚拟机涉及的 libdvm.so 动态库 和 libart.so 动态库 二、Android 运行时相关 libandroid_runtime.so 动态库 三、Android...Framework 层 Native 实现相关 libandroidfw.so 动态库 一、Android 虚拟机涉及的 libdvm.so 动态库 和 libart.so 动态库 ---- libdvm.so...; 执行 cp /system/lib/libart.so /sdcard/Pictures 命令 , 将 libart.so 动态库拷贝到 /sdcard/Pictures 目录 , 之后可以将其拷贝到文件系统..., 使用 64 位 IDA 分析该动态库 ; 二、Android 运行时相关 libandroid_runtime.so 动态库 ---- libandroid_runtime.so 是 Android...层的 Native 实现部分的动态库 , 执行 cp /system/lib/libandroidfw.so /sdcard/Pictures 命令 , 将 libandroidfw.so 动态库拷贝到

2.1K20

Linuxlua安装以及和c的交互

lua安装,与c交互的过程记录 lua安装 在此我的机器环境是cenos 6.8 我安装的是lua5.1.4版本 安装lua编译的相关依赖 yum -y install readline-devel...ncurses-devel tar -zxvf lua-5.1.4.tar.gz cd lua-5.1.4 make linux test make install 至此lua模块安装完成...,开始和c语言的交互之旅行吧 网上很多介绍c和lua交互的,但是在linux下面的编译介绍却没找到,在此自己记录下,也方便大家查看 在lua模块安装完成后,可以用命令find / -name ‘lua.h...建立lua所有变量(包括函数)的全局表 lua_getglobal(L,"lua2c_add");// 在lua的全局表查找lua2c_add函数,并压入栈底 lua_pushinteger...llua -lm -ldl Ok啦,经历好几天的迷雾,终于在linux跑起来了,还不太会写博客,就此小小记录下,也希望能带给一些和我一样有迷惑的朋友帮助

74420
领券