聊一聊 Linux 上对函数进行 hook 的两种方式
一:背景
1. 讲故事
前两篇我们介绍了 Minhook 在 Windows 平台上的强大功效,这一篇我们来聊一聊如何在 Linux 上对函数进行hook,这里介绍两种方式。
轻量级的 LD_PRELOAD 拦截
LD_PRELOAD是一种共享库拦截,这种方式的优点在于不需要对源程序做任何修改,达到无侵入的功效,这是windows平台上不可想象的。
funchook 拦 ...
技术书籍推荐(006):电子书免费下载
100. 剑指OFFER第2版 免费 电子书 PDF 下载
下载地址: http://t-book.sunlogging.com/2025/05/22/book/book_0100/
书籍简介: 《剑指offer:名企面试官精讲典型编程题(第2版)》剖析了众多典型的程序员面试题,从基础知识、代码质量、解题思路、优化效率和综合能力五个方面系统整理了影响面试的要点。全书分为7章,具体内 ...
在Linux下使用wxWidgets进行跨平台GUI开发(二)
wxWidgets常见辅助类的应用示例
wxWidgets提供了一系列功能强大的辅助类(Helper Classes),涵盖了字符串处理、文件操作、XML解析、数据流、数据库和网络通信等功能,这些类为跨平台GUI开发提供了基础工具支持,帮助开发者完成各种任务。
wxWidgets库可用于创建控制台和图形界面(GUI)应用程序。本文将通过一些控制台应用 ...
P6071 『MdOI R1』Treequery
P6071 『MdOI R1』Treequery
简单分讨题。
若 \([l, r]\) 内的点全部在 \(p\) 子树内:
考虑找到 \(q = \operatorname{LCA}(l, l + 1, \cdots, r - 1, r)\),显然 \(q\) 也在 \(p\) 子树内,那么答案为 \(\operatorname{dis}(p, q) = dep_q - dep_p\)。
若 \([l, r]\) 内的点一部分在 \(p\) 子树内,一部分在外面:
显然 ...
Linux c 运行时获取动态库所在路径
记录一下如何在Linux环境下运行时获取动态库路径。
只讨论Linux amd64和arm64环境,因为使用的办法都是平台相关的不具备可移植性。
准备
一般来说动态库并不需要关心自己所在的文件系统上的路径,但业务有那么多总有一两个会有特殊需求。
现在给定一个动态库里的函数A,需求是要知道这个函数A是哪个动态库里的以及这个库的 ...
C++ lambda 表达式
1 什么是lambda表达式?
lambda表达式实际上就是一个函数对象。和函数一样可以使用圆括号调用。
只不过这个函数可以定义在代码的任意位置。非常的灵活,自由。
lambda表达式比函数更具有优势的地方在于,它可以将当前作用域中的变量,对象直接拿来使用(灵活)。
示例1:求余数
#include <iostream>
using namespace std;
...
FFmpeg开发笔记(六十四)使用国产的RedPlayer播放器观看网络视频
RedPlayer是小红书基于FFmpeg4.3研发并开源的国产播放器,它可运行于Android和iOS系统,既支持播放本地视频文件,也支持播放网络上的流媒体链接。有关FFmpeg在Android平台的集成说明参见《FFmpeg开发实战:从零基础到短视频上线》一书的“第12章 FFmpeg的移动开发”。
之前的文章《使用国产的ijkplayer播放器观看网络视 ...
FFmpeg开发笔记(六十三)FFmpeg使用vvenc把视频转为H.266编码
前面的两篇文章分别介绍了如何在Linux环境和Windows环境给FFmpeg集成H.266的编码器vvenc,接下来利用ffmpeg把视频文件转换为VVC格式,观察新生成的vvc视频能否正常播放。
确保Linux系统已经按照《FFmpeg开发实战:从零基础到短视频上线》该书第一章的“1.2 Linux系统安装FFmpeg”安装了FFmpeg,并且Windows系统已 ...
技术书籍推荐(005)
80. 深入理解Java虚拟机——JVM高级特性与最佳实践 免费 电子书 PDF 下载
下载地址: http://t-book.sunlogging.com/2025/05/11/book/book_0080/
书籍简介: 本书深入剖析Java虚拟机(JVM)的高级特性,并提供了与之相关的最佳实践,帮助Java开发者全面、深入地理解JVM,从而优化Java程序性能、解决实际开发中的问题。
开篇 ...
FFmpeg开发笔记(六十二)Windows给FFmpeg集成H.266编码器vvenc
《FFmpeg开发实战:从零基础到短视频上线》该书的第八章介绍了如何在Windows环境给FFmpeg集成H.264和H.265的编码器,如今H.266的编码器vvenc也日渐成熟,从7.1版本开始的最新FFmpeg源码已经支持H.266的编码器vvenc。
H.266是H.265的升级版本,H.265的视频编码标准为HEVC(High Efficiency Video Coding,高效视频编码) ...
select和poll
select函数
原理
select通过一个文件描述符集合(fd_set)来监控多个文件描述符。它会检查这些文件描述符是否准备好进行读、写或异常操作。fd_set是一个位数组,每个位对应一个文件描述符。select会扫描这个数组,检查每个文件描述符的状态。
使用方法
使用FD_SET宏将文件描述符添加到fd_set中,然后调用select函数。select ...
FFmpeg开发笔记(六十一)Linux给FFmpeg集成H.266编码器vvenc
《FFmpeg开发实战:从零基础到短视频上线》该书的第一章介绍了如何在Linux环境给FFmpeg集成H.264和H.265的编码器,如今H.266的编码器vvenc也日渐成熟,从7.1版本开始的最新FFmpeg源码已经支持H.266的编码器vvenc。
H.266是H.265的升级版本,H.265的视频编码标准为HEVC(High Efficiency Video Coding,高效视频编码),H ...
0.libevent学习笔记,从阻塞式socket开始
本文看着这个链接去学的
https://libevent.org/libevent-book/
本文大量借助chatgpt,腾讯混元等网站,难免有错误,如果有问题欢迎提出,初衷仅为本人学习记录使用,我把我碰到的知识尽量记录下来,目前所有程序都是在windows上写的
Windows 上的socket API 和 Linux 的 socket API 非常相似,但并不完全一样。它们都基于 B ...
HTTP协议-获取天气-使用JSON
在使用http获取到天气信息之后,使用JSON对获取到的天气信息进行解析,解析出温度数据
/**************************************************************************
*
* 设计http程序,客户端向心知天气发送获取天气的请求,并解析出收到的温度数据,使用JSON进行解析
* author:jindouliu2024@163.com
* date:2025.5. ...
<HarmonyOS TechTalk 19> C/C++三方库编译构建 #鸿蒙课程##鸿蒙生态#
课程介绍
本次交流聚焦于 C/C++ 三方库在 HarmonyOS 开发中的应用。首先是适配 HarmonyOS 工具链,这是将开源三方库融入鸿蒙生态的关键步骤,确保其兼容性与稳定性。DevEco Studio 则是构建的得力助手,可用于打造自定义三方库,满足特定开发需求。在 Native 工程里使用这些三方库,能拓展功能、提升效率。通过本次 ...
使用 C++20 协程降低异步网络编程复杂度——零基础深入浅出 C++20 协程
传统异步回调 vs C++20协程
协程是一种函数对象,可以设置锚点做暂停,然后再该锚点恢复继续运行。它是如何应用在网络异步编程方面的,请对比下面的两种代码风格:
基于回调的异步网络编程
先来看一个异步编程的典型例子 (伪代码):
async_resolve({host, port}, [](auto endpoint){
async_connect(endpoint, [](auto e ...
HTTP-获取天气-dns版
直接使用心知天气的域名获取天气信息,并将温度信息转换成整型输出
/**************************************************************************
*
* 设计http程序,客户端向心知天气发送获取天气的请求,并解析出收到的温度数据
* author:jindouliu2024@163.com
* date:2025.5.20
* notice:需要填写自己的KEY
* ...
C++ 智能指针的删除器
为什么要设置删除器
C++11 加入STL的 shared_ptr 和 unique_ptr,已经是我们编码的常客了。用的多自然就会了解到它们的删除器,比如很多C语言库(GDAL, GLFW, libcurl等等)创建的指针不能简单的使用 delete 释放,当我们想使用智能指针管理这些库创建的资源时,必须设置删除器:
代码
//使用重载了operator()的类作为删 ...
技术书籍推荐(004):电子书免费下载
60. 笨方法学python第二版 免费 电子书 PDF 下载
下载地址: http://t-book.sunlogging.com/2025/04/04/book/book_0060/
书籍简介: 本书是一本面向Python编程初学者的入门书籍,以一种独特且强调实践的方式引导读者学习Python语言。
开篇通过一系列简单但精心设计的Python脚本示例,让读者立即开始动手编写代码。这些示例 ...
使用libdivide加速整数除法运算
在x86和ARM平台上,整数除法是相对较慢的操作。不巧的是除法在日常开发中使用频率并不低,而且还有一些其他常用的运算依赖于除法操作,比如取模。因此频繁的除法操作很容易成为程序的性能瓶颈,尤其是在一些数值计算程序里。
人们当然也想了很多办法优化,比如在除数是2的幂的时候,除法可以用速度更快的位运算来替换。比较 ...