CentOS 基础命令 III

2023-05-16


软件包管理

为了满足应用的需求,我们通常会在系统上安装各种相应的软件,并在维护中会对软件进行升级和删除,甚至是退回到旧的版本。 CentOS 中主要有三种类型的软件管理方式,分别为源代码编译、RPM 包管理和 YUM 管理方式。其中 YUM 管理方式是对用户最友好的方式,其次为 RPM 方式,最不友好的是源代码编译方式。源代码编译也可生成 RPM 包, RPM 包又可让 YUM 解决资源依赖问题。

“RPM Package Manager” 是 RPM 的递归缩写,也就是 RPM 软件包管理器。RMP 包管理器可以生成 RMP 软件包、安装、查询、升级、卸载、校验软件包和对 RPM 数据库进行管理。 RPM 软件包是以 .rpm 为扩展名,其命名规范为:

name-version-release.os.arch.rpm

其中 name 为程序名称; version 为程序版本号; release 为发行号,用于标识 RPM 包本身的发行号,与源程序的 release 号无关; os 为 RPM 包支持的操作系统版本,如 el6、el7、el8 等; arch 为系统架构,如 i686、x86_64、amd64、ppc(power-pc)、noarch(即不依赖平台)。

例如:

openssh-server-8.0p1-4.el8_1.x86_64
|-----1------| |-2-| 3 4      5

1-->name  2--> version  3-->release  4-->os  5-->arch

RPM 具有一组 rpm 命令集来实现包管理器的功能。虽然打包系统定义了一种依赖模型,可以查询到所依赖的软件和库,但有时会陷入令人头痛的包依赖地狱(package dependency hell)。 高级包管理系统 YUM 此时就可以大放光彩了,其可以自动下载软件包并解决包依赖问题。在 CentOS 8 中开始采用 DNF 代替 YUM,这两个命令的大部分选项是兼容的,所以就不必太过担心了。

高级包管理系统 YUM 的两大基础设施,分别为软件包仓库和与软件包操作相关的命令集,以实现软件包的安装、查询、升级、卸载、校验软件包和对 RPM 数据库进行管理。

CentOS 软件包仓库库配置文件位于 /etc/yum.repo.d 内。

$ yum repolist all			/* 列表所有仓库 */

repo id /* 仓库 iD */        repo name  /* 仓库名称 */   status	/* 仓库状态 */
AppStream                    CentOS-8 - AppStream        enabled	/* enabled 表示仓库开启 */
AppStream-source             CentOS-8 - AppStream Source disabled	/* disabled 表示仓库关闭 */
BaseOS                       CentOS-8 - Base             enabled
BaseOS-source                CentOS-8 - BaseOS Sources   disabled
Devel                        CentOS-8 - Devel WARNING! F disabled
HighAvailability             CentOS-8 - HA               disabled
PowerTools                   CentOS-8 - PowerTools       disabled
base-debuginfo               CentOS-8 - Debuginfo        disabled
c8-media-AppStream           CentOS-AppStream-8 - Media  disabled
c8-media-BaseOS              CentOS-BaseOS-8 - Media     disabled
centosplus                   CentOS-8 - Plus             disabled
centosplus-source            CentOS-8 - Plus Sources     disabled
cr                           CentOS-8 - cr               disabled
...

列表的内容与 /etc/yum.repo.d 内的仓库配置文件 .repo 相对应。仓库配置文件常用参数如下:

$ cat /etc/yum.repos.d/CentOS-Base.repo

# 井号起始的为注释内容。
# 远程仓库系统会根据您的 IP 地址自动选择相匹配的地理区域的仓库镜像。

[BaseOS]				/* 仓库 ID。不能和其它仓库 ID 重复。*/
name=CentOS-$releasever - Base		/* 仓库名称。*/
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=BaseOS&infra=$infra	/* 仓库镜像列表地址。*/
#baseurl=http://mirror.centos.org/$contentdir/$releasever/BaseOS/$basearch/os/				/* 仓库地址。*/
gpgcheck=1				/* gpg 测试,以验证包的完整。*/
enabled=1				/* 是否开启此仓库。*/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial	/* gpg 公钥位置。*/

除了 CentOS 官方提供的仓库外,还可以使用第三方仓库。

CentOS 官方仓库及其推荐的第三方仓库介绍:
https://wiki.centos.org/action/show/AdditionalResources/Repositories?action=show&redirect=Repositories。

CentOS 软件仓库国内及其它地理区域的镜像:
CentOS 6 http://isoredirect.centos.org/centos/6/isos/
CentOS 7 http://isoredirect.centos.org/centos/7/isos/
CentOS 8 http://isoredirect.centos.org/centos/8/isos/

直接取 CentOS 软件仓库镜像的主域名,就可以看到各大网站提供的所有软件仓库。

清华大学镜像: https://mirrors.tuna.tsinghua.edu.cn/
阿里云镜像:https://developer.aliyun.com/mirror/
华为镜像:https://mirrors.huaweicloud.com/
网易三石镜像:http://mirrors.163.com/

为了提高软件包下载速度,我们还可以直接设置国内仓库的地址。

示例:

/* 国内远程仓库*/

/* 添加网易 docker-ce 仓库。*/
$sudo wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.163.com/docker-ce/linux/centos/docker-ce.repo
 
$cat /etc/yum.repos.d/docker-ce.repo

[docker-ce-stable]
name=Docker CE Stable - $basearch
#baseurl=https://download.docker.com/linux/centos/$releasever/$basearch/stable
baseurl=https://mirrors.163.com/docker-ce/linux/centos/$releasever/$basearch/stable

/* 注意 baseurl 两行的对应关系与仓库网址对应关系。可以很方便的设置为任何仓库源。*/

enabled=1
gpgcheck=1
gpgkey=https://download.docker.com/linux/centos/gpg
...


/* 本地仓库*/

/* 在系统更新后,同步一个远程仓库到本地,再设置本地仓库。*/

/* centos 7 */
$sudo yum install yum-utils createrepo		/* 安装 yum 插件。*/
$sudo mkdir /tmp/data/repos			
$sudo reposync -r docker-ce-stable -p /tmp/data/repos
/* reposync 同步仓库到本地, -r 指定同步的仓库 id,-p 指定同步数据所到位置。*/
$sudo createrepo /tmp/data/repos/docker-ce-stable
/* 创建仓库 xml 索引,也就是 metadata。*/

/* centos 8 */
$sudo dnf install createrepo_c
$sudo mkdir /tmp/data/repos
$sudo dnf reposync -r docker-ce-stable -p /tmp/data/repos
$sudo createrepo_c /tmp/data/repos/docker-ce-stable
$sudo cp  /etc/yum.repos.d/docker-ce.repo  /etc/yum.repos.d/local-docker-ce.repo
$sudo vim  /etc/yum.repos.d/local-docker-ce.repo


[docker-ce-stable]
name=Docker CE Stable - $basearch
#baseurl=https://download.docker.com/linux/centos/$releasever/$basearch/stable
baseurl=file:///data/repos/docker-ce-stable/linux/centos/$releasever/$basearch/stable
...

yum 命令

yum [options] command [package …]

--security	/* 指定包含安全更新的软件包,一般用于 check-upate 或 update  */

-v					/* 繁琐模式。*/
[-y | --assumeyes]			/* 自动同意所有安装时的问题。*/
-h					/* 帮助。*/


repolist [all | enabled | disabled]	/* 列表所有/开启/关闭的仓库。*/
repoinfo [all | enabled | disabled | <repo_id> ...]	/* 查询指定仓库的信息。 */

clean [packages | metadata | dbcache | expire-cache | all]
/* 清理系统下载的软件包、仓库信息元数据、仓库信息 sqlite 元数据、使缓存数据过期或清理所有数据。缓存目录位于 /var/cache/yum。*/

makecache [fast]		/* 下载所有已启用仓库的元数据,如果使用 fast,则相当于执行 yum clean expire-cache。*/

check-update			/* 检查是否有更新。*/

install [package ...]		/* 安装一个或多个软件包,用空格分隔软件包名称 */
reinstall [package ...]		/* 重新安装一个或多个软件包。*/
update [package ...]		/* 更新指定的一个、多个软件包或所有可以更新的软件包。*/
update-to [package ...]		/* 更新一个或多个指定的软件到指定版本的软件包。*/
remove | erase [package ...]	/* 删除一个或多个软件包。*/

list [list_option]		/* 列表指定软件包*/
	[all | glob_exp] [...]	/* 列表所有的软件包或与指定的 glob 表达式匹配的软件包。*/
	available [glob_exp] [...]	/* 列表可供安装的软件包。*/
	updates [glob_exp] [...]	/* 列表可供更新的软件包。*/
	installed [glob_exp] [...]	/* 列表已安装的软件包。*/
	obsoletes [glob_exp] [...]	/* 列表已标识为废弃的软件包。*/
	recent [glob_exp] [...]		/* 列表最近添加到仓库的软件包。*/

info [list_option]			/* 查询指定软件包的信息*/
	/*info 可以使用与 list_option 同样的选项,但一般直接查询指定软件包的信息。*/

search [string]			/* 查找软件包,可以指定部分字符串来查找。*/

group [groups_option]		/* 软件包组的管理,类似软件包管理。 */
	list [installed|available|environment|language|package|hidden|ids]
				/* 列表软件包组,或选择以下类型,只有指定了 hidden,才会列出隐藏包组。*/
	install			/* 安装软件包组。 */
	remove			/* 删除软件包组,其会删除软件包组包含的所有软件包,无论其它软件包是否依赖所删除的。 */	
	info			/* 查看软件包组信息。*/

deplist	[package] [...]		/* 列表指定软件包依赖 */

provides | whatprovides	[command | package]	/* 查询指定的命令或软件包由谁提供 */

history 			/* 软件包管理事务历史 */
	list [<trans-id> ...]	/* 列表管理事务历史,含事务 ID、命令行、日期、动作和所作的改动。 */
	info <trans-id> ...	/* 查询指定事务详细信息。*/
	redo <trans-id>		/* 重做指定事务。*/
	rollback <trans-id>	/* 回滚到指定事务。*/
	undo <trans-id>		/* 撤销指定事务。/

示例:

$sudo yum --security check-update		/* 检查是否有关于安全的更新。*/

$sudo yum update				/* 安装所有更新。*/

$yum search epel		/* 查找 epel 仓库安装包。*/

Last metadata expiration check: 0:00:59 ago on Wed 09 Dec 2020 08:43:00 PM CST.
============================== Name Matched: epel ==============================
epel-release.noarch : Extra Packages for Enterprise Linux repository configuration
epel-rpm-macros.noarch : Extra Packages for Enterprise Linux RPM macros

$yum info epel-release		/* 查询 epel-release 仓库安装包信息。*/

Last metadata expiration check: 0:03:45 ago on Wed 09 Dec 2020 08:43:00 PM CST.
Installed Packages
Name         : epel-release
Version      : 8
Release      : 9.el8
Architecture : noarch
Size         : 32 k
Source       : epel-release-8-9.el8.src.rpm
Repository   : @System
From repo    : @commandline
Summary      : Extra Packages for Enterprise Linux repository configuration
URL          : http://download.fedoraproject.org/pub/epel
License      : GPLv2
Description  : This package contains the Extra Packages for Enterprise Linux (EPEL) repository
             : GPG key as well as configuration for yum.

$sudo yum install epel-release rmpfusion-free-release \
rpmfusion-nonfree-release -y			/* 安装 epel、rpmfusion 仓库。*/

$sudo yum history list				/* 查询安装历史。*/	

ID     | Command line              | Date and time    | Action(s)      | Altered
--------------------------------------------------------------------------------
    44 | install vsftpd            | 2020-12-15 21:54 | Install        |    1   
    43 |                           | 2020-12-15 17:30 | Upgrade        |    2   
    42 | update                    | 2020-12-12 16:19 | Upgrade        |    1   
...

$sudo yum history info 44			/* 查询事务 ID 44 详细信息。*/

Transaction ID : 44
Begin time     : Tue 15 Dec 2020 09:54:33 PM CST
Begin rpmdb    : 2115:61986a56c82aec41b92fb2b3bc09ce57dd092e60
End time       : Tue 15 Dec 2020 09:54:34 PM CST (1 seconds)
End rpmdb      : 2116:146141955c021eb24181666635dc6b4293874964
User           :  <haojiang>
Return-Code    : Success
Releasever     : 8
Command Line   : install vsftpd
Comment        : 
Packages Altered:
    Install vsftpd-3.0.3-32.el8.x86_64 @appstream

$sudo yum remove vsftpd				/* 删除 vsftpd。*/

Dependencies resolved.
================================================================================
 Package        Architecture   Version                 Repository          Size
================================================================================
Removing:
 vsftpd         x86_64         3.0.3-32.el8            @appstream         343 k

Transaction Summary
================================================================================
Remove  1 Package

Freed space: 343 k
Is this ok [y/N]: y
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                        1/1 
  Running scriptlet: vsftpd-3.0.3-32.el8.x86_64                             1/1 
  Erasing          : vsftpd-3.0.3-32.el8.x86_64                             1/1 
  Running scriptlet: vsftpd-3.0.3-32.el8.x86_64                             1/1 
  Verifying        : vsftpd-3.0.3-32.el8.x86_64                             1/1 
Installed products updated.

Removed:
  vsftpd-3.0.3-32.el8.x86_64                                                    

Complete!

$sudo yum history redo 44				/* 重做事务 ID 44。*/

Last metadata expiration check: 0:23:16 ago on Tue 15 Dec 2020 09:43:53 PM CST.
Repeating transaction 44, from Tue 15 Dec 2020 09:54:33 PM CST
    Install vsftpd-3.0.3-32.el8.x86_64 @appstream
================================================================================
 Package         Architecture    Version               Repository          Size
================================================================================
Installing:
 vsftpd          x86_64          3.0.3-32.el8          appstream          180 k

Transaction Summary
================================================================================
Install  1 Package

Total download size: 180 k
Installed size: 343 k
Is this ok [y/N]: y
Downloading Packages:
vsftpd-3.0.3-32.el8.x86_64.rpm                  308 kB/s | 180 kB     00:00    
--------------------------------------------------------------------------------
Total                                           112 kB/s | 180 kB     00:01     
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                        1/1 
  Installing       : vsftpd-3.0.3-32.el8.x86_64                             1/1 
  Running scriptlet: vsftpd-3.0.3-32.el8.x86_64                             1/1 
  Verifying        : vsftpd-3.0.3-32.el8.x86_64                             1/1 
Installed products updated.

Installed:
  vsftpd-3.0.3-32.el8.x86_64     

$whereis vsftpd		/* 查询 vsftpd 位置。*/

vsftpd: /usr/sbin/vsftpd /etc/vsftpd /usr/share/man/man8/vsftpd.8.gz

$sudo yum provides /usr/sbin/vsftpd	/* 查询指定命令由那个软件包提供。*/

Last metadata expiration check: 6 days, 1:41:12 ago on Wed 09 Dec 2020 08:43:00 PM CST.
vsftpd-3.0.3-32.el8.x86_64 : Very Secure Ftp Daemon
Repo        : @System
Matched from:
Filename    : /usr/sbin/vsftpd

vsftpd-3.0.3-32.el8.x86_64 : Very Secure Ftp Daemon
Repo        : appstream
Matched from:
Filename    : /usr/sbin/vsftpd

$sudo yum deplist vsftpd			/* 查询指定软件的依赖。*/

CentOS Linux 8 - AppStream                      3.8 kB/s | 4.3 kB     00:01    
CentOS Linux 8 - BaseOS                         4.7 kB/s | 3.9 kB     00:00    
CentOS Linux 8 - Extras                         1.5 kB/s | 1.5 kB     00:01    
CentOS Linux 8 - Extras                         7.6 kB/s | 8.6 kB     00:01    
...
package: vsftpd-3.0.3-32.el8.x86_64
  dependency: /bin/bash
   provider: bash-4.4.19-12.el8.x86_64
  dependency: /bin/sh
   provider: bash-4.4.19-12.el8.x86_64
  dependency: libc.so.6(GLIBC_2.28)(64bit)
   provider: glibc-2.28-127.el8.x86_64
  dependency: libcap.so.2()(64bit)
   provider: libcap-2.26-4.el8.x86_64
  dependency: libcrypto.so.1.1()(64bit)
   provider: openssl-libs-1:1.1.1g-11.el8.x86_64
...

注:如未特别指出,以上 yum 命令参数与 dnf 命令参数通用。

/* Centos 7 用 yum 下载软件包。如果加 --resolve,还将下载依赖。*/
$yum install --downloadonly --downloaddir=./epel.release.noarch

/* Centos 8 用 yum/dnf 下载软件包。*如果加 --resolve,还将下载依赖。*/
$[yum | dnf] download epel.release.noarch

rpm 命令

GENERAL OPTIONS

-v			/* 繁琐模式。*/
-vv			/* 输出大量的调试信息。*/

INSTALL AND UPGRADE OPTIONS

{-i | --install}	/* 安装指定软件包。*/
{-U | --upgrade}	/* 更新或安装指定软件包。其更新过程其实是先删除再安装。*/
{-F | --freshen}	/* 仅升级已安装的软件包。*/
	-h		/* 使用 # 字符显示安装或更新进度。*/
	--percent	/* 解包文档时,输出百分比进度。*/
	--oldpackage	/* 使用指定旧版本软件包更新。*/
	--test		/* 仅作测试和报告潜在冲突。*/

ERASE OPTIONS

{-e | --erase}		/* 删除指定软件包。*/
	--test		/* 仅作测试,与 -vv 结合使用对调试很有用。*/

QUERY OPTIONS

{-q | --query}		/* 查询指定软件包信息。*/
	[package-select-option]
	{-a | --all}	/* 查询所有已安装的软件包。*/
	{-p | --package} package_file	/* 查询指定软件包。*/
	{-f | --file} file		/* 查询指定文件属于哪个软件包。*/

	--fileprovide	/* 列表指定文件由哪些文件提供。*/
	--filerequire	/* 列表指定文件依赖哪些文件。*/

	[package-query-option]
	{-i | --info}	/* 查询指定软件包的信息。*/

	{-l | --list}	/* 列表指定软件包内的文件。*/

	--provides	/* 列表指定软件包提供哪些功能。*/
	--whatrequires capability	/* 查询哪些软件包依赖指定的功能(软件包名称)。*/
	{-R | --requires}	/* 查询指定软件包的依赖功能。*/
	{-c | --configfiles}	/* 列表指定软件包的配置文件。*/

	--scripts	/* 查询指定软件包中用来安装和删除的脚本。*/

--querytags	/* 列表 rpm 可以查询的标记。*/

VERIFY OPTIONS

{-V | --verify}		/* 使用 rpm 数据库内的元数据来验证软件包。*/

/* 验证输出为 9 个字符的字符串,每个字符串含义如下:

c %config	配置文件。
d %doc		文档文件。
g %ghost	文件内容不是软件包包含的。
l %license	版权文件。
r %readme	说明文档。
l %license	版权文件。
r %readme	说明文档。

. 		测试通过。 
S		文件大小不同。
M		文件权限和类型不同。
5		MD5 不匹配。
D		主次设备编号不匹配。
L		readlink(2) 路径不匹配。
U		用户属主不同。
G		组不同。
T		修改时间不同。
P		功能不匹配。*/

-K		/* 公钥验证。*/

示例:

$rpm -qa | grep openssh		/* 查询所有已安装的软件包,grep 匹配 openssh。*/

openssh-server-8.0p1-5.el8.x86_64
openssh-clients-8.0p1-5.el8.x86_64
openssh-8.0p1-5.el8.x86_64
openssh-askpass-8.0p1-5.el8.x86_64

$rpm -q vsftpd			/* 查询是否安装了 vsftpd 软件包。*/

/* 验证软件包签名。*/
$rpm -K  http://mirrors.aliyun.com/centos/8.3.2011/AppStream/x86_64/os/Packages/vsftpd-3.0.3-32.el8.x86_64.rpm

http://mirrors.aliyun.com/centos/8.3.2011/AppStream/x86_64/os/Packages/vsftpd-3.0.3-32.el8.x86_64.rpm: digests signatures OK

/* 安装相应远程仓库的 vsftpd 软件包。*/
$sudo rpm http://mirrors.aliyun.com/centos/8.3.2011/AppStream/x86_64/os/Packages/vsftpd-3.0.3-32.el8.x86_64.rpm 

$sudo rpm -qi vsftpd		/* 查询相关信息。*/

Name        : vsftpd
Version     : 3.0.3
Release     : 32.el8
Architecture: x86_64
Install Date: Tue 15 Dec 2020 09:21:09 PM CST
Group       : System Environment/Daemons
Size        : 351530
License     : GPLv2 with exceptions
Signature   : RSA/SHA256, Wed 29 Apr 2020 12:08:42 AM CST, Key ID 05b555b38483c65d
Source RPM  : vsftpd-3.0.3-32.el8.src.rpm
Build Date  : Mon 27 Apr 2020 10:04:03 AM CST
Build Host  : x86-01.mbox.centos.org
Relocations : (not relocatable)
Packager    : CentOS Buildsys <bugs@centos.org>
Vendor      : CentOS
URL         : https://security.appspot.com/vsftpd.html
Summary     : Very Secure Ftp Daemon
Description :
vsftpd is a Very Secure FTP daemon. It was written completely from
scratch.

$sudo rpm -e vsftpd		/* 删除指定软件。*/

$sudo rpm -ql vsftpd		/* 查询指定的软件包含的文件。*/ 

/etc/logrotate.d/vsftpd
/etc/pam.d/vsftpd
/etc/vsftpd
/etc/vsftpd/ftpusers
/etc/vsftpd/user_list
/etc/vsftpd/vsftpd.conf
/etc/vsftpd/vsftpd_conf_migrate.sh
/usr/lib/.build-id
...

编译安装

一般来说,当我们下载了程序源代码后,其内会提供编译安装所需的相应文件,如 README、INSTALL、configure、Makefile 等文件。README 自述文件介绍软件及其安装方式;INSTALL 一般是安装方式介绍;configure 是用于生成 Makefile 的脚本。Makefile 是编译和安装的特定格式文件。源代码编译所需的依赖文件,如头文件、库文件、所依赖的程序和编译套件就必须自行安装了。另外编译安装的软件并非比软件包安装的好,但有时软件安装包发行的比较慢,就可以自行编译安装了。

configure 脚本

--help		/* 帮助。 */
--prefix	/* 指定安装目录。*/
--with-***	/* 指定可选模块。*/

示例:

/* 下在 git 源代码。*/
$wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.9.5.tar.xz
/* 解源代码压缩包。*/
$tar -xvf git-2.9.5.tar.xz

$cd git-2.9.5.tar.xz

$less README		/* 查看自述文件。*/
$less INSTALL		/* 查看安装文件。*/

$sudo yum install make gcc -y		/* 安装编译套件。*/
/* 安装编译依赖。*/
$sudo yum install sudo dnf install dh-autoreconf curl-devel expat-devel gettext-devel openssl-devel perl-devel zlib-devel asciidoc xmlto

/* 指定安装目录为 /usr/local/git,方便以后删除或升级。*/
$make prefix=/usr/local/git all doc
$sudo make prefix=/usr/local/git install install-doc install-html

/* 把编译安装的 git 路径放到环境变量里,修改 .bashrc 文件。*/
$vim ~.bashrc
export PATH=/usr/local/git/bin:$PATH	/* 修改最后一行。*/

$source ~.bashrc			/* 使修改立刻生效。*/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CentOS 基础命令 III 的相关文章

  • Spring项目实践(三)--- Spring配置文件详解

    不同于我们讲的pom xml以及web xml xff0c 这两个文件的名称是固定的 xff0c 不可更改的 xff0c 这里的设计采用的是约定优于配置的原则 而Spring的配置文件的名称是可以更改的 xff0c 实际上我们在 Sprin
  • Spring项目实践(四)--- Spring MVC配置文件详解

    前三讲我们依次讲了pom xml web xml和spring配置文件 xff0c 这次我们来讲一下springmvc的配置 首先明确一下springmvc是spring的一个模块 springmvc的配置文件 xff0c 也不是固定命名的
  • ShadowSSDT Hook

    ShadowSSDT表的获取 这里的ShadowSSDT表的获取是通过函数KeAddSystemServiceTable来获取的 使用这个函数的原因 xff1a 1 这个函数是已经导出的 xff0c 可以在代码中直接使用 2 这个函数里面使
  • BCTF总结

    缘由 上周 xff0c 我们小组Sigma参加了 百度杯 BCTF比赛 xff0c 经历了难忘的双休 xff0c 这次的BCTF跟以前参加的国内类似的安全比赛有些不同 xff0c 时间只有48小时 xff0c 题目不多 xff0c 但难度大
  • BCTF_海报探秘(300)

    这个题目来自上周的BCTF比赛 xff0c 题目是海报探秘 xff08 300 xff09 xff0c 一张png图片中隐藏了KEY xff0c 解出KEY xff0c 具体报告 xff0c 请下载 xff1a http download
  • 博客转移

    最近好久不来CSDN了 xff0c 自己搭建了一个博客 欢迎各位去新博客留言 http www l0g1n cn 以前学习汇编的博客 http www asmedu net blog user usermain jsp neighborId
  • 《Windows程序设计》之BLOKOUT1

    LRESULT CALLBACK WndProc HWND hwnd UINT message WPARAM wParam LPARAM lParam static BOOL fBlocking fValidBox static POINT
  • MySQL(mariadb)

    MySQL历史 1979年 xff1a TcX公司 Monty Widenius xff0c Unireg1996年 xff1a 发布MySQL1 0 xff0c Solaris版本 xff0c Linux版本1999年 xff1a MyS
  • 天猫抢红包小工具源码

    时间很仓促 xff0c 写的很乱 xff0c 也就能用明天一天了 主要还是学习这个过程 include lt Windows h gt include lt stdio h gt include lt iostream gt include
  • vs2010开发qt程序debug正常,release出错

    在debug模式下 xff0c 配置的动态链接库是qtmaind lib QtGuid4 lib QtCored4 lib 这些链接库 xff0c 在release模式下是不适用的 xff0c 进入到qt的目录下 xff0c 发现了有一些不
  • cout与wcout

    一直以来只知道有cout用来输出 xff0c 今天用cout输出wchar时出现问题了 xff0c 输出结果是一段地址 xff0c 才发现了wcout的存在 使用wcout输出中文时 xff0c 又出现问题 xff0c 中文输出不了 xff
  • 主引导记录(MBR)信息分析与获取

    前段时间在安装黑苹果时 xff0c 发现一个问题 xff0c 电脑在启动时 xff0c 会找激活分区 xff0c 如果没有找到 xff0c 那就启动不起来 那能否写个小程序读取一下MBR信息 xff0c 把激活分区换成其它 xff0c 搞点
  • Duilib登录窗口

    先上效果图 xff08 自己感觉还不错 xff09 xff1a 功能不完善 xff0c 一是为了熟悉xml的写法 xff0c 手写 xff0c 不建议使用编辑器 xff0c 二了为了理顺程序的流程 xff0c 加入了部分注释 xml文件 l
  • Gitee Pages Pro + Hexo自定义域名

    前景摘要 xff1a 最近 xff0c 本菜鸡打算把hexo的博客站点搬到gitee xff0c 毕竟gitee pages pro有一个月的免费自定义域名的机会 xff01 xff01 其实最主要的原因还是coding pages的延迟有
  • 人脸识别流程

    一 人脸识别技术流程 xff1a 1 人脸图像采集及检测 在人脸检测算法中 xff0c 有模板匹配模型 Adaboost模型等 xff0c 其中Adaboost模型在速度和精度的综合性能上表现最好 该算法特点就是训练慢 xff0c 检测快
  • Ubuntu 18.04 系统自带浏览器闪出问题解决

    首先解释一下闪的是什么 xff1f 他是gnome 网络管理器自带的网络链接检查 xff0c 我们会经常遇到它闪以下然后就退出的问题 xff0c 这可能与我们修改主题有关 xff0c 有时还偶尔会看到这个系统自带浏览器没有闪退 xff0c
  • HTML5中 audio标签的样式修改

    由于html5的流行 xff0c 现在移动端大多数的需求都可以使用audio来播放音频 xff0c 但您可能只是需要很简单的播放 停止效果 xff0c 但不同的浏览器上的audio样式却不尽人意 xff0c 那么要怎么改变这个样式呢 xff
  • VC获取当前电脑所有网络连接名字

    最近因为项目有需要获取本机的所有存在的网络连接名称 在网上也找了资料 有好几种方法 不过就只有一种是能够达到我想要的要求 写下来给大家参考下 第一种方法 遍历注册表来获取 void fastcall MyGetLanAdapterName
  • 【Android Jetpack系列】一、ViewBinding的使用

    关于本系列的说明 作为学习Jetpack的系列文章 可能会更新得很慢 本系列文或者应该称之为学习笔记 观看本文的同学 应该已经有具备开发简单Android App的能力了 若是零基础 那么阅读本文可能有些难懂 我只能尽量简单解释 本文所用开
  • Maven中pom配置(springmvc)

    Maven 生成目录结构 在需要创建目录的位置 xff0c 命令行创建 web 目录结构 mvn archetype generate DgroupId 61 xxx1 DartifactId 61 xxx2 DarchetypeArtif

随机推荐