自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(51)
  • 资源 (1)
  • 收藏
  • 关注

原创 Linux上监控应用程序启动 (hook execve系统调用)

​对于linuxx86-64平台,hook普通的系统调用是一件比较简单的事情,可以看hook系统调用完整实例讲解。但是对于execve、fork、clone等这些系统调用的hook却并没那么简单了。本文详细展示如何hook execve系统调用,针对rhel/centos 5.x 6.x 7.x 8.x发行版默认内核版本上测试正常。

2020-05-27 21:12:21 3650 10

原创 重构2:代码坏味道之笔记

​这是重构2:改善既有代码的设计的第三章内容,里面列举了各种代码的坏味道,详细可以看链接的第三章内容,我这里也把书中列举的各种代码坏味道及重构手法做了个思维导

2024-05-23 09:29:34 94

原创 重构2:重构的原则之笔记

最近在看重构2:改善既有代码的设计这本书,对于代码重构指导非常有帮助,然后也是做个笔记记录下,以下是我阅读本书的前两章的时候整理的思维导图

2024-05-23 09:21:55 43

转载 The DTrace One-Liner Tutorial

This teaches you DTrace for FreeBSD in 12 easy lessons, where each lesson is a one-liner you can try running. This series of one-liners introduces concepts which are summarized as bullet points. For an online DTrace reference, see the DTrace Guide

2023-05-29 11:57:37 2524

转载 DTrace on FreeBSD(one-liners)

DTrace on FreeBSD

2023-05-29 11:42:12 2545

原创 现代密码学算法介绍

说起现代密码学,离不开三位天才科学家: William Friedman, Lester Hill 和 Claude Shannon,他们将密码学从深奥、神秘、严格的语言领域带入了数学和统计学的世界,为密码学奠定了坚实的数学基础。后来的数学家和计算机科学家们在此基础上研发开发了新算法,以在计算机时代进行数字加密。

2022-03-16 10:39:58 4976 1

原创 Linux 下 lsof 命令的几个高效用法

lsof命令查看进程打开的文件,文件被哪些进程打开等等,本文列举几个实际例子看下lsof的妙用。

2022-01-06 17:49:49 1034 1

原创 Linux 上 wget 用法详解

最近在网上查资料时,发现一个网站里有好多PDF文档,都想下载下来,手动一个一个点有点麻烦,于是就研究了如何用一条命令下载一个网站里所有PDF文件,从这个实际用途出发介绍wget的详细用法。

2022-01-06 16:42:27 4727

原创 Linux Netfilter介绍

netfilter 框架由最著名的 Linux 内核开发人员之一 Rusty Russell 于 1998 年创立,作为对 ipchains(Linux 2.2.x)和 ipfwadm(Linux 2.0.x)的旧实现的改进。netfilter 子系统提供了一个框架,你可以在网络堆栈中的数据包遍历过程中的各个点(netfilter hooks)注册回调并对数据包执行各种操作,比如更改地址或端口、丢弃数据包、日志记录等。

2021-12-31 23:50:18 7191

原创 linux Netfilter在网络层的实现详细分析(iptables)

本文来详细分析linux netfilter在网络层的实现细节,本文代码分析是基于Linux内核版本4.18.0-80(也即centos8.0系统上)。我画了一张linux内核协议栈网络层netfilter(iptables)的全景图,里面涉及内容比较多,本文会详细讲解。

2021-12-31 23:40:35 10669 1

原创 Linux下使用Netfilter框架编写内核模块

上篇文章我们从内核源码的角度分析Linux Netfilter框架下,hook钩子是如何被执行的,这次我们写个简单的示例代码,详细介绍下如何使用Netfilter框架编写内核模块。

2021-12-30 00:17:02 8757 7

原创 Linux netfilter hook源码分析(基于内核代码版本4.18.0-80)

4.3(不包含4.3)之前的内核版本是通过nf_register_hook来注册;4.3-4.13之间版本,nf_register_hook里面会调用nf_register_net_hook来逐个net注册,此时可以使用这俩函数中的任一个来注册;4.13及以上版本内核是通过nf_register_net_hook来注册,删掉了nf_register_hook函数。

2021-12-29 16:41:22 16661

原创 Linux MIPS64下hook系统调用(kylin server v10)

本文基于mips64平台,实际写个demo介绍如何在mips64下hook系统调用,这里只介绍基于syscall table的hook。

2021-12-13 17:24:39 3333

原创 Linux下的磁盘管理之LVM详解及lvm的常用磁盘操作命令

LVM,Logical Volume Manger,是linux内核提供的一种逻辑卷管理功能,由内核驱动和应用层工具组成,它是在硬盘的分区基础上,创建了一个逻辑层,可以非常灵活且非常方便的管理存储设备。

2021-12-12 01:17:23 53040 12

原创 编译rust for linux内核源码(5.16.0-rc3)

本文针对rust for linux内核源码进行编译,跟主线版本的linux编译稍有不同,因为引入了rust,编译rust需要安装相关工具,以下部分会详细介绍如何编译rust for linux。​

2021-12-09 16:31:58 2829 2

原创 编译linux内核源码(适用Fedora/RHEL/CentOS/Oracle Linux /Debian/Ubuntu/Arch Linux/Manjaro)

本文介绍如何编译linux源码,然后以编译后的新内核启动linux系统。

2021-12-07 19:40:50 5217 1

原创 linux上kvm虚拟机网络不通的问题解决方法

本文针对linux上虚拟机网络不通问题方法总结问题是这样的,宿主机上以桥接模式安装kvm虚拟机,宿主机网络正常,但是虚拟机内部ping除宿主机以外的机器都ping不通,也只有宿主机能ssh到该虚拟机。首先排查宿主机网络是否正常,对应网卡是否启用等。1、查看宿主机网桥状态[root@localhost ~]# brctl showbridge name bridge id

2021-12-02 18:34:43 26339 5

原创 linux上安装部署vnc远程服务

本文介绍linux系统下安装vnc服务的步骤,图文讲解,简单易操作

2021-12-01 18:40:58 2598 2

原创 linux下ps命令中进程各种状态码详解

linux中使用ps查看进程时,打印的STAT列就是各进程的状态码,这些状态码代表什么,本文详细讲解下。

2021-10-15 11:26:20 511

原创 重启vmware中的linux虚拟机后跟windows主机共享的文件失效解决方法

vmware共享文件,需要启动vmhgfs相关模块,应用程序为vmhgfs-fuse。在linux系统上,执行vmhgfs-fuse -h,查看用法:[root@localhost Noah-Anti-Blackmail]# vmhgfs-fuse -hUsage: vmhgfs-fuse sharedir mountpoint [options]Examples: vmhgfs-fuse .host:/ /mnt/hgfs vmhgfs-fuse .ho

2021-08-19 11:28:07 1690

原创 ubuntu 20.04 启用kdump服务及下载vmlinux

本文在ubuntu20.04上安装kdump相关服务及调试内核所需的vmlinux文件,然后启用kdump服务。

2021-04-16 05:32:31 3397 4

原创 深入理解 std::move和std::forward

1、移动语义是c++11引入,它的引入是为了解决对象赋值带来的开销,移动的实质是对象所有权的转移,它要比复制更为高效。2、为了实现移动语义,编译器需要能够识别一个变量在什么时候只是个临时值,指没有名字的变量。这里引入了左值、右值的概念(继承自C语言):①左值:通常出现在赋值运算符的左侧(也可以是在右侧),它是在内存中有位置的对象,具有可访问性和可识别的内存地址。②右值:通常出现在赋值运算符的右侧,它是一个临时对象或者子对象,右值也可以占用栈上的数据区的内存,但是这个内存是暂时分配的,而且赋值

2021-04-14 09:34:48 545

原创 oracle linux内核版本升级降级到指定版本

oracle linux内核版本升级降级:https://mirror.netcologne.de/oracle-linux-repos/ol6_UEK_latest/getPackage/https://yum.oracle.com/repo/OracleLinux/OL6/UEK/latest/x86_64/index.htmlhttps://oss.oracle.com/ol6/debuginfo/kernel-uek-2.6.39-400.290.1.el6uek.x86_64.rpm

2021-04-13 22:59:52 1902

原创 Debian升级或降级内核版本及下载内核源码方法(基于debian 9.5)

Debian下可以很方便的通过Debian源下载:首先查找一下可下载的内核源代码:# apt-cache search linux-source其中显示的有:linux-source-2.6.20,没有和我的内核版本完全匹配,不过也没关系,直接下载就可以了:# apt-get install linux-source-2.6.20oracle linux内核版本升级降级:https://mirror.netcologne.de/oracle-linux-rep...

2021-04-13 22:53:15 12334

原创 centos7.6 x86_84上qemu kvm 安装kylin server v10系统(kunpeng920 arm64)

本文宿主机为centos7.6(vmware创建),然后在centos7.6使用qemu kvm安装kylin 服务器v10系统。一、宿主机安装1、宿主机需要启用虚拟化功能:2、安装选项:3、安装完成,可以验证是否启用虚拟化功能:[root@localhost ~]# egrep "vmx|smx" /proc/cpuinfo flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge m.

2021-04-07 20:11:37 11139 6

原创 银河麒麟 kylin server v10上创建虚拟机(基于 鲲鹏920 CPU)

本文详细介绍如何在银河麒麟 kylin server v10(基于鲲鹏920的CPU)上创建虚拟机,也适用于在其它平台的linux系统上安装不是虚拟机环境。

2021-04-07 20:01:19 15994 1

原创 SUSE Linux Enterprise Server 安装内核源码及部署crash调试环境,分析内核崩溃文件(基于sles 15.2)

实验环境:yg-net-static:~ # uname -aLinux yg-net-static 5.3.18-22-default #1 SMP Wed Jun 3 12:16:43 UTC 2020 (720aeba) x86_64 x86_64 x86_64 GNU/Linuxyg-net-static:~ # cat /etc/os-releaseNAME="SLES"VERSION="15-SP2"VERSION_ID="15.2"PRETTY_NAME="SUSE Linu

2021-04-02 09:16:26 1217

原创 Linux ARM64平台上Hook系统调用(以openat为例)

我之前已经有几篇关于linux下hook系统调用的文章1,2,3,都是基于x86_64平台的,本文将会先介绍下如何在arm64平台下hook系统调用,最后会手撸的简单的例子。本文实验环境是在银河麒麟服务器V10系统上:[root@localhost ~]# cat /etc/os-release NAME="Kylin Linux Advanced Server"VERSION="V10 (Tercel)"ID="kylin"VERSION_ID="V10"PRETTY_NAME=.

2021-03-29 00:09:35 5054 8

原创 SUSE Linux Enterprise Server 15 12 11 各发布版对应的内核版本及发布时间(2022-01-07更新)

本文归纳了SUSE Linux Enterprise Server 15 12 11的各个发行版本对应的发布日期及内核版本情况。

2021-03-16 17:47:49 6218

原创 ubuntu16.04配置国内apt源(解决报错 E: Unable to locate package)

最近在ubuntu16.04上安装命令的时候总是报错:root@ubuntu:/usr/src/linux-4.4.252# apt-get install libcurses5-devReading package lists... DoneBuilding dependency tree Reading state information... DoneE: Unable to locate package libcurses5-dev感觉应该是apt源的问题,修改apt源

2021-01-27 10:06:40 1665

原创 c/c++动态检测内存错误利器 - ASan

ASan,即Address Sanitizer,是一个适用于c/c++的动态内存错误检测器,它由一个编译器检测模块(LLVM pass)和一个替换malloc函数的运行时库组成,在性能及检测内存错误方面都优于Valgrind。

2021-01-24 22:08:52 5099

原创 编译内核启用KASan动态检测内核内存错误功能(ubuntu16.04 4.4.0内核编译升级到linux-4.4.252版本)

1、下载源码在Linux官网下载内核源码,我这里选择了linux-4.4.252源码。下载完成后,解压到/usr/src下。2、安装编译内核必须的库:apt-get install nc libssl-dev -yapt-get install build-essential openssl -yapt-get install zlibc minizip -yapt-get install libidn11-dev libidn11 -y3、清理之前内核编译配置make m

2021-01-19 18:47:42 4694 7

原创 linux环境查看当前内核栈已使用过的最大值及对应内核栈调用链信息

​1、挂载debugfs2、启用内核栈追溯3、查看内核栈已用最大值及对应调用链信息4、使用watch动态查看5、使用function tracer动态追踪内核函数堆栈

2021-01-15 16:12:29 990

原创 ubuntu 20.04 静态ip配置及root用户ssh连接配置

本文是针对ubuntu20.04的配置方法。一、静态ip配置(假设设置网口ens33的ip)1、修改/etc/netplan/目录下网口配置文件我的机器中,/etc/netplan/下是00-installer-config.yaml文件root@zyg:~# cat /etc/netplan/00-installer-config.yaml # This is the network config written by 'subiquity'network: ethernets:

2021-01-13 10:39:30 1792

原创 Linux中高效命令汇总

平时工作中用到的很实用的linux命令,记录下。

2021-01-11 10:40:49 475

原创 c++11下的 std::pair & std::tuple用法

在C++标准库中,pair类最早出现在c++98中,它提供一个简单的类,可以将两种不同(或者相同)的值聚合在一起,类似键值对(key/value)的形式。而tuple类最早在TR1中引入,是pair类的扩展泛化,允许最多10个不同(或相同)类型的元素。在c++11中,tuple类重新实现了,基于可变参模块,可以容纳任意多的异质元素。pair类可以把两个元素作为一个整体,用处也比较广,如STL里的ap、multimap、unordered_map、unordered_multimap这些键值对容.

2020-08-09 21:21:48 1277

原创 c/c++中输入输出处理 按分隔符(换行、逗号、空格等)读取

读取输入中字符流的常用接口为getline,其有两种实现:一个stream类中提供的getline()函数,另一个是string中提供的getline()函数,本文示例了各种读取方式。

2020-08-09 16:49:41 17172

原创 linux下用strace追踪bash执行的命令程序

1、获取当前bash进程号[root@yglocal ~]# echo $$8260[root@yglocal ~]# ps -ef |grep $$root 8260 8256 0 10:51 pts/0 00:00:00 -bashroot 8402 8260 0 11:11 pts/0 00:00:00 ps -efroot 8403 8260 0 11:11 pts/0 00:00:00 grep --co...

2020-06-12 11:28:42 731

原创 Ubuntu Linux内核版本升级或降级到指定版本(基于ubuntu 18.04示例)

本文以ubuntu 18.04.4系统为例,内核版本为4.15.0-101-generic,降级到内核版本为4.15.0-76-generic。

2020-06-08 14:23:28 28802 2

原创 SELinux 及 permision denied 问题

最近同事遇到个奇怪的问题,于是让我一起排查下,折腾一番之后才发现问题根源。事情是这样的,在linux服务器上部署了一个服务,服务里面会执行shell命令insmod一个lkm,在之前发布个各个版本的centos/rhel/oracle linux/ubuntu上都能正常加载,但是在最新测试的oracle linux7.7上却怎么也加载不起来内核模块。然后在服务程序里打印日志,可以确定insmod是执行了的,然后在开机启动的服务脚本里加insmod也调不起来。我想肯定是insmod出错了,于是我把服务

2020-06-03 21:50:25 2524 1

sysbench 脚本资源

sysbench 脚本资源

2022-03-23

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除