小记 LD_PRELOAD劫持
LD_PRELOAD 劫持(LD_PRELOAD Hooking)是 Linux/Unix 系统中一种非常著名且强大的技术。它利用了动态链接器(Dynamic Linker/Loader)的工作机制,允许用户在程序加载前加载自定义的共享库,从而覆盖(Override)系统标准库中的函数。 简单来说,就是“狸猫换太子”。 以下是关于 LD_PRELOAD 劫持的详细讲解,包括原理、实战示例、用途以及防御方法。 核心原理在 Linux 中,运行动态链接的程序时,系统需要由动态链接器(通常是 /lib64/ld-linux-x86-64.so.2)将程序所需的共享库(如 libc.so)加载到内存中。 加载库的顺序通常遵循以下规则: LD_PRELOAD 环境变量指定的路径(优先级最高)。 LD_LIBRARY_PATH 环境变量指定的路径。 /etc/ld.so.conf 配置文件中的路径。 默认系统路径(如 /lib, /usr/lib)。 劫持的关键点:由于 LD_PRELOAD 的优先级最高,如果你编写了一个与标准库函数(例如 printf,...
【RK3588】【Ubuntu22.04】4G 共享网络至WiFi热点
1. 安装工具12$ sudo apt-get update$ sudo apt-get install iptables 2. 开启AP热点 点击Turn On开启AP热点 通过手机输入WiFi热点密码正常连接(此时还未共享4G网络) 3. 将4G网络共享至AP热点3.1. 4G拨号执行以下命令,等待4G成功拨号 1$ quectel-CM & 确认拨号成功后,4G模块可以成功ping通外网 注:这里需要先将4G模块配置为路由模式。4G模块路由模式和网卡模式的区别在于,拨号成功后,路由模式下usb0网卡分配到的IP地址是局域网IP(192.168.x.x),而网卡模式分配的IP是公网IP地址(10.21.26.197)。 这里使用的4G模块为EC20,默认为开发板的/dev/ttyUSB2节点。 EC20有4种上网模式,可以通过如下指令切换模式。 123$ cat /dev/ttyUSB2 &$ echo -e "AT+QCFG=\"usbnet\",0\r\n" > /dev/ttyUSB2 ...
【RK356x】Debian USB/mipi gstreamer摄像头推流
1. 确认USB摄像头设备节点主板接上USB摄像头后,使用以下命令查看USB摄像头节点: 1234567891011121314151617linaro@linaro-alip:/home$ grep ''...
【RK3566】配置RNDIS,使USB-OTG口用作USB网口
1. 添加RNDIS相关配置在<path_to_sdk>/rk3566/kernel/arch/arm64/config/rockchip_linux_defconfig追加以下配置。 12345# ADD RNDIS CONFIGCONFIG_USB_NET_RNDIS_HOST=y#CONFIG_USB_NET_RNDIS_WLAN=yCONFIG_USB_F_RNDIS=yCONFIG_USB_CONFIGFS_RNDIS=y 编译kernel,并将生成的boot.img烧录进开发板。 2. 检查是否新增USB网卡将boot.img烧录进开发板后,检查是否新增usb0网卡 12345678910root@linaro-alip:~# ifconfig usb0usb0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet6 fe80::b04f:31ff:fe31:b29a prefixlen 64 scopeid 0x20<link> ...
【RK3566】OBS+Nginx推流,Gst拉流
1. nginx:RTMP服务器搭建1.1. 下载nginxhttps://nginx-win.ecsds.eu/download/ 该版本是测试验证过的版本,可以直接使用 下载完成后解压,解压后的目录命名为 nginx 1.2. 下载nginx的rtmp拓展包下载链接:https://github.com/arut/nginx-rtmp-module 下载完成后,将解压后的文件夹放入nginx目录下 1.3. 修改配置文件在conf/目录下,新建一个文件nginx.conf,内容如下: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849worker_processes 1; events { worker_connections 1024;} #RTMP服务rtmp { server {...
【RK3562】安装验证dotnet
1. 在Buildroot系统下配置安装.net1.1. 从官网下载对应的运行时环境压缩包下载地址: https://download.visualstudio.microsoft.com/download/pr/ec8e29f5-2fbe-47d8-b0c5-81f11434c00f/ba4bd30be448d649e5ddf1991bf76252/dotnet-sdk-6.0.425-linux-arm64.tar.gz 1.2. 将压缩包解压进SDK12345678// 从官网下载.net压缩包 $ wget https://download.visualstudio.microsoft.com/download/pr/ec8e29f5-2fbe-47d8-b0c5-81f11434c00f/ba4bd30be448d649e5ddf1991bf76252/dotnet-sdk-6.0.425-linux-arm64.tar.gz// 将压缩包解压进sdk中buildroot系统的fs-overlay目录下$ mkdir -p...
【RK3562】Ubuntu/Debian安装测试modbus
1. 开发板上配置libmodbus1.1. 方法1:apt安装12sudo apt-get install libmodbus-devsudo apt-get install libmodbus5 1.2. 方法2:GitHub源码安装下载地址:GitHub - stephane/libmodbus: A Modbus library for Linux, Mac OS, FreeBSD and Windows 配置前的准备: 123sudo apt-get install autoconfsudo apt-get install automakesudo apt-get install libtool 将代码解压到虚拟机,进入到代码目录下(以下操作在ubuntu虚拟机上进行) 第一步:在代码目录下运行./autogen.sh 第二步:执行sudo ./configure && make...
ubuntu文件系统的制作
1. 准备环境1.1. 下载Ubuntu包https://mirrors.bfsu.edu.cn/ubuntu-cdimage/ubuntu-base/releases/20.04.3/release/ 进入上述网站下载所需的Ubuntu版本,注意下载arm版本的。下载之后在buildroot下面创建一个Ubuntu目录,将下载的下载Ubuntu包解压到该目录下 1tar -xvf ubuntu-base-20.04.2-base-arm64.tar.gz -C ./ubuntu 1.2. 配置Ubuntu环境安装qemu模拟器 123$ sudo apt-get update$ sudo apt-get install qemu-user-static$ cp /usr/bin/qemu-aarch64-static...
