1.LibFuzzer workshop学习之路(final)
2.Nginx源码交叉编译-保姆级移植ARM
3.Nginx系列:依赖安装(pcre,源码zlib,openssl)(2)
4.Nginx编译所需基本库pcre、zlib、分析openssl
LibFuzzer workshop学习之路(final)
libfuzzer workshop是源码一次深入的fuzzing学习之旅,本文精选最后两个案例 - 针对re2和pcre2的分析fuzz,深入探讨了链接库选择、源码插桩编译参数设置及max_len对结果的分析sandvxposed源码影响。
以pcre2为例,源码作为Perl兼容的分析正则表达式库,其在许多开源软件中被广泛使用。源码进行源码编译时,分析需注意通过特定插桩参数优化编译效率。源码设置如fuzzer-no-link参数来确保不链接主符号,分析尤其在处理大型项目时,源码能显著提升fuzz效率。分析
编译过程中,源码根据pcre2的特性添加了如--with-match-limit和--with-match-limit-recursion限制匹配操作的资源使用和递归深度,以及--enable-never-backslash-C禁用特定正则模式,优化匹配过程。之后,分析提供的网页源码界面命令harness实现逻辑,结合参数优化执行,很快得到了crash现象。研究崩溃发生的具体位置,定位漏洞所在函数,并一步步追溯其调用链,对整个过程的细节进行了详尽的剖析。
针对re2库的fuzzing,展示了max_len选择对fuzz过程的重要性。不同长度设置下的探测效果差异显著,max_len值决定样本长度范围,从而影响寻找覆盖点的速度。通过对比不同max_len的探测结果,可以清晰地看到其对fuzz效率的影响,合理选择max_len值可以显著提升发现crash的概率。
学习总结指出,在libfuzzer workshop中,libfuzzer作为强大而常用的fuzz工具,其对开源库接口函数的fuzz能力突出。然而,棋牌源码下截设计合适的harness是挑战,需要深入了解要fuzz的开源库接口,通过逐步优化来接近发现crash的目标。
本文展示了libfuzzer workshop的关键点,从源码准备、参数优化到harness的构造和性能调优,再到深入分析crash定位和漏洞修复策略,全面展示了学习libfuzzer的深度与广度。
Nginx源码交叉编译-保姆级移植ARM
在Ubuntu..7 位系统上,使用arm-linux-gnueabihf-gcc作为交叉编译器,针对arm内核4.1.和恩智浦imx6ul嵌入式平台,进行了一次详细的Nginx源码的交叉编译移植过程。
准备工作包括了下载Nginx(1..0)、pcre(8.)、zlib(1.3.1)和openssl(1.1.1)的最新版本。在编译过程中,作者尝试了openssl的3.0.版本,但遇到编译问题,最终选择1.1.1版本进行编译。协方差计算 源码
在进入Nginx源码目录后,需要对部分源码进行修改,如移除退出函数并调整size大小。增加PCRE配置后,对Nginx进行配置,如果不需要ssl,应移除相关部分。配置完成后生成Makefile,但在此阶段并未进行编译。
Pcre源码的处理包括切换目录、配置和编译,编译成功且无误。对于openssl(选配),需要确保安装路径设置正确,配置后删除部分Makefile内容,进行编译,可能需要清理缓存以解决编译问题。
在Nginx部分的后续操作中,添加了必要的小说源码 APP ios定义以避免malloc未引用错误,并调整了Makefile以排除之前手动编译的影响。最后进行编译,安装完成后,检查可执行文件类型和大小,进行优化以减少调试信息,使文件减小至2.8M。
测试阶段,将编译后的文件复制到arm设备,通过修改配置文件解决报错后,成功运行并访问测试页面,完成了基础的移植工作。
Nginx系列:依赖安装(pcre,zlib,openssl)(2)
上一篇文章
在学习编译安装Nginx之前,必须安装好Nginx的依赖项,这些包括函数库和软件:pcre,zlib,openssl。
关键词:pcre/pcre2/pcre-devel安装,zlib/zlib-devel安装,openssl源码安装
特别提醒:
在安装软件时,使用:./configure,默认路径为:/usr/local/。建议在安装时指定路径:
./configure --prefix=/usr/local/pcre-8.-6/
./configure --prefix=/usr/local/zlib-1.2./
./configure --prefix=/usr/local/openssl-3.0.7/
便于后期删除软件,切换版本等。
特别提醒:
特别注意:Nginx不支持pcre2版本!
尽管先下载pcre2源码编译安装,但这里的步骤和截图以pcre2为例。
一,下载地址
官网: pcre.org,可下载最新版本
选择pcre版本即可,Nginx不支持pcre2,这里演示的是pcre2版本。
二,下载源码包
在官网找到对应的下载页,复制下载链接
cd /usr/local/src
mkdir pcre
cd pcre
wget –O ./pcre2-..tar.gz sourceforge.net/project...
说明:学习Linux的目录结构后,要养成规范使用的习惯,把源码放到/usr/local/src目录下
规范参看:
三,解压源码包
tar –zxvf pcre2-..tar.gz
四,配置安装参数
cd pcre2-.
./configure –-help (可以查看很多安装的参数,自主进行选择)
./configure (一般直接默认配置就行,会生成Makefile,默认安装目录是/usr/local)
五,编译make
会调用刚才生成的编译文件Makefile
六,检查make check
这个命令可以跳过,部分软件没有make check命令
七,安装make install
直接执行安装即可
八,检查安装
cd /usr/local/lib
查看目录下有没有libpcre2的动态库文件
九,卸载软件/库
一般的软件都会在编译安装时,写好uninstall卸载指令
cd /usr/local/src/pcre/pcre2-.
make uninstall
则会把安装的函数库全部删除,完成卸载
十,重新编译和安装
先清除旧的安装参数配置和包残留
make clean(部分软件是make clean all)
再重回第三步:./configure进行配置即可
官网地址: zlib.net/,可下载最新版本
具体的安装流程与上面的pcre相同,不再详细描述,都是:
选择安装包,下载安装包,解压安装包,进入目录
执行./configure --> make --> make check --> make install
去安装目录(这里默认是/usr/lcoal/lib)检查是否存在zlib的so库
官网地址: /index.html (openssl.org),可下载最新版本
具体的安装流程与上面的pcre相同,不再详细描述,都是:
选择安装包,下载安装包,解压安装包,进入目录
执行./configure --> make --> make check --> make install
./configure可能会遇到一些问题:
执行:yum -y install perl-IPC-Cmd
说明:安装的openssl不是函数库,而是软件!
所以直接去安装目录(这里默认是/usr/local)下找openssl的目录
如果直接执行openssl version,可能会报找不到命令:那就是没有没有把安装目录加入系统环境
参看这篇文章:
或者显示的版本不是你安装的版本:那就是原本系统就装有openssl
我的做法是:
find / -name openssl 或者 whereis openssl
找到所有的openssl文件,函数库,执行软件等,都删除
再根据上面的方法重新安装,并配置系统环境
pcre-devel是使用PCRE做二次开发时所需要的开发库,包括头文件等,这也是编译Nginx所必须使用的
zlib-devel也是同样的作用
这2个我没有找到对应的源码安装包,所以只用使用yum安装了
yum -y install pcre-devel
yum -y install zlib-devel
这里也算是体现了源码安装 + yum安装结合的方式了
或许你可以看看这篇文章:
下一期详细写如何在Linux下源码编译安装Nginx,敬请期待!
Nginx编译所需基本库pcre、zlib、openssl
在构建和配置 Nginx Web 服务器时,pcre、zlib 和 openssl 这三个基本库扮演着关键角色。它们各自提供核心功能:pcre 用于正则表达式处理,zlib 用于数据压缩,而 openssl 则确保安全的网络通信。在进行源码编译时,至关重要的是确保系统上安装了这些库的开发版本,以便编译器能够正确链接。
通常情况下,可以通过包管理器轻松安装这些库的开发版本,按照官方指南进行编译。然而,如果在编译过程中遇到错误,如提示缺少 openssl-devel,可能是因为缺少了 SSL 模块所需的 OpenSSL 库。解决方法是安装 OpenSSL,或者将其静态编译到 Nginx 中,使用 --with-openssl= 选项。
对于静态编译,比如指定 pcre 的源码路径,Nginx 将直接包含 PCRE 的代码,不再依赖系统中的动态库。这意味着即使不安装系统库,编译后的 Nginx 仍然能运行,但前提是正确配置了库路径。
如果选择通过 rpm 包安装 Nginx,比如从 nginx.org/packages 下载的版本,通常情况下,rpm 包已经包含了编译后的 Nginx 二进制文件,因此无需额外安装 pcre-devel、zlib-devel 和 openssl-devel。这意味着在这些情况下,基本库的编译步骤可以省略。
2024-12-24 02:38227人浏览
2024-12-24 01:39431人浏览
2024-12-24 01:211424人浏览
2024-12-24 01:161719人浏览
2024-12-24 01:132731人浏览
2024-12-24 00:48981人浏览
中国消费者报杭州讯记者施本允)网络直播营销行业飞速发展,成为拉动经济增长、便利群众消费的重要环节,然而,其中也暗藏着不少“消费陷阱”。最近,浙江省杭州市桐庐县市场监管局查处一起通过网络平台销售假冒注册
1.eclipse重新编译源代码2.å¦ä½ç¨Eclipse建ç«ä¸ä¸ªJavaåºç¨ç¨åº3.eclipse源码怎么编译?eclipse重新编译源代码 当我们的工
1.一文详解RocketMQ-Spring的源码解析与实战2.Spring源码-09-Bean工厂之getBean方法3.一文带你掌握Spring事务核心:TransactionDefinition详